chiark / gitweb /
remove fd-commit, no active devs use it, and requires Auto Name/Name
[fdroidserver.git] / completion / bash-completion
index 5916c6691993be21ab896dbf4b8aa431651eefda..1a5ac52362bbb63297d720b00a2b1485bd9348c9 100644 (file)
@@ -1,8 +1,8 @@
-#!/bin/bash
+# fdroid(1) completion                                   -*- shell-script -*-
 #
 # bash-completion - part of the FDroid server tools
-# Bash completion for the fdroid main tools
 #
+# Copyright (C) 2013-2017 Hans-Christoph Steiner <hans@eds.org>
 # Copyright (C) 2013, 2014 Daniel Martí <mvdan@mvdan.cc>
 #
 # This program is free software: you can redistribute it and/or modify
 # 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/>.
 
-# 'fdroid' is completed automatically, but aliases to it are not.
-# For instance, to alias 'fd' to 'fdroid' and have competion available:
-#
-#      alias fd='fdroid'
-#      complete -F _fdroid fd
-#
-# One can use completion on aliased subcommands as follows:
-#
-#      alias fbuild='fdroid build'
-#      complete -F _fdroid_build fbuild
-
 __fdroid_init() {
        COMPREPLY=()
        cur="${COMP_WORDS[COMP_CWORD]}"
@@ -37,10 +26,16 @@ __fdroid_init() {
        (( $# >= 1 )) && __complete_${1}
 }
 
-__package() {
-       files=( metadata/*.txt )
+__by_ext() {
+       local ext="$1"
+       files=( metadata/*.$ext )
        files=( ${files[@]#metadata/} )
-       files=${files[@]%.txt}
+       files=${files[@]%.$ext}
+       echo "$files"
+}
+
+__package() {
+       files="$(__by_ext txt) $(__by_ext yaml) $(__by_ext json) $(__by_ext xml)"
        COMPREPLY=( $( compgen -W "$files" -- $cur ) )
 }
 
@@ -84,19 +79,19 @@ __vercode() {
 __complete_options() {
        case "${cur}" in
                --*)
-                       COMPREPLY=( $( compgen -W "${lopts}" -- $cur ) )
+                       COMPREPLY=( $( compgen -W "--help --version ${lopts}" -- $cur ) )
                        return 0;;
                *)
-                       COMPREPLY=( $( compgen -W "${opts} ${lopts}" -- $cur ) )
+                       COMPREPLY=( $( compgen -W "-h ${opts} --help --version ${lopts}" -- $cur ) )
                        return 0;;
        esac
 }
 
 __complete_build() {
-       opts="-h -v -q -l -s -t -f -a -w"
+       opts="-v -q -l -s -t -f -a -w"
 
-       lopts="--help --verbose --quiet --latest --stop --test --server --resetserver
- --on-server --skip-scan --no-tarball --force --all --wiki"
+       lopts="--verbose --quiet --latest --stop --test --server --resetserver
+ --on-server --skip-scan --no-tarball --force --all --wiki --no-refresh"
        case "${cur}" in
                -*)
                        __complete_options
@@ -110,9 +105,31 @@ __complete_build() {
        esac
 }
 
+__complete_dscanner() {
+       opts="-v -q -l"
+       lopts="--verbose --quiet --clean-after --clean-before --clean-only --init-only --latest --repo-path"
+        case "${cur}" in
+               -*)
+                       __complete_options
+                       return 0;;
+               *:)
+                       __vercode
+                       return 0;;
+               *)
+                       __package
+                       return 0;;
+       esac
+}
+
+__complete_gpgsign() {
+       opts="-v -q"
+       lopts="--verbose --quiet"
+       __complete_options
+}
+
 __complete_install() {
-       opts="-h -v -q"
-       lopts="--help --verbose --quiet --all"
+       opts="-v -q"
+       lopts="--verbose --quiet --all"
        case "${cur}" in
                -*)
                        __complete_options
@@ -127,9 +144,10 @@ __complete_install() {
 }
 
 __complete_update() {
-       opts="-h -c -v -q -b -i -I -e -w"
-       lopts="--help --create-metadata --verbose --quiet --buildreport
- --interactive --icons --editor --wiki --pretty --clean --delete-unknown"
+       opts="-c -v -q -b -i -I -e -w"
+       lopts="--create-metadata --verbose --quiet --buildreport
+ --interactive --icons --editor --wiki --pretty --clean --delete-unknown
+ --nosign --rename-apks --use-date-from-apk"
        case "${prev}" in
                -e|--editor)
                        _filedir
@@ -139,8 +157,8 @@ __complete_update() {
 }
 
 __complete_publish() {
-       opts="-h -v -q"
-       lopts="--help --verbose --quiet"
+       opts="-v -q"
+       lopts="--verbose --quiet"
        case "${cur}" in
                -*)
                        __complete_options
@@ -155,8 +173,8 @@ __complete_publish() {
 }
 
 __complete_checkupdates() {
-       opts="-h -v -q"
-       lopts="--help --verbose --quiet --auto --autoonly --commit --gplay"
+       opts="-v -q"
+       lopts="--verbose --quiet --auto --autoonly --commit --gplay"
        case "${cur}" in
                -*)
                        __complete_options
@@ -168,23 +186,23 @@ __complete_checkupdates() {
 }
 
 __complete_import() {
-       opts="-h -u -s -r -q"
-       lopts="--help --url --subdir --repo --rev --quiet"
+       opts="-u -s -q"
+       lopts="--url --subdir --rev --quiet"
        case "${prev}" in
-               -u|--url|-r|--repo|-s|--subdir|--rev) return 0;;
+               -u|--url|-s|--subdir|--rev) return 0;;
        esac
        __complete_options
 }
 
 __complete_readmeta() {
-       opts="-h -v -q"
-       lopts="--help --verbose --quiet"
+       opts="-v -q"
+       lopts="--verbose --quiet"
        __complete_options
 }
 
 __complete_rewritemeta() {
-       opts="-h -v -q"
-       lopts="--help --verbose --quiet"
+       opts="-v -q -l"
+       lopts="--verbose --quiet --list"
        case "${cur}" in
                -*)
                        __complete_options
@@ -196,8 +214,8 @@ __complete_rewritemeta() {
 }
 
 __complete_lint() {
-       opts="-h -v -q -p"
-       lopts="--help --verbose --quiet --pedantic"
+       opts="-v -q"
+       lopts="--verbose --quiet"
        case "${cur}" in
                -*)
                        __complete_options
@@ -209,8 +227,8 @@ __complete_lint() {
 }
 
 __complete_scanner() {
-       opts="-h -v -q"
-       lopts="--help --verbose --quiet --nosvn"
+       opts="-v -q"
+       lopts="--verbose --quiet"
        case "${cur}" in
                -*)
                        __complete_options
@@ -225,8 +243,8 @@ __complete_scanner() {
 }
 
 __complete_verify() {
-       opts="-h -v -q -p"
-       lopts="--help --verbose --quiet"
+       opts="-v -q -p"
+       lopts="--verbose --quiet"
        case "${cur}" in
                -*)
                        __complete_options
@@ -240,45 +258,100 @@ __complete_verify() {
        esac
 }
 
+__complete_btlog() {
+       opts="-u"
+       lopts="--git-remote --git-repo --url"
+       __complete_options
+}
+
+__complete_mirror() {
+       opts="-v"
+       lopts="--archive --output-dir"
+       __complete_options
+}
+
+__complete_nightly() {
+       opts="-v -q"
+       lopts="--show-secret-var"
+       __complete_options
+}
+
 __complete_stats() {
-       opts="-h -v -q -d"
-       lopts="--help --verbose --quiet --download"
+       opts="-v -q -d"
+       lopts="--verbose --quiet --download"
        __complete_options
 }
 
 __complete_server() {
-       opts="-h -v -q"
-       lopts="--help --verbose --quiet update"
+       opts="-i -v -q"
+       lopts="--identity-file --local-copy-dir --sync-from-local-copy-dir
+ --verbose --quiet --no-checksum update"
+       __complete_options
+}
+
+__complete_signatures() {
+       opts="-v -q"
+       lopts="--verbose --no-check-https"
+       case "${cur}" in
+               -*)
+                       __complete_options
+                       return 0;;
+       esac
+}
+
+__complete_signindex() {
+       opts="-v -q"
+       lopts="--verbose"
        __complete_options
 }
 
 __complete_init() {
-       opts="-h -v -q -d"
-       lopts="--help --verbose --quiet --keystore --distinguished-name --repo-keyalias"
+       opts="-v -q -d"
+       lopts="--verbose --quiet --distinguished-name --keystore
+ --repo-keyalias --android-home --no-prompt"
        __complete_options
 }
 
+__cmds=" \
+btlog \
+build \
+checkupdates \
+dscanner \
+gpgsign \
+import \
+init \
+install \
+lint \
+mirror \
+nightly \
+publish \
+readmeta \
+rewritemeta \
+scanner \
+server \
+signatures \
+signindex \
+stats \
+update \
+verify \
+"
+
+for c in $__cmds; do
+       eval "_fdroid_${c} () {
+               local cur prev opts lopts
+               __fdroid_init ${c}
+       }"
+done
+
 _fdroid() {
-       local cmd cmds
+       local cmd
        cmd=${COMP_WORDS[1]}
-       cmds=" build init install update publish checkupdates import \
-readmeta rewritemeta lint scanner verify stats server "
-
-       for c in $cmds; do eval "_fdroid_${c} () {
-               local cur prev opts lopts
-               __fdroid_init ${c};
-       }"; done
 
-       [[ $cmds == *\ $cmd\ * ]] && _fdroid_${cmd} || {
-               (($COMP_CWORD == 1)) && COMPREPLY=( $( compgen -W "${cmds}" -- $cmd ) )
+       [[ $__cmds == *\ $cmd\ * ]] && _fdroid_${cmd} || {
+               (($COMP_CWORD == 1)) && COMPREPLY=( $( compgen -W "${__cmds}" -- $cmd ) )
        }
 }
 
-_fd-commit() {
-       __package
-}
-
 complete -F _fdroid fdroid
-complete -F _fd-commit fd-commit
 
 return 0