#! /bin/bash

function _pengwin_setup() { #  By convention, the function name
  local cur=${COMP_WORDS[COMP_CWORD]}
  local prev=${COMP_WORDS[COMP_CWORD - 1]}

  case "$prev" in
  AIUTILS)
    mapfile -t COMPREPLY < <(compgen -W 'COPILOT-CLI COPILOT-VIM' -- "${cur}")
    ;;
  EDITORS)
    mapfile -t COMPREPLY < <(compgen -W 'CODE EMACS NEOVIM MSEDIT' -- "${cur}")
    ;;
  GUI)
    mapfile -t COMPREPLY < <(compgen -W 'CONFIGURE DESKTOP GPU NLI GUILIB HIDPI TERMINAL SYNAPTIC WINTHEME WSLG' -- "${cur}")
    ;;
  CONFIGURE)
    mapfile -t COMPREPLY < <(compgen -W 'DISPLAY STARTMENU VCXSRV X410' -- "${cur}")
    ;;
  DESKTOP)
    mapfile -t COMPREPLY < <(compgen -W 'XFCE' -- "${cur}")
    ;;
  TERMINAL)
    mapfile -t COMPREPLY < <(compgen -W 'WINTERM WSLTTY TILIX GTERM XFTERM TERMINATOR KONSO' -- "${cur}")
    ;;
  PROGRAMMING)
    mapfile -t COMPREPLY < <(compgen -W 'C++ DOTNET GO JAVA JETBRAINS JOOMLA LATEX NIM NODEJS PYTHONPI RUBY RUST' -- "${cur}")
    ;;
  NODEJS)
    mapfile -t COMPREPLY < <(compgen -W 'NVERMAN NVM LATEST LTS' -- "${cur}")
    ;;
  PYTHONPI)
    mapfile -t COMPREPLY < <(compgen -W 'PYENV PYTHONPIP POETRY' -- "${cur}")
    ;;
  SERVICES)
    mapfile -t COMPREPLY < <(compgen -W 'LAMP RCLOCAL SSH SYSTEMD' -- "${cur}")
    ;;
  LAMP)
    mapfile -t COMPREPLY < <(compgen -W 'BUILTIN 10.6 10.7 10.8 10.9' -- "${cur}")
    ;;
  SETTINGS)
    mapfile -t COMPREPLY < <(compgen -W 'EXPLORER COLORTOOL LANGUAGE MOTD SHELLS' -- "${cur}")
    ;;
  GPU)
    mapfile -t COMPREPLY < <(compgen -W 'GPU_ACCEL_ENABLE GPU_ACCEL_DISABLE' -- "${cur}")
    ;;
  SHELLS)
    mapfile -t COMPREPLY < <(compgen -W 'BASH-RL CSH FISH ZSH' -- "${cur}")
    ;;
  TOOLS)
    mapfile -t COMPREPLY < <(compgen -W 'ANSIBLE CLOUDCLI DOCKER FZF HOMEBREW POWERSHELL' -- "${cur}")
    ;;
  CLOUDCLI)
    mapfile -t COMPREPLY < <(compgen -W 'AWS AZURE DO IBM KUBERNETES OPENSTACK TERRAFORM' -- "${cur}")
    ;;
  UNINSTALL)
    mapfile -t COMPREPLY < <(compgen -W 'ANSIBLE AWS AZURE BASH-RL C++ CASSANDRA COLORTOOL COPILOT-CLI COPILOT-VIM DIGITALOCEAN DOCKER DOTNET FCITX FISH GO GPU GUILIB HIDPI HOMEBREW IBM IBUS JAVA JETBRAINS KEYCHAIN KUBERNETES LAMP MSEDIT NIM NODEJS OPENSTACK POETRY POWERSHELL PYENV RCLOCAL RUBY RUST STARTMENU SSH SYNAPTIC SYSTEMD TERRAFORM VCXSRV VSCODE WINTHEME WSLTTY X410 XFCE' -- "${cur}")
    ;;
  *)
    mapfile -t COMPREPLY < <(compgen -W "--debug -d --verbose -v -y --yes --assume-yes --noupdate --norebuildicons -q \
    --quiet --noninteractive -w --whiptail -n --ncurses --dialog --alt --multiple --help \
    upgrade autoinstall install uninstall remove startmenu \
    AIUTILS EDITORS GUI MAINTENANCE PROGRAMMING SERVICES SETTINGS TOOLS UNINSTALL" -- "${cur}")
    ;;
  esac

  return 0
}

complete -F _pengwin_setup pengwin-setup
complete -F _pengwin_setup ./pengwin-setup
