# shellcheck

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

    local op="$1";  shift
    case "$op" in
        -h|--help)  ___x_cmd help -m termux prop "$@"   ;;
        preview)    ___x_cmd_termux_prop_preview "$@"   ;;  # inner
        ls)         ___x_cmd_termux_prop_ls "$@"        ;;
        get)        ___x_cmd_cmds getprop   "$@"       ;;
        *)          ___x_cmd_termux_prop_ls "$op" "$@"  ;;
    esac
}

___x_cmd_termux_prop_ls(){
    local fmt=auto
    local op="$1"
    case "$op" in
        -h|--help)      ___x_cmd help -m prop ls "$@"; return 0 ;;
        -j|--json)      fmt=json; shift ;;
        -y|--yml)       fmt=yml; shift ;;
        --fz)           fmt=fz; shift ;;
    esac
    ___x_cmd_termux_prop_ls___"$fmt" "$@"
}

___x_cmd_termux_prop_ls___auto(){
    if ___x_cmd_is_interactive && ___x_cmd_is_stdout2tty; then
        ___X_CMD_TERMUX_PROP_COLR=1     \
        ___x_cmd_termux_prop_ls___fz    "$@"
    else
        ___x_cmd_termux_prop_ls___yml   "$@"
    fi
}

___x_cmd_termux_prop_ls___raw(){
    ___x_cmd_cmds getprop
}

___x_cmd_termux_prop_ls___yml(){
    ___x_cmd_termux_prop_ls___raw | {
        if ___x_cmd_is_stdout2tty; then
            ___X_CMD_TERMUX_PROP_COLR=1     \
            ___x_cmd_termux_prop_ls___yml_awk "$@"
        else
            ___x_cmd_termux_prop_ls___yml_awk "$@"
        fi
    }
}

___x_cmd_termux_prop_ls___json(){
    ___x_cmd_termux_prop_ls___yml $@ | ___x_cmd y2j
}

___x_cmd_termux_prop_ls___yml_awk(){
    ___x_cmd_cmds awk -v prefix="$1" -v colr="$___X_CMD_TERMUX_PROP_COLR" '{
        key = $1; gsub(/[\[\]:]/, "", key)
        if ((prefix) && (key !~ prefix)) next
        $1 = ""
        gsub("(^[ ]+)|([ ]+$)", "", $0)
        gsub(/[\[\]]/, "", $0)

        if (colr) {
            if ( $0 ~ /^[0-9]+$/) {
                printf("%-50s :\t %s\n", "\033[36m" key "\033[0m", "\033[33m" $0 "\033[0m" )
            } else if (( $0 ~ /(false)|(disable)|(stop)/) || ( $0 ~ /^((0)|(-1))$/) ) {
                printf("%-50s :\t %s\n", "\033[36m" key "\033[0m", "\033[31m" $0 "\033[0m" )
            } else {
                printf("%-50s :\t %s\n", "\033[36m" key "\033[0m", "\033[32m" $0 "\033[0m" )
            }
        } else {
            printf("%-50s :\t %s\n", key, $0)
        }
    }'
}

___x_cmd_termux_prop_ls___fz(){
    ___x_cmd_termux_prop_ls___yml "$@" | FZF_DEFAULT_OPTS="
--ansi
--reverse
--height='80%'
--bind='ctrl-w:toggle-preview-wrap'
--preview-window='down,6,border-horizontal,wrap'
--bind='ctrl-r:change-preview-window(down,40%,border-horizontal|hidden)'
" ___x_cmd fzf --preview='___x_cmdexe termux prop preview {1} {3}'
}

___x_cmd_termux_prop_preview(){
    printf "\n\033[33m%s\033[0m\n-----------\n%s\n" "$1" "$2"
#     echo "$@"
#     ___x_cmd awk
#     '
#     NF==1{ print }
#     NF==2{ print }
#     ' <<A
# $1
# $3
# A
}
