summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Harper <ryan.harper@canonical.com>2018-04-17 20:07:59 -0500
committerRyan Harper <ryan.harper@canonical.com>2018-04-17 20:07:59 -0500
commit6a979bb2fabd187efc392de7b0852cd0361bc9b8 (patch)
tree4c9b732856b74fafafbb57cc50bff29b9adf72fa
parent49b562c94838f4e2c0aa0df01a5247d06bc8a561 (diff)
downloadvyos-cloud-init-6a979bb2fabd187efc392de7b0852cd0361bc9b8.tar.gz
vyos-cloud-init-6a979bb2fabd187efc392de7b0852cd0361bc9b8.zip
Implement bash completion script for cloud-init command line
In bash shells with bash_completion enabled, now the cloud-init sub commands and parameters/flags will be shown.
-rw-r--r--MANIFEST.in1
-rw-r--r--bash_completion/cloud-init77
-rw-r--r--packages/redhat/cloud-init.spec.in1
-rw-r--r--packages/suse/cloud-init.spec.in1
-rwxr-xr-xsetup.py1
5 files changed, 81 insertions, 0 deletions
diff --git a/MANIFEST.in b/MANIFEST.in
index 1a4d7711..57a85ea7 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,5 +1,6 @@
include *.py MANIFEST.in LICENSE* ChangeLog
global-include *.txt *.rst *.ini *.in *.conf *.cfg *.sh
+graft bash_completion
graft config
graft doc
graft packages
diff --git a/bash_completion/cloud-init b/bash_completion/cloud-init
new file mode 100644
index 00000000..581432c8
--- /dev/null
+++ b/bash_completion/cloud-init
@@ -0,0 +1,77 @@
+# Copyright (C) 2018 Canonical Ltd.
+#
+# This file is part of cloud-init. See LICENSE file for license information.
+
+# bash completion for cloud-init cli
+_cloudinit_complete()
+{
+
+ local cur_word prev_word
+ cur_word="${COMP_WORDS[COMP_CWORD]}"
+ prev_word="${COMP_WORDS[COMP_CWORD-1]}"
+
+ subcmds="analyze clean collect-logs devel dhclient-hook features init modules single status"
+ base_params="--help --file --version --debug --force"
+ case ${COMP_CWORD} in
+ 1)
+ COMPREPLY=($(compgen -W "$base_params $subcmds" -- $cur_word))
+ ;;
+ 2)
+ case ${prev_word} in
+ analyze)
+ COMPREPLY=($(compgen -W "--help blame dump show" -- $cur_word))
+ ;;
+ clean)
+ COMPREPLY=($(compgen -W "--help --logs --reboot --seed" -- $cur_word))
+ ;;
+ collect-logs)
+ COMPREPLY=($(compgen -W "--help --tarfile --include-userdata" -- $cur_word))
+ ;;
+ devel)
+ COMPREPLY=($(compgen -W "--help schema" -- $cur_word))
+ ;;
+ dhclient-hook|features)
+ COMPREPLY=($(compgen -W "--help" -- $cur_word))
+ ;;
+ init)
+ COMPREPLY=($(compgen -W "--help --local" -- $cur_word))
+ ;;
+ modules)
+ COMPREPLY=($(compgen -W "--help --mode" -- $cur_word))
+ ;;
+
+ single)
+ COMPREPLY=($(compgen -W "--help --name --frequency --report" -- $cur_word))
+ ;;
+ status)
+ COMPREPLY=($(compgen -W "--help --long --wait" -- $cur_word))
+ ;;
+ esac
+ ;;
+ 3)
+ case ${prev_word} in
+ blame|dump)
+ COMPREPLY=($(compgen -W "--help --infile --outfile" -- $cur_word))
+ ;;
+ --mode)
+ COMPREPLY=($(compgen -W "--help init config final" -- $cur_word))
+ ;;
+ --frequency)
+ COMPREPLY=($(compgen -W "--help instance always once" -- $cur_word))
+ ;;
+ schema)
+ COMPREPLY=($(compgen -W "--help --config-file --doc --annotate" -- $cur_word))
+ ;;
+ show)
+ COMPREPLY=($(compgen -W "--help --format --infile --outfile" -- $cur_word))
+ ;;
+ esac
+ ;;
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+}
+complete -F _cloudinit_complete cloud-init
+
+# vi: syntax=bash expandtab
diff --git a/packages/redhat/cloud-init.spec.in b/packages/redhat/cloud-init.spec.in
index 6ab0d20b..91faf3c6 100644
--- a/packages/redhat/cloud-init.spec.in
+++ b/packages/redhat/cloud-init.spec.in
@@ -197,6 +197,7 @@ fi
%dir %{_sysconfdir}/cloud/templates
%config(noreplace) %{_sysconfdir}/cloud/templates/*
%config(noreplace) %{_sysconfdir}/rsyslog.d/21-cloudinit.conf
+%{_sysconfdir}/bash_completion.d/cloud-init
%{_libexecdir}/%{name}
%dir %{_sharedstatedir}/cloud
diff --git a/packages/suse/cloud-init.spec.in b/packages/suse/cloud-init.spec.in
index 86e18b1b..bbb965a7 100644
--- a/packages/suse/cloud-init.spec.in
+++ b/packages/suse/cloud-init.spec.in
@@ -136,6 +136,7 @@ mkdir -p %{buildroot}/var/lib/cloud
%config(noreplace) %{_sysconfdir}/cloud/cloud.cfg.d/README
%dir %{_sysconfdir}/cloud/templates
%config(noreplace) %{_sysconfdir}/cloud/templates/*
+%{_sysconfdir}/bash_completion.d/cloud-init
# Python code is here...
%{python_sitelib}/*
diff --git a/setup.py b/setup.py
index bc3f52ac..85b2337a 100755
--- a/setup.py
+++ b/setup.py
@@ -228,6 +228,7 @@ if not in_virtualenv():
INITSYS_ROOTS[k] = "/" + INITSYS_ROOTS[k]
data_files = [
+ (ETC + '/bash_completion.d', ['bash_completion/cloud-init']),
(ETC + '/cloud', [render_tmpl("config/cloud.cfg.tmpl")]),
(ETC + '/cloud/cloud.cfg.d', glob('config/cloud.cfg.d/*')),
(ETC + '/cloud/templates', glob('templates/*')),