
___x_cmd_mac_appid(){
    [ $# -gt 0 ]    ||  set -- ls

    local op="$1";      shift
    case "$op" in
        -h|--help)              ___x_cmd help -m mac appid  "$@" ;;
        ls|get|get_)            ___x_cmd_mac_appid_"$op"    "$@" ;;
        *)                      N=mac M="Unknown subcmd -> $op" log:ret:64 ;;
    esac
}

___x_cmd_mac_appid_get(){
    local name="$1"
    ___x_cmd ccmd 1d -- osascript -e 'id of app "'"$name"'"' 2>/dev/null
}

___x_cmd_mac_appid_get_(){
    x_="$(___x_cmd_mac_appid_get "$@")"
}

___x_cmd_mac_appid_ls(){
    if ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_manual ; then
        ___x_cmd_mac_appid_ls___app
    else
        ___x_cmd_mac_appid_ls___tsv
    fi
}

___x_cmd_mac_appid_ls___app(){
    local ___X_CMD_CSV_APP_SHBIN_CODE=

    local ___X_CMD_CSV_APP_DATA_name=""
    local ___X_CMD_CSV_APP_DATA_id=""
    ___X_CMD_CSV_APP_SHBIN_CODE="xrc mac; " \
        ___x_cmd csv app --clear --return var \
            --header name,id                  \
            -- ___x_cmd_mac_appid_ls___csv || return 1
}

___x_cmd_mac_appid_ls___csv(){
    ___x_cmd_mac_appid_ls___tsv | ___x_cmd tsv tocsv
}

___x_cmd_mac_appid_ls___tsv(){
    ___x_cmd ccmd 10s -- ___x_cmd_mac_appid_ls___tsv_raw
}

___x_cmd_mac_appid_ls___tsv_raw(){
    (
        local IFS=" "
        ___x_cmd_cd0 /Applications
        local x_
        local name
        for name in *; do
            ___x_cmd_mac_appid_get_ "$name"
            printf "%s\t%s\n" "$name" "$x_"
        done
    )
}
