# shellcheck shell=dash
___x_cmd_pwsh_disk(){
    [ $# -gt 0 ] || set -- ls

    local op="$1";  shift
    case "$op" in
        ls|dismount|mount)
            "___x_cmd_pwsh_disk_${op}" "$@" ;;
        -h|--help)
            ___x_cmd help -m pwsh disk
            ;;
        *)
            N=pwsh M="Unsupported subcmd => $op" log:ret:64  ;;
    esac

}

___x_cmd_pwsh_disk_mount(){
    local cmd="Mount-DiskImage"
    local HAS_IMAGEPATH=
    [ "$#" -ne 1 ] || set -- -imagepath "$1"

    while [ $# -gt 0 ]; do
        case "$1" in
            -i|--imagepath)         cmd="${cmd} -ImagePath $2"
                                    HAS_IMAGEPATH="1"
                                    shift 2 ;;
            -a|--access)            cmd="${cmd} -Access ";                  shift 1 ;;
            -j|--asjob)             cmd="${cmd} -AsJob ";                   shift 1 ;;
            --nodriveletter)        cmd="${cmd} -NoDriveLetter ";           shift 1 ;;
            -p|--passthru)          cmd="${cmd} -PassThru ";                shift 1 ;;
            -s|--storagetype)       cmd="${cmd} -StorageType $2";           shift 2 ;;
            -t|--throttlelimit)     cmd="${cmd} -ThrottleLimit $2";         shift 2 ;;
            *)                      N=pwsh M="Unsupported option => $1" log:ret:64  ;;
        esac
    done

    [ -n "$HAS_IMAGEPATH" ] || {
        pwsh:error "Please provide -ImagePath <path>"
        return 1
    }

    ___x_cmd_pwsh_admin "$cmd"
}

___x_cmd_pwsh_disk_dismount(){
    local cmd="DisMount-DiskImage"
    local HAS_IMAGEPATH=
    [ "$#" -ne 1 ] || set -- -imagepath "$1"

    while [ $# -gt 0 ]; do
        case "$1" in
            -i|--imagepath)         cmd="${cmd} -ImagePath $2"
                                    HAS_IMAGEPATH="1"
                                    shift 2 ;;
            -d|--devicepath)        cmd="${cmd} -DevicePath $2";            shift 2 ;;
            -j|--asjob)             cmd="${cmd} -AsJob ";                   shift 1 ;;
            -s|--storagetype)       cmd="${cmd} -StorageType $2";           shift 2 ;;
            -t|--throttlelimit)     cmd="${cmd} -ThrottleLimit $2";         shift 2 ;;
            *)                      N=pwsh M="Unsupported option => $1" log:ret:64  ;;
        esac
    done

    [ -n "$HAS_IMAGEPATH" ] || {
        pwsh:error "Please provide a Image Path or a Divice Path"
        return 1
    }

    ___x_cmd_pwsh_admin "$cmd"
}

___x_cmd_pwsh_disk_ls(){
    pwsh:arg:null

    local x_output_mode=; local x_output=
    while [ $# -gt 0 ]; do
        pwsh:output:mode:all
    done

    [ "$x_output_mode" != app ] || {
        ___x_cmd_pwsh___exec "$x_output_mode" "Get-Disk" "$x_output" \
            | ___x_cmd csv tab - 1,33,19,4,39,2 \
            | ___x_cmd csv --app
        return
    }

    ___x_cmd_pwsh___exec "$x_output_mode" "Get-Disk" "$x_output"
}
