# shellcheck    shell=dash disable=SC2154,SC2034
___x_cmd_bwh_privateip(){
    [ "$#" -gt 0 ] || {
        ___x_cmd_bwh_api getLiveServiceInfo | ___x_cmd yml j2y | ___x_cmd bat -l yaml
        return 0
    }

    local op="$1"; shift
    case "$op" in
        available|assign|delete)
                    "___x_cmd_bwh_privateip_${op}" "$@" ;;

        -h|--help)  ___x_cmd_bwh_help privateip         ;;
        *)          N=bwh M="Unknown command for ___x_cmd_bwh_privateip ==> $1" log:ret:64
    esac
}

# Section: available
___x_cmd_bwh_privateip_available(){
    local X_help_cmd='___x_cmd help -m bwh privateip available';   help:arg:parse
    local error=; local message=
    local data; data="$( ___x_cmd_bwh_privateip_available___raw )"
    ___x_cmd_pipevar data     ___x_cmd jo env . .error .message

    bwh:arg:judge:display:content:bat
}

___x_cmd_bwh_privateip_available___raw(){
    ___x_cmd_bwh_api privateIp/getAvailableIps
}
# EndSection

# Section: assign
___x_cmd_bwh_privateip_assign(){
    local X_help_cmd='___x_cmd help -m bwh privateip assign';   help:arg:parse
    [ $# -eq 1 ] || N=bwh M="Require argument as ip address" log:ret:64
    local error=; local message=
    local data; data="$( ___x_cmd_bwh_privateip_assign___raw "$1" )"
    ___x_cmd_pipevar data     ___x_cmd jo env . .error .message

    bwh:arg:judge:display:content:bat
}

___x_cmd_bwh_privateip_assign___raw(){
    ___x_cmd_bwh_api privateIp/assign ${1:+ip="$1"}
}
# EndSection

# Section: delete
___x_cmd_bwh_privateip_delete(){
    local X_help_cmd='___x_cmd help -m bwh privateip assign';   help:arg:parse
    [ $# -eq 1 ] || N=bwh M="Require argument as ip address" log:ret:64

    local error=; local message=
    local data; data="$( ___x_cmd_bwh_privateip_delete___raw "$1" )"
    ___x_cmd_pipevar data     ___x_cmd jo env . .error .message

    bwh:arg:judge:display:content:bat
}

___x_cmd_bwh_privateip_delete___raw(){
    ___x_cmd_bwh_api privateIp/delete ${1:+ip="$1"}
}
# EndSection
