bashcompletiondir=@bashcompletiondir@
dist_bashcompletion_DATA = \
- shell-completion/bash/kmod
+ shell-completion/bash/kmod \
+ shell-completion/bash/lsmod
+
+fishcompletiondir=@fishcompletiondir@
+dist_fishcompletion_DATA = \
+ shell-completion/fish/lsmod.fish
+
+zshcompletiondir=@zshcompletiondir@
+dist_zshcompletion_DATA = \
+ shell-completion/zsh/_lsmod
install-exec-hook:
if BUILD_TOOLS
AM_DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc --sysconfdir=/etc \
--with-zlib --with-zstd --with-xz --with-openssl \
- --with-bashcompletiondir=$$dc_install_base/$(bashcompletiondir)
+ --with-bashcompletiondir=$$dc_install_base/$(bashcompletiondir) \
+ --with-fishcompletiondir=$$dc_install_base/$(fishcompletiondir) \
+ --with-zshcompletiondir=$$dc_install_base/$(zshcompletiondir)
distclean-local: $(DISTCLEAN_LOCAL_HOOKS)
])])
AC_SUBST([bashcompletiondir], [$with_bashcompletiondir])
+AC_ARG_WITH([fishcompletiondir],
+ AS_HELP_STRING([--with-fishcompletiondir=DIR], [Fish completions directory]),
+ [],
+ [AS_IF([$($PKG_CONFIG --exists fish)], [
+ with_fishcompletiondir=$($PKG_CONFIG --variable=completionsdir fish)
+ ] , [
+ with_fishcompletiondir=${datadir}/fish/vendor_functions.d
+ ])])
+AC_SUBST([fishcompletiondir], [$with_fishcompletiondir])
+
+AC_ARG_WITH([zshcompletiondir],
+ AS_HELP_STRING([--with-zshcompletiondir=DIR], [Zsh completions directory]),
+ [],
+ [with_zshcompletiondir=${datadir}/zsh/site-functions])
+AC_SUBST([zshcompletiondir], [$with_zshcompletiondir])
+
#####################################################################
# --enable-
#####################################################################
endif
cdata.set_quoted('MODULE_DIRECTORY', moduledir)
-bashcompletiondir = get_option('bashcompletiondir')
-if bashcompletiondir == ''
- bashcompletion = dependency('bash-completion', required : false)
- if bashcompletion.found()
- bashcompletiondir = bashcompletion.get_variable(pkgconfig : 'completionsdir')
- else
- bashcompletiondir = join_paths(get_option('prefix'), get_option('datadir'),
- 'bash-completion/completions')
+_completiondirs = [
+ ['bashcompletiondir', 'bash-completion', 'bash-completion/completions', 'shell-completion/bash/@0@'],
+ ['fishcompletiondir', 'fish', 'fish/vendor_functions.d', 'shell-completion/fish/@0@.fish'],
+ ['zshcompletiondir', '', 'zsh/site-functions', 'shell-completion/zsh/_@0@'],
+]
+
+foreach tuple : _completiondirs
+ dir_option = tuple[0]
+ pkg_dep = tuple[1]
+ def_path = tuple[2]
+ ins_path = tuple[3]
+
+ completiondir = get_option(dir_option)
+ if completiondir == ''
+ completion = dependency(pkg_dep, required : false)
+ if completion.found()
+ completiondir = completion.get_variable(pkgconfig : 'completionsdir')
+ else
+ completiondir = join_paths(get_option('prefix'), get_option('datadir'),
+ def_path)
+ endif
endif
-endif
+
+ _completions = [
+ 'lsmod',
+ ]
+
+ if completiondir != 'no'
+ foreach comp : _completions
+ install_data(
+ files(ins_path.format(comp)),
+ install_dir : completiondir,
+ )
+ endforeach
+ endif
+
+ # NEEDED solely for bash/kmod below
+ set_variable(dir_option, completiondir)
+endforeach
if bashcompletiondir != 'no'
install_data(
description : 'Bash completions directory. Use "no" to disable.',
)
+option(
+ 'fishcompletiondir',
+ type : 'string',
+ description : 'Fish completions directory. Use "no" to disable.',
+)
+
+option(
+ 'zshcompletiondir',
+ type : 'string',
+ description : 'Zsh completions directory. Use "no" to disable.',
+)
+
# Compression options
option(
'zstd',
--- /dev/null
+# lsmod(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
+
+_lsmod()
+{
+ # long/short opt pairs
+ local -A opts=(
+ ['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}"))
+ fi
+} &&
+ complete -F _lsmod lsmod
--- /dev/null
+# lsmod(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 lsmod -f
+
+complete -c lsmod -s s -l syslog -d 'print to syslog, not stderr'
+complete -c lsmod -s v -l verbose -d 'enables more messages'
+complete -c lsmod -s V -l version -d 'show version'
+complete -c lsmod -s h -l help -d 'show this help'
--- /dev/null
+#compdef lsmod
+
+# lsmod(8) completion -*- shell-script -*-
+# SPDX-License-Identifier: LGPL-2.1-or-later
+#
+# SPDX-FileCopyrightText: 2024 Emil Velikov <emil.l.velikov@gmail.com>
+
+_arguments \
+ {-s,--syslog}'[print to syslog, not stderr]' \
+ {-v,--verbose}'[enables more messages]' \
+ {-V,--version}'[show version]' \
+ {-h,--help}'[show this help]'