_resin() { COMPREPLY=() local current="${COMP_WORDS[COMP_CWORD]}" local previous="${COMP_WORDS[COMP_CWORD-1]}" local options="version help login logout signup drive whoami app apps init devices device note preferences keys key envs env logs os examples example" case "${previous}" in app) local subcommands="create rm restart" COMPREPLY=( $(compgen -W "${subcommands}" -- ${current}) ) return 0 ;; drive) local subcommands="list" COMPREPLY=( $(compgen -W "${subcommands}" -- ${current}) ) return 0 ;; devices) local subcommands="supported" COMPREPLY=( $(compgen -W "${subcommands}" -- ${current}) ) return 0 ;; device) local subcommands="rename rm identify init" COMPREPLY=( $(compgen -W "${subcommands}" -- ${current}) ) return 0 ;; key) local subcommands="add rm" COMPREPLY=( $(compgen -W "${subcommands}" -- ${current}) ) return 0 ;; env) local subcommands="add rename rm" COMPREPLY=( $(compgen -W "${subcommands}" -- ${current}) ) return 0 ;; os) local subcommands="download install" COMPREPLY=( $(compgen -W "${subcommands}" -- ${current}) ) return 0 ;; example) local subcommands="clone" COMPREPLY=( $(compgen -W "${subcommands}" -- ${current}) ) return 0 ;; *) ;; esac COMPREPLY=( $(compgen -W "${options}" -- ${current}) ) return 0 } complete -F _resin resin