#compdef jules _jules() { local line _arguments -C \ "1: :->command" \ "*::arg:->args" case $state in command) local -a commands commands=( 'login:Sign in to Jules with your Google account' 'logout:Sign out of the current session' 'remote:Manage repositories and remote sessions' 'version:Show the installed version of Jules' 'help:Show general help or help for a specific command' 'completion:Generate shell autocompletion scripts' ) _describe -t commands 'jules command' commands ;; args) case $words[1] in remote) _arguments \ "1: :->remote_cmd" \ "*::arg:->remote_args" case $state in remote_cmd) local -a remote_commands remote_commands=( 'list:List connected repositories or active sessions' 'new:Start a new Jules session in a repository' 'pull:Download the results of a session' ) _describe -t remote_commands 'remote command' remote_commands ;; remote_args) _arguments \ '--repo[Specify the repository (e.g. user/repo)]:repo:_files' \ '--session[Session name or ID]:session:' \ '--parallel[Number of parallel sessions]:count:' \ '--theme[Interface theme (light/dark)]:theme:(light dark)' ;; esac ;; *) _arguments \ '(-h --help)'{-h,--help}'[Show help]' \ '--theme[Set the visual theme]:theme:(light dark)' ;; esac ;; esac } _jules "$@"