mirror of https://gitee.com/openkylin/dkms.git
113 lines
2.1 KiB
Plaintext
113 lines
2.1 KiB
Plaintext
# bash completion for dkms
|
|
# Copied from the Mandriva dkms package
|
|
|
|
# This function complete on available kernels
|
|
#
|
|
_kernels()
|
|
{
|
|
COMPREPLY=( $( cd /lib/modules && compgen -d -- "$cur" ) )
|
|
}
|
|
|
|
# complete on full directory names under $1
|
|
_subdirectories()
|
|
{
|
|
COMPREPLY=( $( cd $1 && compgen -d -- "$cur" ) )
|
|
}
|
|
|
|
# complete on $2 part of filenames matching pattern $1 under /usr/src
|
|
_filename_parts()
|
|
{
|
|
COMPREPLY=( $( command ls -F /usr/src/ 2>/dev/null | grep -E '^'$1'/$' \
|
|
| sed -r -e 's/^([^-]+)-(.+)\/$/\'$2'/' | grep "^$cur" ) )
|
|
}
|
|
|
|
_dkms()
|
|
{
|
|
local cur prev command module i
|
|
|
|
COMPREPLY=()
|
|
cur=${COMP_WORDS[COMP_CWORD]}
|
|
|
|
if [[ $COMP_CWORD -eq 1 ]] ; then
|
|
COMPREPLY=( $( compgen -W "add autoinstall remove build unbuild install uninstall \
|
|
match mktarball ldtarball \
|
|
status" -- $cur ) )
|
|
else
|
|
|
|
prev=${COMP_WORDS[COMP_CWORD-1]}
|
|
command=${COMP_WORDS[1]}
|
|
case $prev in
|
|
-m)
|
|
if [ "$command" = 'add' ]; then
|
|
_filename_parts '.*-.*' 1
|
|
else
|
|
_subdirectories /var/lib/dkms
|
|
fi
|
|
return 0
|
|
;;
|
|
-v)
|
|
for (( i=1; i < COMP_CWORD; i++ )); do
|
|
if [[ "${COMP_WORDS[i]}" == -m ]]; then
|
|
module=${COMP_WORDS[i+1]}
|
|
break
|
|
fi
|
|
done
|
|
if [ -n "$module" ]; then
|
|
if [ "$command" = 'add' ]; then
|
|
_filename_parts "$module-.*" 2
|
|
else
|
|
_subdirectories /var/lib/dkms/$module
|
|
fi
|
|
return 0
|
|
fi
|
|
;;
|
|
-k)
|
|
_kernels
|
|
return 0
|
|
;;
|
|
-@\(c|-spec|-archive|-config\))
|
|
_filedir
|
|
return 0
|
|
;;
|
|
--kernelsourcedir)
|
|
_filedir -d
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
|
|
if [[ "$cur" == -* ]]; then
|
|
case $command in
|
|
add)
|
|
options='-c --rpm_safe_upgrade'
|
|
;;
|
|
remove)
|
|
options='--rpm_safe_upgrade'
|
|
;;
|
|
build)
|
|
options='--config --force'
|
|
;;
|
|
install)
|
|
options='--force'
|
|
;;
|
|
ldtarball)
|
|
options='--archive --force'
|
|
;;
|
|
mktarball)
|
|
options='--source-only --binaries-only'
|
|
;;
|
|
match)
|
|
options='--templatekernel'
|
|
;;
|
|
esac
|
|
|
|
options="$options -m -v -k -a --arch -q --quiet -V \
|
|
--version --all --kernelsourcedir \
|
|
--directive"
|
|
|
|
COMPREPLY=( $( compgen -W "$options" -- $cur ) )
|
|
fi
|
|
fi
|
|
}
|
|
complete -F _dkms dkms
|