c875723bef
This way it's clearer to users that an argument is expected. It's likely that this commit does not catch all such cases, but it should do it for most of the affected commands I have installed.
94 lines
2.2 KiB
Bash
94 lines
2.2 KiB
Bash
# xz(1) completion
|
|
|
|
have xz || have pxz &&
|
|
_xz()
|
|
{
|
|
local cur prev words cword split
|
|
_init_completion -s || return
|
|
|
|
if [[ "$cur" == -* ]]; then
|
|
COMPREPLY=( $( compgen -W '$( _parse_help "$1" --long-help ) {-1..-9}' \
|
|
-- "$cur" ) )
|
|
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
|
return 0
|
|
fi
|
|
|
|
local xspec="*.@(xz|lzma|txz|tlz)"
|
|
|
|
case $prev in
|
|
--decompress|--list|--test|-!(-*)[dlt]*)
|
|
xspec="!"$xspec
|
|
;;
|
|
--files|--files0)
|
|
_filedir
|
|
return 0
|
|
;;
|
|
-C|--check)
|
|
COMPREPLY=( $( compgen -W 'crc32 crc64 sha256 none' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
-F|--format)
|
|
COMPREPLY=( $( compgen -W 'auto xz lzma raw' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
-M|--memlimit|--memlimit-compress|--memlimit-decompress|--memory|\
|
|
-S|--suffix|--delta|--lzma1|--lzma2)
|
|
# argument required but no completions available
|
|
return 0
|
|
;;
|
|
-h|--help|-H|--long-help|-V|--version|--info-memory)
|
|
# all other arguments are noop with these
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
$split && return 0
|
|
|
|
_expand || return 0
|
|
|
|
local IFS=$'\n'
|
|
compopt -o filenames
|
|
COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \
|
|
$( compgen -d -- "$cur" ) )
|
|
} &&
|
|
complete -F _xz xz pxz
|
|
|
|
# xzdec(1) completion
|
|
#
|
|
have xzdec &&
|
|
_xzdec()
|
|
{
|
|
local cur prev words cword split
|
|
_init_completion -s || return
|
|
|
|
if [[ "$cur" == -* ]]; then
|
|
COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
|
|
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
|
return 0
|
|
fi
|
|
|
|
case $prev in
|
|
-M|--memory)
|
|
# argument required but no completions available
|
|
return 0
|
|
;;
|
|
-h|--help|-V|--version)
|
|
# all other arguments are noop with these
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
$split && return 0
|
|
|
|
_filedir xz # no lzma support here as of xz 4.999.9beta
|
|
} &&
|
|
complete -F _xzdec xzdec
|
|
|
|
# Local variables:
|
|
# mode: shell-script
|
|
# sh-basic-offset: 4
|
|
# sh-indent-comment: t
|
|
# indent-tabs-mode: nil
|
|
# End:
|
|
# ex: ts=4 sw=4 et filetype=sh
|