_pihole() { local cur prev opts opts_admin opts_checkout opts_debug opts_interface opts_logging opts_privacy opts_query opts_update opts_version COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" prev2="${COMP_WORDS[COMP_CWORD-2]}" case "${prev}" in "pihole") opts="admin blacklist checkout debug disable enable flush help logging query reconfigure regex restartdns status tail uninstall updateGravity updatePihole version wildcard whitelist arpflush" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) ;; "whitelist"|"blacklist"|"wildcard"|"regex") opts_lists="\--delmode \--noreload \--quiet \--list \--nuke" COMPREPLY=( $(compgen -W "${opts_lists}" -- ${cur}) ) ;; "admin") opts_admin="celsius fahrenheit interface kelvin password privacylevel" COMPREPLY=( $(compgen -W "${opts_admin}" -- ${cur}) ) ;; "checkout") opts_checkout="core ftl web master dev" COMPREPLY=( $(compgen -W "${opts_checkout}" -- ${cur}) ) ;; "debug") opts_debug="-a" COMPREPLY=( $(compgen -W "${opts_debug}" -- ${cur}) ) ;; "logging") opts_logging="on off 'off noflush'" COMPREPLY=( $(compgen -W "${opts_logging}" -- ${cur}) ) ;; "query") opts_query="-adlist -all -exact" COMPREPLY=( $(compgen -W "${opts_query}" -- ${cur}) ) ;; "updatePihole"|"-up") opts_update="--check-only" COMPREPLY=( $(compgen -W "${opts_update}" -- ${cur}) ) ;; "version") opts_version="\--admin \--current \--ftl \--hash \--latest \--pihole" COMPREPLY=( $(compgen -W "${opts_version}" -- ${cur}) ) ;; "interface") if ( [[ "$prev2" == "admin" ]] || [[ "$prev2" == "-a" ]] ); then opts_interface="$(cat /proc/net/dev | cut -d: -s -f1)" COMPREPLY=( $(compgen -W "${opts_interface}" -- ${cur}) ) else return 1 fi ;; "privacylevel") if ( [[ "$prev2" == "admin" ]] || [[ "$prev2" == "-a" ]] ); then opts_privacy="0 1 2 3" COMPREPLY=( $(compgen -W "${opts_privacy}" -- ${cur}) ) else return 1 fi ;; "core"|"admin"|"ftl") if [[ "$prev2" == "checkout" ]]; then opts_checkout="master dev" COMPREPLY=( $(compgen -W "${opts_checkout}" -- ${cur}) ) else return 1 fi ;; *) return 1 ;; esac return 0 } complete -F _pihole pihole