Quoting Stéphane Graber ([email protected]): > This adds a basic bash auto-completion profile. > > It supports 3 things at this time: > - Auto-complete of container name (-n or -o) > - Auto-complete of template name (-t) > - Auto-complete of state names (-s) > > It's configured in a way to be as little disruptive as possible, any > argument that's not explicitly handled by the profile will fallack to > bash's default completion. > > Signed-off-by: Stéphane Graber <[email protected]>
Acked-by: Serge E. Hallyn <[email protected]> > --- > config/Makefile.am | 2 +- > config/bash/Makefile.am | 14 +++++++ > config/bash/lxc.in | 105 > ++++++++++++++++++++++++++++++++++++++++++++++++ > configure.ac | 9 +++++ > 4 files changed, 129 insertions(+), 1 deletion(-) > create mode 100644 config/bash/Makefile.am > create mode 100644 config/bash/lxc.in > > diff --git a/config/Makefile.am b/config/Makefile.am > index f9ce6fb..9515965 100644 > --- a/config/Makefile.am > +++ b/config/Makefile.am > @@ -1 +1 @@ > -SUBDIRS = apparmor etc init templates > +SUBDIRS = apparmor bash etc init templates > diff --git a/config/bash/Makefile.am b/config/bash/Makefile.am > new file mode 100644 > index 0000000..b1768c9 > --- /dev/null > +++ b/config/bash/Makefile.am > @@ -0,0 +1,14 @@ > +EXTRA_DIST = lxc > + > +if ENABLE_BASH > +install-bash: > + $(MKDIR_P) $(DESTDIR)$(sysconfdir)/bash_completion.d/ > + $(INSTALL_DATA) lxc $(DESTDIR)$(sysconfdir)/bash_completion.d/ > + > +uninstall-bash: > + rm -f $(DESTDIR)$(sysconfdir)/bash_completion.d/lxc > + rmdir $(DESTDIR)$(sysconfdir)/bash_completion.d/ || : > + > +install-data-local: install-bash > +uninstall-local: uninstall-bash > +endif > diff --git a/config/bash/lxc.in b/config/bash/lxc.in > new file mode 100644 > index 0000000..c1c9041 > --- /dev/null > +++ b/config/bash/lxc.in > @@ -0,0 +1,105 @@ > +#!bash > + > +have lxc-start && { > + _lxc_names() { > + COMPREPLY=( $( compgen -W "$( lxc-ls )" "$cur" ) ) > + } > + > + _lxc_states() { > + COMPREPLY=( $( compgen -W "STOPPED STARTING RUNNING STOPPING > ABORTING FREEZING FROZEN THAWED" "$cur" ) ) > + } > + > + _lxc_templates() { > + COMPREPLY=( $( compgen -W "$(ls @LXCTEMPLATEDIR@/ | sed -e > 's|^lxc-||' )" "$cur" ) ) > + } > + > + _lxc-generic-n() { > + local cur prev > + > + COMPREPLY=() > + _get_comp_words_by_ref cur prev > + > + case $prev in > + -n) > + _lxc_names "$cur" > + return 0 > + ;; > + esac > + > + return 1 > + } > + > + _lxc-generic-ns() { > + local cur prev > + > + COMPREPLY=() > + _get_comp_words_by_ref cur prev > + > + case $prev in > + -n) > + _lxc_names "$cur" > + return 0 > + ;; > + > + -s) > + _lxc_states "$cur" > + return 0 > + ;; > + esac > + > + return 1 > + } > + > + _lxc-generic-t() { > + local cur prev > + > + COMPREPLY=() > + _get_comp_words_by_ref cur prev > + > + case $prev in > + -t) > + _lxc_templates "$cur" > + return 0 > + ;; > + esac > + > + return 1 > + } > + > + _lxc-generic-o() { > + local cur prev > + > + COMPREPLY=() > + _get_comp_words_by_ref cur prev > + > + case $prev in > + -o) > + _lxc_names "$cur" > + return 0 > + ;; > + esac > + > + return 1 > + } > + > + complete -o default -F _lxc-generic-n lxc-attach > + complete -o default -F _lxc-generic-n lxc-cgroup > + complete -o default -F _lxc-generic-n lxc-console > + complete -o default -F _lxc-generic-n lxc-destroy > + complete -o default -F _lxc-generic-n lxc-device > + complete -o default -F _lxc-generic-n lxc-execute > + complete -o default -F _lxc-generic-n lxc-freeze > + complete -o default -F _lxc-generic-n lxc-info > + complete -o default -F _lxc-generic-n lxc-monitor > + complete -o default -F _lxc-generic-n lxc-snapshot > + complete -o default -F _lxc-generic-n lxc-start > + complete -o default -F _lxc-generic-n lxc-stop > + complete -o default -F _lxc-generic-n lxc-unfreeze > + > + complete -o default -F _lxc-generic-ns lxc-wait > + > + complete -o default -F _lxc-generic-t lxc-create > + > + complete -o default -F _lxc-generic-o lxc-clone > + complete -o default -F _lxc-generic-o lxc-start-ephemeral > +} > diff --git a/configure.ac b/configure.ac > index 4179dcf..aad5760 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -385,6 +385,12 @@ AM_COND_IF([ENABLE_LUA], > [LUA_INSTALL_LMOD=$datadir/lua/$LUA_VERSION]) > ]) > > +# Optional bash integration > +AC_ARG_ENABLE([bash], > + [AC_HELP_STRING([--enable-bash], [build bash integration > [default=yes]])], > + [], [enable_bash=yes]) > +AM_CONDITIONAL([ENABLE_BASH], [test "x$enable_bash" = "xyes"]) > + > # Optional test binaries > AC_ARG_ENABLE([tests], > [AC_HELP_STRING([--enable-tests], [build test/example binaries > [default=no]])], > @@ -548,6 +554,8 @@ AC_CONFIG_FILES([ > > config/Makefile > config/apparmor/Makefile > + config/bash/Makefile > + config/bash/lxc > config/init/Makefile > config/init/sysvinit/Makefile > config/init/systemd/Makefile > @@ -701,6 +709,7 @@ Environment: > - init script type(s): $init_script > - rpath: $enable_rpath > - GnuTLS: $enable_gnutls > + - Bash integration: $enable_bash > > Security features: > - Apparmor: $enable_apparmor > -- > 1.8.5.3 > > _______________________________________________ > lxc-devel mailing list > [email protected] > http://lists.linuxcontainers.org/listinfo/lxc-devel _______________________________________________ lxc-devel mailing list [email protected] http://lists.linuxcontainers.org/listinfo/lxc-devel
