mirror of
				https://github.com/f-droid/fdroidserver.git
				synced 2025-11-04 14:30:30 +03:00 
			
		
		
		
	This will report the version embedded in the module if it is installed, and will report `git describe` if being run from git. If someone installs from git using pip, this will probably report the version in setup.py, which will be wrong. But that is not a documented install method, and I haven't heard of anyone using it. The recommended way is to run straight from git.
		
			
				
	
	
		
			293 lines
		
	
	
	
		
			5.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			293 lines
		
	
	
	
		
			5.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
#
 | 
						|
# bash-completion - part of the FDroid server tools
 | 
						|
# Bash completion for the fdroid main tools
 | 
						|
#
 | 
						|
# Copyright (C) 2013, 2014 Daniel Martí <mvdan@mvdan.cc>
 | 
						|
#
 | 
						|
# 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/>.
 | 
						|
 | 
						|
# '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]}"
 | 
						|
	prev="${COMP_WORDS[COMP_CWORD-1]}"
 | 
						|
 | 
						|
	(( $# >= 1 )) && __complete_${1}
 | 
						|
}
 | 
						|
 | 
						|
__package() {
 | 
						|
	files=( metadata/*.txt )
 | 
						|
	files=( ${files[@]#metadata/} )
 | 
						|
	files=${files[@]%.txt}
 | 
						|
	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() {
 | 
						|
	local p=${cur:0:-1}
 | 
						|
 | 
						|
	files=( ${1}/${p}_*.apk )
 | 
						|
	[ -f "${files[0]}" ] || return
 | 
						|
 | 
						|
	files=( ${files[@]#*_} )
 | 
						|
	files=${files[@]%.apk}
 | 
						|
	COMPREPLY=( $( compgen -P "${p}:" -W "$files" -- $cur ) )
 | 
						|
}
 | 
						|
 | 
						|
__vercode() {
 | 
						|
	local p v
 | 
						|
	echo $cur | IFS=':' read p v
 | 
						|
 | 
						|
	COMPREPLY=( $( compgen -P "${p}:" -W "$( while read line; do
 | 
						|
		if [[ "$line" == "Build Version:"* ]]
 | 
						|
		then
 | 
						|
			line="${line#*,}"
 | 
						|
			printf "${line%%,*} "
 | 
						|
		elif [[ "$line" == "Build:"* ]]
 | 
						|
		then
 | 
						|
			line="${line#*,}"
 | 
						|
			printf "${line%%,*} "
 | 
						|
		fi
 | 
						|
		done < "metadata/${p}.txt" )" -- $cur ) )
 | 
						|
}
 | 
						|
 | 
						|
__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
 | 
						|
}
 | 
						|
 | 
						|
__complete_build() {
 | 
						|
	opts="-v -q -l -s -t -f -a -w"
 | 
						|
 | 
						|
	lopts="--verbose --quiet --latest --stop --test --server --resetserver
 | 
						|
 --on-server --skip-scan --no-tarball --force --all --wiki --no-refresh"
 | 
						|
	case "${cur}" in
 | 
						|
		-*)
 | 
						|
			__complete_options
 | 
						|
			return 0;;
 | 
						|
		*:*)
 | 
						|
			__vercode
 | 
						|
			return 0;;
 | 
						|
		*)
 | 
						|
			__package
 | 
						|
			return 0;;
 | 
						|
	esac
 | 
						|
}
 | 
						|
 | 
						|
__complete_install() {
 | 
						|
	opts="-v -q"
 | 
						|
	lopts="--verbose --quiet --all"
 | 
						|
	case "${cur}" in
 | 
						|
		-*)
 | 
						|
			__complete_options
 | 
						|
			return 0;;
 | 
						|
		*:)
 | 
						|
			__apk_vercode repo
 | 
						|
			return 0;;
 | 
						|
		*)
 | 
						|
			__apk_package repo
 | 
						|
			return 0;;
 | 
						|
	esac
 | 
						|
}
 | 
						|
 | 
						|
__complete_update() {
 | 
						|
	opts="-c -v -q -b -i -I -e -w"
 | 
						|
	lopts="--create-metadata --verbose --quiet --buildreport
 | 
						|
 --interactive --icons --editor --wiki --pretty --clean --delete-unknown
 | 
						|
 --nosign"
 | 
						|
	case "${prev}" in
 | 
						|
		-e|--editor)
 | 
						|
			_filedir
 | 
						|
			return 0;;
 | 
						|
	esac
 | 
						|
	__complete_options
 | 
						|
}
 | 
						|
 | 
						|
__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
 | 
						|
}
 | 
						|
 | 
						|
__complete_checkupdates() {
 | 
						|
	opts="-v -q"
 | 
						|
	lopts="--verbose --quiet --auto --autoonly --commit --gplay"
 | 
						|
	case "${cur}" in
 | 
						|
		-*)
 | 
						|
			__complete_options
 | 
						|
			return 0;;
 | 
						|
		*)
 | 
						|
			__package
 | 
						|
			return 0;;
 | 
						|
	esac
 | 
						|
}
 | 
						|
 | 
						|
__complete_import() {
 | 
						|
	opts="-u -s -q"
 | 
						|
	lopts="--url --subdir --rev --quiet"
 | 
						|
	case "${prev}" in
 | 
						|
		-u|--url|-s|--subdir|--rev) return 0;;
 | 
						|
	esac
 | 
						|
	__complete_options
 | 
						|
}
 | 
						|
 | 
						|
__complete_readmeta() {
 | 
						|
	opts="-v -q"
 | 
						|
	lopts="--verbose --quiet"
 | 
						|
	__complete_options
 | 
						|
}
 | 
						|
 | 
						|
__complete_rewritemeta() {
 | 
						|
	opts="-v -q"
 | 
						|
	lopts="--verbose --quiet"
 | 
						|
	case "${cur}" in
 | 
						|
		-*)
 | 
						|
			__complete_options
 | 
						|
			return 0;;
 | 
						|
		*)
 | 
						|
			__package
 | 
						|
			return 0;;
 | 
						|
	esac
 | 
						|
}
 | 
						|
 | 
						|
__complete_lint() {
 | 
						|
	opts="-v -q"
 | 
						|
	lopts="--verbose --quiet"
 | 
						|
	case "${cur}" in
 | 
						|
		-*)
 | 
						|
			__complete_options
 | 
						|
			return 0;;
 | 
						|
		*)
 | 
						|
			__package
 | 
						|
			return 0;;
 | 
						|
	esac
 | 
						|
}
 | 
						|
 | 
						|
__complete_scanner() {
 | 
						|
	opts="-v -q"
 | 
						|
	lopts="--verbose --quiet"
 | 
						|
	case "${cur}" in
 | 
						|
		-*)
 | 
						|
			__complete_options
 | 
						|
			return 0;;
 | 
						|
		*:)
 | 
						|
			__vercode
 | 
						|
			return 0;;
 | 
						|
		*)
 | 
						|
			__package
 | 
						|
			return 0;;
 | 
						|
	esac
 | 
						|
}
 | 
						|
 | 
						|
__complete_verify() {
 | 
						|
	opts="-v -q -p"
 | 
						|
	lopts="--verbose --quiet"
 | 
						|
	case "${cur}" in
 | 
						|
		-*)
 | 
						|
			__complete_options
 | 
						|
			return 0;;
 | 
						|
		*:)
 | 
						|
			__vercode
 | 
						|
			return 0;;
 | 
						|
		*)
 | 
						|
			__package
 | 
						|
			return 0;;
 | 
						|
	esac
 | 
						|
}
 | 
						|
 | 
						|
__complete_stats() {
 | 
						|
	opts="-v -q -d"
 | 
						|
	lopts="--verbose --quiet --download"
 | 
						|
	__complete_options
 | 
						|
}
 | 
						|
 | 
						|
__complete_server() {
 | 
						|
	opts="-i -v -q"
 | 
						|
	lopts="--identity-file --local-copy-dir --sync-from-local-copy-dir
 | 
						|
 --verbose --quiet --no-checksum update"
 | 
						|
	__complete_options
 | 
						|
}
 | 
						|
 | 
						|
__complete_signindex() {
 | 
						|
	opts="-v -q"
 | 
						|
	lopts="--verbose"
 | 
						|
	__complete_options
 | 
						|
}
 | 
						|
 | 
						|
__complete_init() {
 | 
						|
	opts="-v -q -d"
 | 
						|
	lopts="--verbose --quiet --distinguished-name --keystore
 | 
						|
 --repo-keyalias --android-home --no-prompt"
 | 
						|
	__complete_options
 | 
						|
}
 | 
						|
 | 
						|
_fdroid() {
 | 
						|
	local cmd cmds
 | 
						|
	cmd=${COMP_WORDS[1]}
 | 
						|
	cmds=" build init install update publish checkupdates import \
 | 
						|
readmeta rewritemeta lint scanner verify stats server signindex "
 | 
						|
 | 
						|
	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 ) )
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
_fd-commit() {
 | 
						|
	__package
 | 
						|
}
 | 
						|
 | 
						|
complete -F _fdroid fdroid
 | 
						|
complete -F _fd-commit fd-commit
 | 
						|
 | 
						|
return 0
 |