
___x_cmd_mac_ss_report(){
    [ $# -gt 0 ] ||     set -- --auto

    local op="$1"; shift
    case "$op" in
        --app)          ___x_cmd_mac_ss_report___app      "$@" ;;
        --csv)          ___x_cmd_mac_ss_report___csv      "$@" ;;
        --tsv)          ___x_cmd_mac_ss_report___tsv      "$@" ;;
        --raw)          ___x_cmd_mac_ss_report___raw      "$@" ;;
        --auto)         ___x_cmd_mac_ss_report___auto          ;;
        -h|--help)      ___x_cmd help -m mac ss report    "$@" ;;
    esac

}
___x_cmd_mac_ss_report___csv(){
    ___x_cmd_mac_ss_report___tsv | ___x_cmd tsv tocsv
}

___x_cmd_mac_ss_report___tsv(){
    ___x_cmd_mac_ss_report___raw | ___x_cmd_mac_ss_report___proc
}

___x_cmd_mac_ss_report___raw(){
    local cmd='___x_cmd sudo systemsetup'

    local attr
    while read -r attr; do
        [ -n "$attr" ] || continue
        cmd="$cmd -get${attr}"
    done <<A
$___X_CMD_MAC_SS_ATTR
A

    eval "$cmd"
}

___x_cmd_mac_ss_report___proc(){
    ATTR="$___X_CMD_MAC_SS_ATTR" ___x_cmd_cmds awk '
BEGIN{
    arrl = split( ENVIRON["ATTR"], arr, "\n" )
    printf("%s\t%s\t%s\n", "attr", "value", "id")
}

{
    if (NR == 1) {
        printf("%s\t%s\t%s\n", "date", $0, "date")
    } else {
        key = $0;
        gsub(":.+$", "", key)
        val = substr($0, length(key)+2)
        gsub("(^[ \t]+)|([ \t]+$)", "", val)
        printf("%s\t%s\t%s\n", key, val, arr[NR])
    }
}
'
}

___x_cmd_mac_ss_report___auto(){
    if ___x_cmd_is_stdout2tty; then       ___x_cmd_mac_ss_report___app
    else                                  ___x_cmd_mac_ss_report___csv
    fi
}

___x_cmd_mac_ss_report___app(){
    ___x_cmd_mac_ss_report___csv | ___x_cmd csv app
}


