blob: c118f52c7d95ba97057a00400da5d015baaad27b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# 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
|