# shellcheck shell=dash disable=SC2034
# plain table
___x_cmd_csv_convert(){
    local X_help_cmd='x help -m csv convert'; help:arg-null:parse

    local op="$1"; shift
    case "$op" in
        --col)                  ___x_cmd_csv_convert___col  "$@" ;;
        --left-align-header)    ___x_cmd_csv_convert___left "$@" ;;
        *)                      N=csv M="Unknown subcmd" log:ret:64  ;;
    esac
}

___x_cmd_csv_convert___col(){
    # [ $# -ge 1 ] || N=csv M="Expect one arguments after --col" log:ret:64

    local ncol=auto

    while [ $# -gt 0 ]; do
        case "$1" in
            -n)     ncol="$2"; shift 2 ;;
            -h|--help)
                    ___x_cmd help -m csv convert --col; return ;;
            *)      break
        esac
    done

    if [ "$#" -eq 0 ]; then
        ___x_cmd_cmds_cat
    else
        "$@"
    fi | ___x_cmd_cmds_awk -v col="${ncol}" \
        -f "${___X_CMD_ROOT_MOD}/awk/lib/core.awk"      \
        -f "${___X_CMD_ROOT_MOD}/awk/lib/gli.awk"       \
        -f "${___X_CMD_ROOT_MOD}/awk/lib/csv.awk"       \
        -f "${___X_CMD_ROOT_MOD}/csv/lib/awk/convert/share.awk" \
        -f "${___X_CMD_ROOT_MOD}/csv/lib/awk/convert/col.awk"
}

___x_cmd_csv_convert___left(){
    if [ "$#" -eq 0 ]; then
        ___x_cmd_cmds_cat
    else
        "$@"
    fi | ___x_cmd awk0 --locale C \
        -f "${___X_CMD_ROOT_MOD}/awk/lib/u/wcwidth.awk" \
        -f "${___X_CMD_ROOT_MOD}/awk/lib/gli.awk"       \
        -f "${___X_CMD_ROOT_MOD}/awk/lib/csv.awk"       \
        -f "${___X_CMD_ROOT_MOD}/csv/lib/awk/convert/share.awk" \
        -f "${___X_CMD_ROOT_MOD}/csv/lib/awk/convert/left_align.awk"
}

