mirror of
https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git
synced 2024-11-27 05:43:50 +08:00
shell-completion/*/rmmod: add bash/fish/zsh completion
v2: - use e(x)clusive answers for fish, tweak force string v3: - wire the completions to the autotools build v4: - use SPDX style copyright statements Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/138 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
This commit is contained in:
parent
257034a4e1
commit
76fbadb158
@ -126,15 +126,18 @@ noarch_pkgconfig_DATA = tools/kmod.pc
|
||||
bashcompletiondir=@bashcompletiondir@
|
||||
dist_bashcompletion_DATA = \
|
||||
shell-completion/bash/kmod \
|
||||
shell-completion/bash/lsmod
|
||||
shell-completion/bash/lsmod \
|
||||
shell-completion/bash/rmmod
|
||||
|
||||
fishcompletiondir=@fishcompletiondir@
|
||||
dist_fishcompletion_DATA = \
|
||||
shell-completion/fish/lsmod.fish
|
||||
shell-completion/fish/lsmod.fish \
|
||||
shell-completion/fish/rmmod.fish
|
||||
|
||||
zshcompletiondir=@zshcompletiondir@
|
||||
dist_zshcompletion_DATA = \
|
||||
shell-completion/zsh/_lsmod
|
||||
shell-completion/zsh/_lsmod \
|
||||
shell-completion/zsh/_rmmod
|
||||
|
||||
install-exec-hook:
|
||||
if BUILD_TOOLS
|
||||
|
@ -216,6 +216,7 @@ foreach tuple : _completiondirs
|
||||
|
||||
_completions = [
|
||||
'lsmod',
|
||||
'rmmod',
|
||||
]
|
||||
|
||||
if completiondir != 'no'
|
||||
|
34
shell-completion/bash/rmmod
Normal file
34
shell-completion/bash/rmmod
Normal file
@ -0,0 +1,34 @@
|
||||
# rmmod(8) completion -*- shell-script -*-
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
|
||||
#
|
||||
# Formatted using:
|
||||
# shfmt --language-dialect bash --indent 4 --func-next-line
|
||||
|
||||
_rmmod()
|
||||
{
|
||||
# long/short opt pairs
|
||||
local -A opts=(
|
||||
['force']='f'
|
||||
['syslog']='s'
|
||||
['verbose']='v'
|
||||
['version']='V'
|
||||
['help']='h'
|
||||
)
|
||||
|
||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
|
||||
if [[ $cur == --* ]]; then
|
||||
COMPREPLY=($(compgen -P '--' -W "${!opts[*]}" -- "${cur:2}"))
|
||||
elif [[ $cur == -* ]]; then
|
||||
if (( ${#cur} != 2 )); then
|
||||
COMPREPLY=($(compgen -P '--' -W "${!opts[*]}" -- "${cur:2}"))
|
||||
fi
|
||||
COMPREPLY+=($(compgen -P '-' -W "${opts[*]}" -- "${cur:1}"))
|
||||
else
|
||||
local -a modules=($(lsmod | cut -f1 -d' '))
|
||||
COMPREPLY=($(compgen -W "${modules[*]}" -- "${cur}"))
|
||||
fi
|
||||
} &&
|
||||
complete -F _rmmod rmmod
|
16
shell-completion/fish/rmmod.fish
Normal file
16
shell-completion/fish/rmmod.fish
Normal file
@ -0,0 +1,16 @@
|
||||
# rmmod(8) completion -*- shell-script -*-
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
|
||||
|
||||
# globally disable file completions
|
||||
complete -c rmmod -f
|
||||
|
||||
complete -c rmmod -s f -l force -d "DANGEROUS: forces a module unload and may crash your machine"
|
||||
complete -c rmmod -s s -l syslog -d 'print to syslog, not stderr'
|
||||
complete -c rmmod -s v -l verbose -d 'enables more messages'
|
||||
complete -c rmmod -s V -l version -d 'show version'
|
||||
complete -c rmmod -s h -l help -d 'show this help'
|
||||
|
||||
# provide an exclusive (x) list of required (r) answers (a)
|
||||
complete -c rmmod -x -ra "(lsmod | cut -f1 -d' ')"
|
21
shell-completion/zsh/_rmmod
Normal file
21
shell-completion/zsh/_rmmod
Normal file
@ -0,0 +1,21 @@
|
||||
#compdef rmmod
|
||||
|
||||
# rmmod(8) completion -*- shell-script -*-
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
|
||||
|
||||
(( $+functions[_rmmod_modules] )) || _rmmod_modules()
|
||||
{
|
||||
local -a _modules
|
||||
_modules=(${${(f)"$(_call_program modules lsmod)"}[2,-1]%% *})
|
||||
_values 'modules' "$_modules[@]"
|
||||
}
|
||||
|
||||
_arguments \
|
||||
{-f,--force}'[DANGEROUS: forces a module unload and may crash your machine]' \
|
||||
{-s,--syslog}'[print to syslog, not stderr]' \
|
||||
{-v,--verbose}'[enables more messages]' \
|
||||
{-V,--version}'[show version]' \
|
||||
{-h,--help}'[show this help]' \
|
||||
'*::modules:_rmmod_modules'
|
Loading…
Reference in New Issue
Block a user