# shellcheck    shell=dash disable=SC2154,SC2034
___x_cmd_bwh_snapshot(){
    [ $# -gt 0 ]    ||  set - ls

    local op="$1";      shift
    case "$op" in
        ls|list)            ___x_cmd_bwh_snapshot_list              "$@" ;;

        create|delete|restore|export|import|\
        sticky)
                            "___x_cmd_bwh_snapshot_${op}"           "$@" ;;
        sticky-disable)     "___x_cmd_bwh_snapshot_sticky_disable"  "$@" ;;

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

# Section: snapshot list
___x_cmd_bwh_snapshot_list(){
    local X_help_cmd='___x_cmd help -m bwh snapshot list';   help:arg:parse

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

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

___x_cmd_bwh_snapshot_list___raw(){
    ___x_cmd_bwh_api snapshot/list
}
# EndSection

# Section: snapshot create
___x_cmd_bwh_snapshot_create(){
    local X_help_cmd='___x_cmd help -m bwh sshkey create';   help:arg:parse

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

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

___x_cmd_bwh_snapshot_create___raw(){
    ___x_cmd_bwh_api snapshot/create ${1:+description="$1"}
}
# EndSection

# Section: snapshot delete
___x_cmd_bwh_snapshot_delete(){
    [ $# -eq 1 ]    ||  N=bwh M="Require argument as snapshot fileName" log:ret:64
    local error=; local message=
    local data; data="$( ___x_cmd_bwh_snapshot_delete___raw "$1" )"
    ___x_cmd_pipevar data     ___x_cmd jo env . .error .message

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

___x_cmd_bwh_snapshot_delete___raw(){
    ___x_cmd_bwh_api    snapshot/delete         snapshot="$1"
}
# EndSection

# Section: snapshot restore
___x_cmd_bwh_snapshot_restore(){
    [ $# -eq 1 ]    ||  N=bwh M="Require argument as snapshot fileName" log:ret:64
    local error=; local message=
    local data; data="$( ___x_cmd_bwh_snapshot_restore___raw "$1" )"
    ___x_cmd_pipevar data     ___x_cmd jo env . .error .message

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

___x_cmd_bwh_snapshot_restore___raw(){
    ___x_cmd_bwh_api    snapshot/restore        snapshot="$1"
}
# EndSection

# Section: snapshot sticky
___x_cmd_bwh_snapshot_sticky(){
    [ $# -eq 1 ]    ||  N=bwh M="Require argument as snapshot fileName" log:ret:64
    local error=; local message=
    local data; data="$( ___x_cmd_bwh_snapshot_sticky___raw "$1" )"
    ___x_cmd_pipevar data     ___x_cmd jo env . .error .message

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

___x_cmd_bwh_snapshot_sticky___raw(){
    ___x_cmd_bwh_api    snapshot/toggleSticky   snapshot="$1" sticky=1
}
# EndSection

# Section: snapshot disable
___x_cmd_bwh_snapshot_sticky_disable(){
    [ $# -eq 1 ]    ||  N=bwh M="Require argument as snapshot fileName" log:ret:64

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

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

___x_cmd_bwh_snapshot_sticky_disable___raw(){
    ___x_cmd_bwh_api    snapshot/toggleSticky   snapshot="$1" sticky=0
}
# EndSection

# Section: snapshot export
___x_cmd_bwh_snapshot_export(){
    [ $# -eq 1 ]    ||   N=bwh M="Require argument as snapshot fileName" log:ret:64
    local error=; local message=
    local data; data="$( ___x_cmd_bwh_snapshot_export___raw "$1" )"
    ___x_cmd_pipevar data     ___x_cmd jo env . .error .message

    bwh:arg:judge:display:content:bat
    # TODO: show import code ___x_cmd bwh snapshot import "$veid" "$token"
}

___x_cmd_bwh_snapshot_export___raw(){
    ___x_cmd_bwh_api    snapshot/export         snapshot="$1"
}
# EndSection

# Section: snapshot import
___x_cmd_bwh_snapshot_import(){
    [ "$#" -eq 2 ]  ||  N=bwh M="Require two argument <source-veid> <source-token>" log:ret:64

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

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

___x_cmd_bwh_snapshot_import___raw(){
    ___x_cmd_bwh_api    snapshot/import         sourceVeid="$1" sourceToken="$2"
}
# EndSection
