# shellcheck shell=dash

___x_cmd log init lsof
xrc:mod:lib     lsof    run fz

___x_cmd_lsof___main(){
    [ "$#" -gt 0 ] ||   set -- --run

    local op="$1";      shift
    case "$op" in
        -h|--help)      ___x_cmd help -m lsof       "$@" ;;

        fz)             ___x_cmd_lsof_fz            "$@" ;;

        --pidofport|--pidoflport)
                        ___x_cmd_lsof___"${op#--}"  "$@" ;;

        --|--run)       ___x_cmd_lsof_run           "$@" ;;
        *)              ___x_cmd_lsof_run    "$op"  "$@" ;;
    esac
}


___x_cmd_lsof___pidofport(){
    local port="$1"
    ___x_cmd_lsof___runmain -i:"$port" | ___x_cmd line uni
}

# calcuate the pid of the specified port
___x_cmd_lsof___pidoflport(){
    local port="$1"
    ___x_cmd_lsof___runmain -i:"$port" | ___x_cmd_cmds awk '/%0~LISTENING/{ print $2; }' | ___x_cmd line uni
}

___x_cmd_lsof___runmain(){
    # if ___x_cmd_hascmd lsof && ! ___x_cmd lsof --help 2>&1 | grep busybox 2>/dev/null 1>/dev/null; then
    #     ___x_cmd_cmds       lsof "$@"
    #     return
    # fi

    if ___x_cmd_hascmd lsof; then
        ___x_cmd_cmds       lsof "$@"
        return
    else
        local x_=; ___x_cmd os name_
        case "$x_" in
            win)    N=lsof M="This system is not supported."        log:ret:1
                    ;;
            *)      ___x_cmd pixi exec lsof "$@"
                    ;;
        esac
    fi
}
