#compdef chatblade # ------------------------------------------------------------------------------ # Description # ----------- # # Completion script for chatblade (https://github.com/npiv/chatblade) # # ------------------------------------------------------------------------------ # Authors # ------- # # * Johannes Bittner (https://github.com/johannes87) # # ------------------------------------------------------------------------------ _chatblade() { local -a args local context state state_descr line typeset -A opt_args args+=( '(- *)'{-h,--help}'[show this help message and exit]' '--openai-api-key[the OpenAI API key can also be set as env variable OPENAI_API_KEY]:key' '--temperature[temperature (openai setting)]:temperature' '(-c --chat-gpt)'{-c,--chat-gpt}'[chat GPT model 3.5/4 shorthand or full qualified model name, can also be set via env variable OPENAI_API_MODEL]:chat GPT model:(3.5 4)' '(-i --interactive)'{-i,--interactive}'[start an interactive chat session. This will implicitly continue the conversation]' '(-s --stream)'{-s,--stream}'[Stream the incoming text to the terminal]' '(-t --tokens)'{-t,--tokens}'[display what *would* be sent, how many tokens, and estimated costs]' '(-p --prompt-file)'{-p,--prompt-file}'[prompt name - will load the prompt with that name at ~/.config/chatblade/name or a path to a file]:prompt file:_files' '(-e --extract)'{-e,--extract}'[extract content from response if possible (either json or code block)]' '(-r --raw)'{-r,--raw}'[print session as pure text, dont pretty print or format]' '(-n --no-format)'{-n,--no-format}'[do not add pretty print formatting to output]' '(-o --only)'{-o,--only}'[Only display the response, omit query]' '--theme[Set the theme for syntax highlighting see https://pygments.org/styles/, can also be set with CHATBLADE_THEME]:theme:_values "theme" default emacs friendly manni monokai' '(-l --last)'{-l,--last}'[alias for -S last, the default session if none is specified]' '(-S --session)'{-S,--session}'[initiate or continue named session]:session:->sessions' '--session-list[list sessions]' '--session-path[show path to session file]' '--session-dump[dump session to stdout]' '--session-delete[delete session]' '--session-rename[rename session]:new session:->sessions' ) _arguments -s $args case $state in (sessions) local -a sessions sessions=("${(@f)$(chatblade --session-list)}") _describe 'session' sessions ;; esac } _chatblade # Local Variables: # mode: Shell-Script # sh-indentation: 2 # indent-tabs-mode: nil # sh-basic-offset: 2 # End: # vim: ft=zsh sw=2 ts=2 et