mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-07-30 11:38:41 -07:00
91 lines
3.1 KiB
Text
91 lines
3.1 KiB
Text
# Bash completion for Pacboy
|
|
# Copyright (C) 2015 Renato Silva
|
|
# Licensed under BSD
|
|
|
|
_pacboy_repositories() {
|
|
local repositories
|
|
local current="${1}"
|
|
local suffix="${2}"
|
|
for database in /var/lib/pacman/sync/*.db; do
|
|
database="${database##*/}"
|
|
repositories="${repositories} ${database%.db}${suffix}"
|
|
done
|
|
COMPREPLY+=($(compgen -W "${repositories}" -- ${current}))
|
|
__ltrim_colon_completions "${current}"
|
|
}
|
|
|
|
_pacboy() {
|
|
local commands='sync update refresh find packages files info origin remove'
|
|
local current command
|
|
local debug='enabled'
|
|
local help='enabled'
|
|
local repository
|
|
_get_comp_words_by_ref -n : -c current
|
|
COMPREPLY=()
|
|
|
|
# Commands
|
|
for argument in "${COMP_WORDS[@]}"; do
|
|
if [[ "${argument}" != "${current}" ]]; then
|
|
case "${argument}" in
|
|
help) unset help; continue ;;
|
|
debug) unset debug; continue ;;
|
|
esac
|
|
fi
|
|
test -n "${command}" && continue
|
|
for valid_command in ${commands}; do
|
|
if [[ "${argument}" = "${valid_command}" ]]; then
|
|
command="${argument}"
|
|
break
|
|
fi
|
|
done
|
|
done
|
|
COMPREPLY+=($(compgen -W "${help:+help}" -- ${current}))
|
|
COMPREPLY+=($(compgen -W "${debug:+debug}" -- ${current}))
|
|
if [[ -z "${command}" ]]; then
|
|
COMPREPLY+=($(compgen -W "${commands}" -- ${current}))
|
|
COMPREPLY=("${COMPREPLY[@]/%/ }")
|
|
return
|
|
fi
|
|
|
|
# Repositories
|
|
if [[ "${command}" = packages ]]; then
|
|
_pacboy_repositories "${current}"
|
|
COMPREPLY=("${COMPREPLY[@]/%/ }")
|
|
return
|
|
fi
|
|
if [[ "${command}" = sync ]]; then
|
|
if [[ "${current}" != *::* ]]
|
|
then _pacboy_repositories "${current}" ::
|
|
else repository="${current%::*}"
|
|
current="${current##*::}"
|
|
fi
|
|
fi
|
|
|
|
# Packages
|
|
if [[ "${command}" =~ ^(sync|files|info|remove)$ ]]; then
|
|
local packages=$(cat /var/cache/pacboy/${repository:-*}.packages 2>/dev/null)
|
|
if [[ -z "${packages}" ]]; then
|
|
local mingw_suffix="${MSYSTEM/MSYS/:m}"
|
|
local msys_suffix="${MSYSTEM/MINGW*/:}"
|
|
for package in $(pacman --sync --list --quiet ${repository}); do
|
|
case "${package}" in
|
|
mingw-w64-x86_64-*) package="${package/mingw-w64-x86_64-/}${mingw_suffix}" ;;
|
|
mingw-w64-i686-*) package="${package/mingw-w64-i686-/}${mingw_suffix}" ;;
|
|
*) package="${package}${msys_suffix}"
|
|
esac
|
|
packages="${packages} ${package}"
|
|
done
|
|
elif [[ "${MSYSTEM}" = MSYS ]]; then
|
|
packages=$(sed -e 's/\([^:]\)$/\1:m/' -e 's/:$//' <<<"${packages}")
|
|
fi
|
|
COMPREPLY+=($(compgen -W "${packages}" -- ${current}))
|
|
__ltrim_colon_completions "${current}"
|
|
fi
|
|
|
|
if [[ "${current}" != *: || "${COMPREPLY[@]}" != : ]]; then
|
|
COMPREPLY=("${COMPREPLY[@]/%/ }")
|
|
COMPREPLY=("${COMPREPLY[@]/:: /::}")
|
|
fi
|
|
}
|
|
|
|
complete -F _pacboy -o nospace -o bashdefault -o default pacboy
|