On Mon, May 25, 2020 at 5:50 PM Topi Miettinen <toiwoton@xxxxxxxxx> wrote: > > List modules for bash completion of `semanage module`. > > Signed-off-by: Topi Miettinen <toiwoton@xxxxxxxxx> > --- > 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 >