1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-11-09 17:00:12 +01:00
fdroidserver/completion/bash-completion

337 lines
6.1 KiB
Plaintext
Raw Normal View History

# fdroid(1) completion -*- shell-script -*-
2013-07-14 19:09:31 +02:00
#
2013-12-30 17:15:27 +01:00
# bash-completion - part of the FDroid server tools
2013-07-14 19:09:31 +02:00
#
# Copyright (C) 2013-2017 Hans-Christoph Steiner <hans@eds.org>
# Copyright (C) 2013, 2014 Daniel Martí <mvdan@mvdan.cc>
2013-12-30 17:15:27 +01:00
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
2013-07-14 19:09:31 +02:00
__fdroid_init() {
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
2013-07-14 19:09:31 +02:00
(( $# >= 1 )) && __complete_${1}
2013-07-14 19:09:31 +02:00
}
__get_appid() {
files=( metadata/*.yml )
files=( ${files[@]#metadata/} )
files=${files[@]%.yml}
echo "$files"
}
__package() {
files="$(__get_appid)"
COMPREPLY=( $( compgen -W "$files" -- $cur ) )
}
__apk_package() {
files=( ${1}/*.apk )
[ -f "${files[0]}" ] || return
files=( ${files[@]#*/} )
files=${files[@]%_*}
COMPREPLY=( $( compgen -W "$files" -- $cur ) )
}
__apk_vercode() {
2013-12-31 10:17:49 +01:00
local p=${cur:0:-1}
2013-12-11 18:35:58 +01:00
files=( ${1}/${p}_*.apk )
[ -f "${files[0]}" ] || return
2013-12-11 18:35:58 +01:00
files=( ${files[@]#*_} )
files=${files[@]%.apk}
COMPREPLY=( $( compgen -P "${p}:" -W "$files" -- $cur ) )
}
2013-07-14 19:09:31 +02:00
__vercode() {
if [ $prev = ":" ]; then
appid="${COMP_WORDS[COMP_CWORD-2]}"
elif [ $cur = ":" ]; then
appid=$prev
cur=""
fi
versionCodes=`sed -En 's,^ +versionCode: +([0-9]+) *$,\1,p' metadata/${appid}.yml`
COMPREPLY=( $( compgen -W "$versionCodes" -- $cur ) )
2013-07-14 19:09:31 +02:00
}
__complete_options() {
case "${cur}" in
--*)
COMPREPLY=( $( compgen -W "--help --version ${lopts}" -- $cur ) )
return 0;;
*)
COMPREPLY=( $( compgen -W "-h ${opts} --help --version ${lopts}" -- $cur ) )
return 0;;
esac
2013-07-14 19:09:31 +02:00
}
__complete_build() {
opts="-v -q -l -s -t -f -a"
lopts="--verbose --quiet --latest --stop --test --server --reset-server --skip-scan --scan-binary --no-tarball --force --all --no-refresh"
case "${prev}" in
:)
__vercode
return 0;;
esac
case "${cur}" in
2013-12-19 23:06:57 +01:00
-*)
__complete_options
return 0;;
:)
__vercode
return 0;;
*)
__package
return 0;;
esac
2013-07-14 19:09:31 +02:00
}
__complete_gpgsign() {
opts="-v -q"
lopts="--verbose --quiet"
__complete_options
}
2013-12-11 18:35:58 +01:00
__complete_install() {
opts="-v -q"
lopts="--verbose --quiet --all"
2013-12-11 18:35:58 +01:00
case "${cur}" in
-*)
__complete_options
return 0;;
*:)
__apk_vercode repo
2013-12-11 18:35:58 +01:00
return 0;;
*)
__apk_package repo
2013-12-11 18:35:58 +01:00
return 0;;
esac
}
2013-07-14 19:09:31 +02:00
__complete_update() {
opts="-c -v -q -i -I -e"
lopts="--create-metadata --verbose --quiet
--icons --pretty --clean --delete-unknown
--nosign --rename-apks --use-date-from-apk"
case "${prev}" in
-e|--editor)
_filedir
return 0;;
esac
__complete_options
2013-07-14 19:09:31 +02:00
}
__complete_publish() {
opts="-v -q"
lopts="--verbose --quiet"
case "${cur}" in
-*)
__complete_options
return 0;;
*:)
__apk_vercode unsigned
return 0;;
*)
__apk_package unsigned
return 0;;
esac
2013-07-14 19:09:31 +02:00
}
__complete_checkupdates() {
opts="-v -q"
lopts="--verbose --quiet --auto --autoonly --commit --allow-dirty"
2013-12-11 19:37:38 +01:00
case "${cur}" in
-*)
__complete_options
return 0;;
*)
__package
return 0;;
esac
2013-07-14 19:09:31 +02:00
}
__complete_import() {
opts="-c -h -l -q -s -u -v -W"
lopts="--categories --license --quiet --rev --subdir --url"
case "${prev}" in
-c|-l|-s|-u|--categories|--license|--quiet|--rev|--subdir|--url)
return 0;;
-W)
COMPREPLY=( $( compgen -W "error warn ignore" -- $cur ) )
return 0;;
esac
__complete_options
2013-07-14 19:09:31 +02:00
}
2014-02-05 09:21:28 +01:00
__complete_readmeta() {
opts="-v -q"
lopts="--verbose --quiet"
2014-02-15 00:00:05 +01:00
__complete_options
2014-02-05 09:21:28 +01:00
}
2013-07-14 19:09:31 +02:00
__complete_rewritemeta() {
opts="-v -q -l"
lopts="--verbose --quiet --list"
2013-12-19 22:59:32 +01:00
case "${cur}" in
-*)
__complete_options
return 0;;
*)
__package
return 0;;
esac
2013-07-14 19:09:31 +02:00
}
2014-01-03 00:12:42 +01:00
__complete_lint() {
opts="-v -q -f"
lopts="--verbose --quiet --force-yamllint --format"
2014-01-03 00:12:42 +01:00
case "${cur}" in
-*)
__complete_options
return 0;;
*)
__package
return 0;;
esac
}
2013-07-14 19:09:31 +02:00
__complete_scanner() {
opts="-v -q"
2015-01-11 14:22:30 +01:00
lopts="--verbose --quiet"
2013-12-19 23:06:57 +01:00
case "${cur}" in
-*)
__complete_options
return 0;;
*:)
__vercode
return 0;;
*)
__package
return 0;;
esac
2013-07-14 19:09:31 +02:00
}
__complete_verify() {
opts="-v -q -p"
lopts="--verbose --quiet"
2013-12-19 23:14:22 +01:00
case "${cur}" in
-*)
__complete_options
return 0;;
*:)
__vercode
return 0;;
*)
__package
return 0;;
esac
}
__complete_btlog() {
opts="-u"
lopts="--git-remote --git-repo --url"
__complete_options
}
__complete_mirror() {
opts="-v"
lopts="--all --archive --build-logs --pgp-signatures --src-tarballs --output-dir"
__complete_options
}
__complete_nightly() {
opts="-v -q"
lopts="--show-secret-var --archive-older"
__complete_options
}
__complete_deploy() {
opts="-i -v -q"
2015-01-11 14:24:45 +01:00
lopts="--identity-file --local-copy-dir --sync-from-local-copy-dir
--verbose --quiet --no-checksum --no-keep-git-mirror-archive"
__complete_options
2013-07-14 19:09:31 +02:00
}
__complete_signatures() {
opts="-v -q"
lopts="--verbose --no-check-https"
case "${cur}" in
-*)
__complete_options
return 0;;
esac
_filedir 'apk'
return 0
}
2015-01-11 14:16:57 +01:00
__complete_signindex() {
opts="-v -q"
lopts="--verbose"
2015-01-11 14:16:57 +01:00
__complete_options
}
__complete_init() {
opts="-v -q -d"
lopts="--verbose --quiet --distinguished-name --keystore
2014-06-12 21:51:33 +02:00
--repo-keyalias --android-home --no-prompt"
__complete_options
}
__cmds=" \
btlog \
build \
checkupdates \
deploy \
gpgsign \
import \
init \
install \
lint \
mirror \
nightly \
publish \
readmeta \
rewritemeta \
scanner \
signatures \
signindex \
update \
verify \
"
2013-07-14 19:09:31 +02:00
for c in $__cmds; do
eval "_fdroid_${c} () {
2013-12-31 10:17:49 +01:00
local cur prev opts lopts
__fdroid_init ${c}
}"
done
_fdroid() {
local cmd
cmd=${COMP_WORDS[1]}
2013-07-14 19:09:31 +02:00
[[ $__cmds == *\ $cmd\ * ]] && _fdroid_${cmd} || {
(($COMP_CWORD == 1)) && COMPREPLY=( $( compgen -W "${__cmds}" -- $cmd ) )
}
2013-07-14 19:09:31 +02:00
}
complete -F _fdroid fdroid
return 0