1
0
Fork 0
devscripts/scripts/debdiff.bash_completion
Daniel Baumann b543f2e88d
Adding upstream version 2.25.15.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-21 11:04:07 +02:00

154 lines
4.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# /usr/share/bash-completion/completions/debdiff
# Bash command completion for debdiff(1).
# Documentation: bash(1), section “Programmable Completion”.
# This is free software, and you are welcome to redistribute it under
# certain conditions; see the end of this file for copyright
# information, grant of license, and disclaimer of warranty.
_have debdiff &&
_debdiff () {
local cur prev words cword
_init_completion || return
local i
local command_name=debdiff
local options=(
-h --help -v --version
-q --quiet
-d --dirs --nodirs
-w --ignore-space
--diffstat --no-diffstat
--auto-ver-sort --no-auto-ver-sort
--unpack-tarballs --no-unpack-tarballs
--apply-patches --no-apply-patches
--control --nocontrol --controlfiles
--wdiff-source-control --no-wdiff-source-control --wp --wl --wt
--show-moved --noshow-moved --renamed
--debs-dir
--from
--move --move-regex
--exclude
)
local file_list_mode=normal
local -i move_from=-1
local -i move_to=-1
unset COMPREPLY
case "$prev" in
"$command_name")
options+=( --noconf --no-conf )
;;
--debs-dir)
COMPREPLY=( $( compgen -A directory -- "$cur" ) )
;;
esac
if [[ -v COMPREPLY ]] ; then
return 0
fi
for (( i=1; i<${#words[@]}; i++ )); do
if [[ $file_list_mode == @(deb|dsc|changes) ]]; then
if (( i == ${#words[@]}-1 )); then
break
else
COMPREPLY=()
return 0
fi
fi
if (( ${move_from} == -1 && ${move_to} == -1 )); then
file_list_mode=normal
elif (( ${move_from} >= 0 && ${move_to} == -1 )); then
file_list_mode=from
elif (( ${move_from} >= 0 && ${move_to} >= 0 && ${move_to} < ${move_from} )); then
file_list_mode=to
else
COMPREPLY=()
return 0
fi
if [[ $file_list_mode == normal && ${words[i]} == --from ]]; then
move_from=0
file_list_mode=from
elif [[ $file_list_mode == normal && ${words[i]} == *.deb ]]; then
file_list_mode=deb
elif [[ $file_list_mode == normal && ${words[i]} == *.udeb ]]; then
file_list_mode=deb
elif [[ $file_list_mode == normal && ${words[i]} == *.dsc ]]; then
file_list_mode=dsc
elif [[ $file_list_mode == normal && ${words[i]} == *.changes ]]; then
file_list_mode=changes
elif [[ $file_list_mode == from && ${words[i]} == *.deb ]]; then
(( ++move_from ))
elif [[ $file_list_mode == from && ${words[i]} == *.udeb ]]; then
(( ++move_from ))
elif [[ $file_list_mode == from && ${words[i]} == --to ]]; then
move_to=0
file_list_mode=to
elif [[ $file_list_mode = to && ${words[i]} == *.deb ]]; then
(( ++move_to ))
elif [[ $file_list_mode = to && ${words[i]} == *.udeb ]]; then
(( ++move_to ))
fi
done
case $file_list_mode in
normal)
if [[ $prev == --debs-dir ]]; then
COMPREPLY=( $( compgen -G "${cur}*" ) )
compopt -o dirnames
elif [[ $cur == -* ]]; then
COMPREPLY=( $( compgen -W "${options[*]}" -- "$cur" ) )
else
COMPREPLY=( $( compgen -G "${cur}*.@(deb|udeb|dsc|changes)" ) )
compopt -o filenames
compopt -o plusdirs
fi
;;
deb|from|to)
COMPREPLY=( $( compgen -G "${cur}*.deb" "${cur}*.udeb" ) )
if (( $move_from > 0 && $move_to < 0 )) ; then
COMPREPLY+=( $( compgen -W "--to" -- "$cur" ) )
fi
compopt -o filenames
compopt -o plusdirs
;;
dsc)
COMPREPLY=( $( compgen -G "${cur}*.dsc" ) )
compopt -o filenames
compopt -o plusdirs
;;
changes)
COMPREPLY=( $( compgen -G "${cur}*.changes" ) )
compopt -o filenames
compopt -o plusdirs
;;
*)
COMPREPLY=( $( compgen -W "${options[*]}" -- "$cur" ) )
;;
esac
return 0
} &&
complete -F _debdiff debdiff
# Copyright © 20162017 Ben Finney <ben+debian@benfinney.id.au>
# Copyright © 2015 Nicholas Bamber <nicholas@periapt.co.uk>
#
# This is free software: you may copy, modify, and/or distribute this work
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; version 2 of that license or any later version.
# No warranty expressed or implied. See the file LICENSE.GPL-2 for details.
# Local variables:
# coding: utf-8
# mode: shell-script
# indent-tabs-mode: nil
# End:
# vim: fileencoding=utf-8 filetype=sh expandtab shiftwidth=4 :