semanage bash completion: handle semanage module #246
diff mbox series

Message ID 20200525194750.17309-1-toiwoton@gmail.com
State Superseded
Headers show
Series
  • semanage bash completion: handle semanage module #246
Related show

Commit Message

Topi Miettinen May 25, 2020, 7:47 p.m. UTC
List modules for bash completion of `semanage module`.

Signed-off-by: Topi Miettinen <toiwoton@gmail.com>
---
 python/semanage/semanage-bash-completion.sh | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Stephen Smalley May 29, 2020, 1:57 p.m. UTC | #1
On Mon, May 25, 2020 at 5:50 PM Topi Miettinen <toiwoton@gmail.com> wrote:
>
> List modules for bash completion of `semanage module`.
>
> Signed-off-by: Topi Miettinen <toiwoton@gmail.com>
> ---
>  python/semanage/semanage-bash-completion.sh | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/python/semanage/semanage-bash-completion.sh b/python/semanage/semanage-bash-completion.sh
> index 2d811c98..a3993c58 100644
> --- a/python/semanage/semanage-bash-completion.sh
> +++ b/python/semanage/semanage-bash-completion.sh
> @@ -54,6 +54,9 @@ __get_all_roles () {
>  __get_all_stores () {
>      dir -1 -F /etc/selinux/ | grep '/' | cut -d'/' -f 1
>  }
> +__get_all_modules () {
> +    semodule -l
> +}
>  __get_import_opts () { echo '$ALL_OPTS --f --input_file' ; }
>  __get_export_opts () { echo '$ALL_OPTS --f --output_file' ; }
>  __get_boolean_opts () { echo '$ALL_OPTS --on -off -1 -0' ; }
> @@ -88,6 +91,14 @@ _semanage () {
>         if   [ "$prev" = "-a" -a "$command" = "permissive" ]; then
>                 COMPREPLY=( $(compgen -W "$( __get_all_domains ) " -- "$cur") )
>                 return 0
> +       elif [ "$command" = "module" ]; then
> +               if [ "$prev" = "-a" ] || [ "$prev" = "--add" ] \

For -a we likely don't want this because the argument should be a
module file path not an already installed module name.

> +                   || [ "$prev" = "-d" ] || [ "$prev" = "--disable" ] \
> +                   || [ "$prev" = "-e" ] || [ "$prev" = "--enable" ] \
> +                   || [ "$prev" = "-r" ] || [ "$prev" = "--remove" ]; then
> +                   COMPREPLY=( $(compgen -W "$( __get_all_modules ) " -- "$cur") )
> +                   return 0
> +               fi
>         fi
>         if   [ "$verb" = "" -a "$prev" = "semanage" ]; then
>                  comps="${VERBS[*]}"
> --
> 2.26.2
>

Patch
diff mbox series

diff --git a/python/semanage/semanage-bash-completion.sh b/python/semanage/semanage-bash-completion.sh
index 2d811c98..a3993c58 100644
--- a/python/semanage/semanage-bash-completion.sh
+++ b/python/semanage/semanage-bash-completion.sh
@@ -54,6 +54,9 @@  __get_all_roles () {
 __get_all_stores () {
     dir -1 -F /etc/selinux/ | grep '/' | cut -d'/' -f 1
 }
+__get_all_modules () {
+    semodule -l
+}
 __get_import_opts () { echo '$ALL_OPTS --f --input_file' ; }
 __get_export_opts () { echo '$ALL_OPTS --f --output_file' ; }
 __get_boolean_opts () { echo '$ALL_OPTS --on -off -1 -0' ; }
@@ -88,6 +91,14 @@  _semanage () {
 	if   [ "$prev" = "-a" -a "$command" = "permissive" ]; then
 	        COMPREPLY=( $(compgen -W "$( __get_all_domains ) " -- "$cur") )
 		return 0
+	elif [ "$command" = "module" ]; then
+		if [ "$prev" = "-a" ] || [ "$prev" = "--add" ] \
+		    || [ "$prev" = "-d" ] || [ "$prev" = "--disable" ] \
+		    || [ "$prev" = "-e" ] || [ "$prev" = "--enable" ] \
+		    || [ "$prev" = "-r" ] || [ "$prev" = "--remove" ]; then
+	            COMPREPLY=( $(compgen -W "$( __get_all_modules ) " -- "$cur") )
+		    return 0
+		fi
 	fi
 	if   [ "$verb" = "" -a "$prev" = "semanage" ]; then
                 comps="${VERBS[*]}"