| # insmod(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 |
| |
| _insmod() |
| { |
| # long/short opt pairs |
| local -A opts=( |
| ['force']='f' |
| ['force-modversion']='' |
| ['force-vermagic']='' |
| ['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 |
| # TODO: match only one file |
| _filedir '@(ko?(.gz|.xz|.zst))' |
| # TODO: add module parameter completion, based of modinfo |
| fi |
| } && |
| complete -F _insmod insmod |