# bash completion for firefly (firefly-cli) # Install: source this file, or drop it in /etc/bash_completion.d/ or # /usr/share/bash-completion/completions/firefly # # Generated by scripts/gen_completion.py -- do not edit by hand. # Regenerate when commands change (see CLAUDE.md): # python scripts/gen_completion.py > completions/firefly.bash _firefly() { local cur prev words cword _init_completion 2>/dev/null || { cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" words=("${COMP_WORDS[@]}") cword=$COMP_CWORD } local global_opts="--human --url --token -h --help" local groups="auth account category tag tx" # Find the group and leaf among the words (skip the program name at 0). local group="" leaf="" i for ((i=1; i < cword; i++)); do local w="${words[i]}" case "$w" in -*) ;; # an option, skip --url|--token) ((i++));; # option that takes a value *) if [[ -z $group ]]; then group="$w" elif [[ -z $leaf ]]; then leaf="$w" fi ;; esac done # Leaf-specific options. local leaf_opts="" case "$group $leaf" in "auth set") leaf_opts="--token --url";; "account create") leaf_opts="--currency --opening-balance --type";; "account list") leaf_opts="--type";; "tx add") leaf_opts="--category --date --desc --from --tags --to --type";; "tx list") leaf_opts="--account --limit --since --until";; esac # Leaves per group. local leaves="" case "$group" in auth) leaves="set test";; account) leaves="balance create get list";; category) leaves="list";; tag) leaves="list";; tx) leaves="add get list search";; esac if [[ -z $group ]]; then COMPREPLY=($(compgen -W "$groups $global_opts" -- "$cur")) elif [[ -z $leaf ]]; then COMPREPLY=($(compgen -W "$leaves" -- "$cur")) else COMPREPLY=($(compgen -W "$leaf_opts --help" -- "$cur")) fi } complete -F _firefly firefly