
# MACOS -- opendirectory --
# Require sudo
# /private/var/db/dslocal/nodes/Default/users/

___x_cmd_user_passwd(){
    [ $# -gt 0 ]    ||  set -- --app

    local op="$1";      shift
    case "$op" in
        --app|--csv|--tsv|--raw)
                        "___x_cmd_user_passwd___${op#--}" "$@" ;;
        --help|-h)      ___x_cmd help -m user passwd ;;
    esac
}

___x_cmd_user_passwd___tsv(){
    ___x_cmd_user_passwd___csv | ___x_cmd tsv fromcsv
}

___x_cmd_user_passwd___csv(){
    ___x_cmd_cmds_awk -F: '
    function csv_quote( e ){
        gsub("\"", "\"\"", e)
        return "\"" e "\""
    }

    function csv_quote_ifmust( e ){
        return (e ~ "(\")|[\r\n,]") ? csv_quote( e ) : e
    }
    $0 ~ /^[\s]*#/ {
        next
    }

    BEGIN{
        printf("%s,%s,%s,%s,%s,%s,%s\n", "user", "password", "uid", "gid", "comment", "homedir", "shell")
    }

    {
        user    =   csv_quote_ifmust($1)
        passwd  =   csv_quote_ifmust($2)
        uid     =   csv_quote_ifmust($3)
        gid     =   csv_quote_ifmust($4)
        comment =   csv_quote_ifmust($5)
        homedir =   csv_quote_ifmust($6)
        shell   =   csv_quote_ifmust($7)

        printf("%s,%s,%s,%s,%s,%s,%s\n", user, passwd, uid, gid, comment, homedir, shell)
    }' /etc/passwd

}

___x_cmd_user_passwd___raw(){
    ___x_cmd_cmds cat /etc/passwd
}

___x_cmd_user_passwd___app(){
    if ___x_cmd_runmode_allow_manual; then
        ___x_cmd_user_passwd___csv | ___x_cmd csv --app
    else
        ___x_cmd_user_passwd___csv
    fi
}
