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

Reply via email to