From 465b9ee4dd7de13d7904a44546b21371b9842a7b Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Tue, 1 Sep 2020 20:13:50 +0800 Subject: [PATCH] Add bash completion support for nvtake --- nvchecker/tools.py | 10 ++++++++++ scripts/nvtake.bash_completion | 16 ++++++++++++++++ setup.py | 1 + 3 files changed, 27 insertions(+) create mode 100644 scripts/nvtake.bash_completion diff --git a/nvchecker/tools.py b/nvchecker/tools.py index 4a390dc..1916b74 100644 --- a/nvchecker/tools.py +++ b/nvchecker/tools.py @@ -85,3 +85,13 @@ def cmp() -> None: oldver = oldvers.get(name, None) if oldver != newver: print('%s %s -> %s' % (name, oldver, newver)) + +def completion() -> None: + parser = argparse.ArgumentParser(description='helper script to generate completion for nvchecker') + core.add_common_arguments(parser) + args = parser.parse_args() + if core.process_common_arguments(args): + return + + entries = core.load_file(args.file, use_keymanager=False)[0] + print(" ".join(entries)) diff --git a/scripts/nvtake.bash_completion b/scripts/nvtake.bash_completion new file mode 100644 index 0000000..adcc910 --- /dev/null +++ b/scripts/nvtake.bash_completion @@ -0,0 +1,16 @@ +# MIT licensed +# Copyright (c) 2020 Felix Yan , et al. + +_nvtake() { + local cur _nvchecker_conf_mtime + _init_completion || return + + _nvchecker_conf_mtime=$(stat -c %Y $HOME/.config/nvchecker/nvchecker.toml) + if [ -z "$_nvtake_completion_cache" -o "$_nvchecker_conf_mtime" != "$_nvchecker_conf_mtime_cached" ]; then + _nvtake_completion_cache="$(nvcompletion)" + _nvchecker_conf_mtime_cached=$_nvchecker_conf_mtime + fi + + COMPREPLY=( $(compgen -W "$_nvtake_completion_cache" -- "$cur") ) +} && + complete -F _nvtake nvtake diff --git a/setup.py b/setup.py index 798ffb3..e738e4a 100755 --- a/setup.py +++ b/setup.py @@ -36,6 +36,7 @@ setup( 'nvchecker = nvchecker.__main__:main', 'nvtake = nvchecker.tools:take', 'nvcmp = nvchecker.tools:cmp', + 'nvcompletion = nvchecker.tools:completion', ], }, scripts=['scripts/nvchecker-ini2toml'],