__app="admin-tweak"

__commands="
    block-user
    recreate-user
    archive-home
    restore-home
    hplip-update
    lock-wifi-watch
    restrict-wifi
    restrict-devices
    restore-fonts
    restore-time-server
    switch-audio
    browser-incognito
    install-nvidia
    copy-configs-to-skel
    copy-home-folder-to-skel
    enable-mos-authorization
    enable-mos-enter-button
    change-login-method
    change-guest-user
    change-guest-tmpfs-mount
    change-guest-skel-folder
    enable-grub
    set-grub-timeout
    set-grub-password
    set-shutdown-pause
    remove-education
    set-mos-appstore-wheel-only
    libreoffice-visual
    help
    "

function _get_first_command()
{
    local cmd i

    for (( i=1; i < ${#COMP_WORDS[@]}; i++ )); do
        if [[ "$1"  == *${COMP_WORDS[i]}* ]]; then
            cmd=${COMP_WORDS[i]}
            break
        fi
    done

    echo "$cmd"
}

function _commands() {

    latest="${COMP_WORDS[$COMP_CWORD]}"
    prev="${COMP_WORDS[$COMP_CWORD - 1]}"

    command="$( _get_first_command "$__commands" )"

    words=""

    case "${prev}" in
    ${__app})
      words=${__commands}
      ;;
    *)
      ;;
    esac

    if [ -z "${words}" ]; then
    case "${command}" in
    hplip-update|restrict-wifi|lock-wifi-watch|restrict-devices|enable-mos-authorization|enable-grub|set-mos-appstore-wheel-only)
      words="true false"
      ;;
    change-guest-user|change-guest-tmpfs-mount|enable-mos-enter-button)
      words="true false default"
      ;;
    browser-incognito)
      words="true false default delete"
      ;;
    change-guest-skel-folder)
      words="system default"
      ;;
    switch-audio)
      words="pulseaudio pipewire off"
      ;;
    change-login-method)
      words="none list select delete"
      ;;
    libreoffice-visual)
      words="kf5 gtk3"
      ;;
    block-user)
      if [[ "$prev" == block-user ]]; then
        words=""
      else
        words="true false"
      fi
      ;;
    recreate-user)
      if [[ "$prev" == block-user ]]; then
        words=""
      else
        words="--save-uid"
      fi
      ;;
    *)
      words=""
    esac
    fi

    COMPREPLY=($(compgen -W "$words" -- $latest))
    return 0
}

complete -F _commands ${__app}
