3 # fdroid completion support.
5 # 'fdroid' is aliased automatically, but aliases to it are not. For instance,
6 # to alias 'fd' to 'fdroid' and have competion available:
9 # complete -F _fdroid fd
11 # One can use completion on aliased subcommands as follows:
13 # alias fbuild='fdroid build'
14 # complete -F _fdroid_build fbuild
16 # There are also completion function for '-p com.some.app' aliases:
18 # alias fbld='fdroid build -v -l -p'
19 # complete -F _fdroid_build_project fbld
21 # alias fcheckup='fdroid checkupdates -v -p'
22 # complete -F _fdroid_checkupdates_project fcheckup
24 # This way, one can simply do 'fbld com.some.app' or 'fcheckup com.some.app'
27 if [[ "${PWD##*/}" == metadata ]]; then
30 [ -d metadata ] && subdir="metadata/" || return 1
36 cur="${COMP_WORDS[COMP_CWORD]}"
37 prev="${COMP_WORDS[COMP_CWORD-1]}"
39 (( $# >= 1 )) && __complete_${1}
43 files=( ${subdir}*.txt )
44 files=( ${files[@]#${subdir}} )
45 files=${files[@]%.txt}
46 COMPREPLY=( $( compgen -W "$files" -- $cur ) )
54 $aliased && p=${COMP_WORDS[1]} || {
55 for (( i=1; i <= s; i++ )); do
56 $p_found && { p=${COMP_WORDS[$i]}; break;}
57 [[ ${COMP_WORDS[$i]} == -p ]] || [[ ${COMP_WORDS[$i]} == --package ]] &&\
63 COMPREPLY=( $( compgen -W "$( while read line; do
64 if [[ "$line" == "Build Version:"* ]]
68 elif [[ "$line" == "Build:"* ]]
73 done < "${subdir}${p}.txt" )" -- $cur ) )
76 __complete_options() {
79 COMPREPLY=( $( compgen -W "${lopts}" -- $cur ) )
82 COMPREPLY=( $( compgen -W "${opts} ${lopts}" -- $cur ) )
88 opts="-h -v -p -c -l -s -t -f"
89 lopts="--help --verbose --package --vercode --latest --server --resetserver
90 --on-server --force --install --all"
102 __complete_update() {
103 opts="-h -c -v -q -b -i -I -e -w"
104 lopts="--help --createmeta --verbose --quiet --buildreport --interactive
105 --icons --editor --wiki --pretty --clean"
114 __complete_publish() {
116 lopts="--help --verbose --package"
125 __complete_checkupdates() {
127 lopts="--help --verbose --package --auto --autoonly --commit --gplay"
136 __complete_import() {
138 lopts="--help --url --subdir --repo"
140 -u|--url|-r|--repo) return 0;;
148 __complete_rewritemeta() {
150 lopts="--help --verbose --package"
159 __complete_scanner() {
161 lopts="--help --verbose --package --nosvn"
170 __complete_verify() {
172 lopts="--help --verbose --package"
183 lopts="--help --verbose --download"
187 __complete_server() {
189 lopts="--help --verbose update"
195 lopts="--help --verbose --keystore --distinguished-name --repo-keyalias"
200 local cmd cmds aliased
202 cmds=" build init update publish checkupdates import rewritemeta scanner verify stats server "
204 __fdroid_cwd || return 0
206 for c in $cmds; do eval "_fdroid_${c} () {
207 local cur prev cmds opts lopts
211 [[ $cmds == *\ $cmd\ * ]] && _fdroid_${cmd} || {
212 (($COMP_CWORD == 1)) && COMPREPLY=( $( compgen -W "${cmds}" -- $cmd ) )
216 _fdroid_build_project() {
217 local cur prev cmds opts lopts aliased
220 (( $COMP_CWORD == 1 )) && prev="-p"
225 _fdroid_checkupdates_project() {
226 local cur prev cmds opts lopts aliased
229 (( $COMP_CWORD == 1 )) && prev="-p"
231 __complete_checkupdates
235 __fdroid_cwd || return 0
239 complete -F _fdroid fdroid
240 complete -F _fd-commit fd-commit