mirror of https://gitee.com/openkylin/quilt.git
275 lines
7.0 KiB
Bash
275 lines
7.0 KiB
Bash
#-*- mode: shell-script;-*-
|
|
|
|
# Programmed completion for bash to use quilt
|
|
# Copyright 2003-2004 Martin Quinson (martin quinson#debian org)
|
|
|
|
# This file is part of the distribution of quilt, and is distributed under
|
|
# the same licence than quilt itself
|
|
|
|
# WARNING: This script doesn't read user or system quiltrc files, and assumes
|
|
# that QUILT_PC is left unchanged. If you have changed QUILT_PC and want
|
|
# completion to work then you must set QUILT_PC in your global environment
|
|
# (for example in ~/.profile) and not just in your quiltrc file.
|
|
|
|
# Complete on files (by default) or directories (with -d)
|
|
#
|
|
_quilt_comfile()
|
|
{
|
|
local IFS=$'\t\n'
|
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen ${1:--f} -- "$cur" ) )
|
|
}
|
|
|
|
_quilt_completion()
|
|
{
|
|
local cur prev cmds command_matches
|
|
|
|
COMPREPLY=()
|
|
cur=${COMP_WORDS[COMP_CWORD]}
|
|
prev=${COMP_WORDS[COMP_CWORD-1]}
|
|
|
|
# quilt sub commands
|
|
cmds='add annotate applied delete diff edit files fold fork graph \
|
|
grep header import mail new next patches pop previous push refresh \
|
|
remove rename revert series setup snapshot top unapplied upgrade'
|
|
|
|
# if no command were given, complete on commands
|
|
if [[ $COMP_CWORD -eq 1 ]] ; then
|
|
COMPREPLY=( $( compgen -W "$cmds -h" -- $cur ) )
|
|
return 0
|
|
fi
|
|
|
|
# if we're completing for 'quilt -h', then just
|
|
# complete on any valid command
|
|
if [ ${COMP_WORDS[1]} == -h ] ; then
|
|
COMPREPLY=( $( compgen -W "$cmds" -- $cur ) )
|
|
return 0
|
|
fi
|
|
|
|
# Accept a partial command if it's unique, because quilt will accept it.
|
|
command_matches=( $(compgen -W "$cmds" -- ${COMP_WORDS[1]}) )
|
|
if [ ${#command_matches[@]} -ne 1 ] ; then
|
|
return 0
|
|
fi
|
|
|
|
# Complete depending on options
|
|
case ${command_matches[0]} in
|
|
add)
|
|
case $prev in
|
|
-P)
|
|
COMPREPLY=( $( compgen -W "$(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
|
|
;;
|
|
*)
|
|
_quilt_comfile
|
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-P -h" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
annotate)
|
|
case $prev in
|
|
-P)
|
|
COMPREPLY=( $( compgen -W "$(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
|
|
;;
|
|
*)
|
|
_quilt_comfile
|
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-P -h" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
applied)
|
|
COMPREPLY=( $( compgen -W "-h $(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
|
|
;;
|
|
delete)
|
|
COMPREPLY=( $( compgen -W "-n -r -h --backup $(quilt --quiltrc - series)" -- $cur ) )
|
|
;;
|
|
diff)
|
|
case $prev in
|
|
-p)
|
|
COMPREPLY=( $( compgen -W "0 1 ab" -- $cur ) )
|
|
;;
|
|
-P|--combine)
|
|
COMPREPLY=( $( compgen -W "$(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
|
|
;;
|
|
--diff|-U|-C)
|
|
;;
|
|
*)
|
|
_quilt_comfile
|
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-p -P -u -U -c -C -R -z -h --snapshot --diff --no-timestamps --no-index --combine --color --sort" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
edit)
|
|
_quilt_comfile
|
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-h" -- $cur ) )
|
|
;;
|
|
files)
|
|
case $prev in
|
|
--combine)
|
|
COMPREPLY=( $( compgen -W "$(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
|
|
;;
|
|
*)
|
|
COMPREPLY=( $( compgen -W "-a -l -v -h --combine $(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
fold)
|
|
case $prev in
|
|
-p)
|
|
COMPREPLY=( $( compgen -W "0 1 2 3 4 5 6 7 8 9 10" -- $cur ) )
|
|
;;
|
|
*)
|
|
_quilt_comfile
|
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-R -q -f -p -h" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
graph)
|
|
case $prev in
|
|
-T)
|
|
COMPREPLY=( $( compgen -W "ps" -- $cur ) )
|
|
;;
|
|
--edge-labels)
|
|
COMPREPLY=( $( compgen -W "files" -- $cur ) )
|
|
;;
|
|
*)
|
|
COMPREPLY=( $( compgen -W "-T -h --all --reduce --lines --edge-labels $(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
grep)
|
|
type _longopt &> /dev/null && _longopt grep
|
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-h" -- $cur ) )
|
|
;;
|
|
header)
|
|
COMPREPLY=( $( compgen -W "-a -e -h -r --backup --strip-diffstat --strip-trailing-whitespace $(quilt --quiltrc - series)" -- $cur ) )
|
|
;;
|
|
import)
|
|
case $prev in
|
|
-p)
|
|
COMPREPLY=( $( compgen -W "0 1 2 3 4 5 6 7 8 9 10" -- $cur ) )
|
|
;;
|
|
-P)
|
|
;;
|
|
-d)
|
|
COMPREPLY=( $( compgen -W "o a n" -- $cur ) )
|
|
;;
|
|
*)
|
|
_quilt_comfile
|
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-p -R -P -f -d -h" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
mail)
|
|
case $prev in
|
|
--mbox|-M)
|
|
_quilt_comfile
|
|
;;
|
|
--signature)
|
|
_quilt_comfile
|
|
COMPREPLY=( "${COMPREPLY[@]}" - )
|
|
;;
|
|
--prefix|--sender|--from|--subject|--to|--cc|--bcc|--charset|--reply-to)
|
|
;;
|
|
*)
|
|
COMPREPLY=( $( compgen -W "-m -M --prefix --mbox --send --sender --from --subject --to --cc --bcc --charset --signature --reply-to -h" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
new)
|
|
case $prev in
|
|
-p)
|
|
COMPREPLY=( $( compgen -W "0 1 ap" -- $cur ) )
|
|
;;
|
|
*)
|
|
COMPREPLY=( $( compgen -W "-p -h" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
next|previous)
|
|
COMPREPLY=( $( compgen -W "$(quilt --quiltrc - series) -h" -- $cur ) )
|
|
;;
|
|
patches)
|
|
_quilt_comfile
|
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-v --color -h" -- $cur ) )
|
|
;;
|
|
pop)
|
|
COMPREPLY=( $( compgen -W "-a -f -R -q -v --refresh -h $(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
|
|
;;
|
|
push)
|
|
case $prev in
|
|
--fuzz)
|
|
;;
|
|
*)
|
|
COMPREPLY=( $( compgen -W "-a -f -q -v -h --fuzz -m --merge --leave-rejects --color --refresh $(quilt --quiltrc - unapplied 2>/dev/null)" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
refresh)
|
|
case $prev in
|
|
-p)
|
|
COMPREPLY=( $( compgen -W "0 1 ap" -- $cur ) )
|
|
;;
|
|
-U|-C)
|
|
;;
|
|
*)
|
|
COMPREPLY=( $( compgen -W "-p -u -U -c -C -z -f -h $(quilt --quiltrc - applied 2>/dev/null) --no-timestamps --no-index --diffstat --sort --backup --strip-trailing-whitespace" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
remove|revert)
|
|
case $prev in
|
|
-P)
|
|
COMPREPLY=( $( compgen -W "$(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
|
|
;;
|
|
*)
|
|
_quilt_comfile
|
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-P -h" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
rename)
|
|
case $prev in
|
|
-P)
|
|
COMPREPLY=( $( compgen -W "$(quilt --quiltrc - series)" -- $cur ) )
|
|
;;
|
|
*)
|
|
COMPREPLY=( $( compgen -W "-P -h" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
series)
|
|
COMPREPLY=( $( compgen -W "-v -h --color" -- $cur ) )
|
|
;;
|
|
setup)
|
|
case $prev in
|
|
-d|--sourcedir)
|
|
_quilt_comfile -d
|
|
;;
|
|
--fuzz)
|
|
;;
|
|
*)
|
|
_quilt_comfile
|
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-d -v -h --sourcedir --fuzz --slow --fast" -- $cur ) )
|
|
;;
|
|
esac
|
|
;;
|
|
snapshot)
|
|
COMPREPLY=( $( compgen -W "-d -h" -- $cur ) )
|
|
;;
|
|
unapplied)
|
|
COMPREPLY=( $( compgen -W "-h $(quilt --quiltrc - series)" -- $cur ) )
|
|
;;
|
|
fork|top|upgrade)
|
|
;;
|
|
esac
|
|
return 0
|
|
}
|
|
|
|
# With option "filenames", directories are shown in completion with their
|
|
# trailing / so that the user can go in them.
|
|
#
|
|
[ ${BASH_VERSINFO[0]} '>' 2 -o \
|
|
${BASH_VERSINFO[0]} = 2 -a ${BASH_VERSINFO[1]} '>' 04 ] \
|
|
&& _quilt_complete_opt="-o filenames"
|
|
complete -F _quilt_completion $_quilt_complete_opt quilt
|
|
unset -v _quilt_complete_opt
|