From: Aleš Mrázek Date: Sun, 18 Sep 2022 20:35:07 +0000 (+0200) Subject: manager: kresctl: scripts for shells completion added X-Git-Tag: v6.0.0a1~12^2~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ec359f42e4efcccd9a6b133394291476c3d6298;p=thirdparty%2Fknot-resolver.git manager: kresctl: scripts for shells completion added --- diff --git a/etc/meson.build b/etc/meson.build index 31859baf0..b2e250b9f 100644 --- a/etc/meson.build +++ b/etc/meson.build @@ -30,6 +30,7 @@ endif subdir('config') +subdir('shell-completion') install_data( sources: etc_files, diff --git a/etc/shell-completion/kresctl.bash b/etc/shell-completion/kresctl.bash new file mode 100644 index 000000000..736391329 --- /dev/null +++ b/etc/shell-completion/kresctl.bash @@ -0,0 +1,22 @@ +#/usr/bin/env bash + +# completion function for the kresctl +_kresctl_completion() { + local cur prev opts + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + + # get options + opts=$(kresctl completion --bash "${COMP_WORDS}") + + if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + fi + + return 0 +} + +# use the bash default completion for other arguments +complete -o filenames -o nospace -o bashdefault -F _kresctl_completion kresctl \ No newline at end of file diff --git a/etc/shell-completion/kresctl.fish b/etc/shell-completion/kresctl.fish new file mode 100644 index 000000000..8fc75a8f3 --- /dev/null +++ b/etc/shell-completion/kresctl.fish @@ -0,0 +1,6 @@ +function __fish_git + set -l args (commandline -pco) + eval command kresctl $args +end + +complete -c kresctl -a '(_kresctl_completion)' -f \ No newline at end of file diff --git a/etc/shell-completion/meson.build b/etc/shell-completion/meson.build new file mode 100644 index 000000000..64b1996e5 --- /dev/null +++ b/etc/shell-completion/meson.build @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +# Install kresctl completion for bash +install_data( + sources: 'kresctl.bash', + rename: 'kresctl', + install_dir: completions_dir / 'bash-completion' / 'completions', +) + +# Install kresctl completion for fish +install_data( + sources: 'kresctl.fish', + install_dir: completions_dir / 'fish' / 'vendor_completions.d', +) diff --git a/meson.build b/meson.build index 4f6778189..11e328748 100644 --- a/meson.build +++ b/meson.build @@ -59,6 +59,7 @@ systemd_cache_dir = prefix / get_option('localstatedir') / 'cache' / 'knot-resol systemd_unit_dir = prefix / 'lib' / 'systemd' / 'system' systemd_tmpfiles_dir = prefix / 'lib' / 'tmpfiles.d' systemd_sysusers_dir = prefix / 'lib' / 'sysusers.d' +completions_dir = prefix / 'usr' / 'share' mod_inc_dir = include_directories('.', 'contrib/') ## Trust anchors