204 lines
6.5 KiB
Diff
204 lines
6.5 KiB
Diff
commit afb4535accaa08e20050a7b2d508d884b02f45a0
|
|
Author: Saleem Abdulrasool <compnerd@compnerd.org>
|
|
Date: Mon Nov 19 15:35:03 2007 -0800
|
|
|
|
add zsh completion and optionalize bash and zsh completion
|
|
|
|
Signed-off-by: Saleem Abdulrasool <compnerd@compnerd.org>
|
|
|
|
diff --git a/configure.in b/configure.in
|
|
index 2fdb935..a9ea35a 100644
|
|
--- a/configure.in
|
|
+++ b/configure.in
|
|
@@ -495,6 +495,21 @@ AC_DEFINE_UNQUOTED(PAM_FILE_INCLUDE_PASSWORD, "$PAM_FILE_INCLUDE_PASSWORD", [pam
|
|
AC_DEFINE_UNQUOTED(PAM_FILE_INCLUDE_SESSION, "$PAM_FILE_INCLUDE_SESSION", [pam file session])
|
|
|
|
# ********************
|
|
+# Shell Completion
|
|
+# ********************
|
|
+
|
|
+AC_ARG_WITH([bash-completion],
|
|
+ AC_HELP_STRING([--with-bash-completion],[Install bash completion scripts]),,
|
|
+ [with_bash_completion=yes])
|
|
+
|
|
+AC_ARG_WITH([zsh-completion],
|
|
+ AC_HELP_STRING([--with-zsh-completion],[Install zsh completion scripts]),,
|
|
+ [with_zsh_completion=no])
|
|
+
|
|
+AM_CONDITIONAL([WITH_BASH_COMPLETION], test x"$with_bash_completion" != x"no")
|
|
+AM_CONDITIONAL([WITH_ZSH_COMPLETION], test x"$with_zsh_completion" != x"no")
|
|
+
|
|
+# ********************
|
|
# Internationalisation
|
|
# ********************
|
|
|
|
diff --git a/tools/Makefile.am b/tools/Makefile.am
|
|
index a76e9fc..0449e12 100644
|
|
--- a/tools/Makefile.am
|
|
+++ b/tools/Makefile.am
|
|
@@ -25,10 +25,17 @@ polkit_auth_LDADD = @GLIB_LIBS@ @DBUS_LIBS@ $(top_builddir)/src/polkit/libpolkit
|
|
polkit_action_SOURCES = polkit-action.c
|
|
polkit_action_LDADD = $(top_builddir)/src/polkit/libpolkit.la
|
|
|
|
+if WITH_BASH_COMPLETION
|
|
profiledir = $(sysconfdir)/profile.d
|
|
profile_SCRIPTS = polkit-bash-completion.sh
|
|
+endif
|
|
|
|
-EXTRA_DIST = $(profile_SCRIPTS)
|
|
+if WITH_ZSH_COMPLETION
|
|
+zshcompletiondir = $(DESTDIR)$(datadir)/zsh/site-functions
|
|
+zshcompletion_SCRIPTS = _polkit _polkit_auth _polkit_action
|
|
+endif
|
|
+
|
|
+EXTRA_DIST = polkit-bash-completion.sh _polkit _polkit_auth _polkit_action
|
|
|
|
clean-local :
|
|
rm -f *~ polkit-reload-config
|
|
diff --git a/tools/_polkit b/tools/_polkit
|
|
new file mode 100644
|
|
index 0000000..bc7bdac
|
|
--- /dev/null
|
|
+++ b/tools/_polkit
|
|
@@ -0,0 +1,54 @@
|
|
+#autoload
|
|
+
|
|
+# vim: set et sw=3 sts=3 ts=3 ft=zsh:
|
|
+# ZSH Completion for polkit-auth
|
|
+# Written by Saleem Abdulrasool <compnerd@compnerd.org>
|
|
+# Usage: _polkit actions|constraints|authorization|overriden-actions|obtainable-actions|authorized-actions
|
|
+
|
|
+_polkit_actions() {
|
|
+ local actions
|
|
+ actions=( $(polkit-action) )
|
|
+ compadd "$@" -k actions
|
|
+}
|
|
+
|
|
+_polkit_constraints() {
|
|
+ local constraints
|
|
+ constraints=( local active local+active )
|
|
+ compadd "$@" -k constraints
|
|
+}
|
|
+
|
|
+_polkit_authorization() {
|
|
+ local authorization
|
|
+ authorization=( no auth_admin_one_shot auth_admin auth_admin_keep_session auth_admin_keep_always auth_self_one_shot auth_self auth_self_keep_session auth_self_keep_always yes )
|
|
+ compadd "$@" -k authorization
|
|
+}
|
|
+
|
|
+_polkit_overriden_actions() {
|
|
+ local overrides
|
|
+ overrides=( $(polkit-action --show-overrides) )
|
|
+ compadd "$@" -k overrides
|
|
+}
|
|
+
|
|
+_polkit_obtainable_actions() {
|
|
+ local actions
|
|
+ actions=( $(polkit-auth --show-obtainable) )
|
|
+ compadd "$@" -k actions
|
|
+}
|
|
+
|
|
+_polkit_authorized_actions() {
|
|
+ local actions
|
|
+ actions=( $(polkit-auth --explicit) )
|
|
+ compadd "$@" -k actions
|
|
+}
|
|
+
|
|
+_polkit() {
|
|
+ local command="$argv[$#]"
|
|
+
|
|
+ [[ "$command" == (actions|constraints|authorization|overriden-actions|obtainable-actions|authorized-actions) ]] || {
|
|
+ _message "unknown command: $command"
|
|
+ }
|
|
+
|
|
+ _polkit_${command/-/_}
|
|
+}
|
|
+
|
|
+_polkit "$@"
|
|
diff --git a/tools/_polkit_action b/tools/_polkit_action
|
|
new file mode 100644
|
|
index 0000000..7ec7365
|
|
--- /dev/null
|
|
+++ b/tools/_polkit_action
|
|
@@ -0,0 +1,24 @@
|
|
+#compdef polkit-action
|
|
+
|
|
+# vim: set et sw=3 sts=3 ts=3 ft=zsh:
|
|
+# ZSH Completion for polkit-action
|
|
+# Written by Saleem Abdulrasool <compnerd@compnerd.org>
|
|
+
|
|
+_polkit_action() {
|
|
+ local arguments
|
|
+
|
|
+ arguments=(
|
|
+ "(-)--action[Show detailed information about a specific action]:action:_polkit actions"
|
|
+ "(-)--reset-defaults[Reset the defaults for the specified action]:Overridden Action:_polkit overriden-actions"
|
|
+ "(-)--show-overrides[List actions where the defaults are overridden]"
|
|
+ "(-)--set-defaults-any[Override the any stanza for an action]:Action:_polkit _actions:Authorization:_polkit authorization"
|
|
+ "(-)--set-defaults-inactive[Override the inactive stanza for an action]:Action:polkit _actions:Authorization:_polkit authorization"
|
|
+ "(-)--set-defaults-active[Override the active stanza for an action]:Action:polkit _actions:Authorization:_polkit authorization"
|
|
+ "(-)--version[Display program version]"
|
|
+ "(-)--help[Display program help]"
|
|
+ )
|
|
+
|
|
+ _arguments $arguments
|
|
+}
|
|
+
|
|
+_polkit_action "$@"
|
|
diff --git a/tools/_polkit_auth b/tools/_polkit_auth
|
|
new file mode 100644
|
|
index 0000000..e70f1a0
|
|
--- /dev/null
|
|
+++ b/tools/_polkit_auth
|
|
@@ -0,0 +1,50 @@
|
|
+#compdef polkit-auth
|
|
+
|
|
+# vim: set et sw=3 sts=3 ts=3 ft=zsh:
|
|
+# ZSH Completion for polkit-auth
|
|
+# Written by Saleem Abdulrasool <compnerd@compnerd.org>
|
|
+
|
|
+_polkit_auth() {
|
|
+ local arguments action_arguments user_arguments grant_arguments
|
|
+ local commands actions grant=0
|
|
+
|
|
+ commands=( --show-obtainable --version --help )
|
|
+ actions=( --obtain --explicit --explicit-detail --grant --revoke )
|
|
+
|
|
+ for (( i = 0 ; i < ${#words[@]} ; i++ )) ; do
|
|
+ if [[ "${words[$i]##--#}" == "grant" ]] ; then
|
|
+ grant=1
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+
|
|
+ arguments=(
|
|
+ '(-)--show-obtainable[Show all actions that can be obtained via authentication]'
|
|
+ '(-)--version[Show version and exit]'
|
|
+ '(-)--help[Show help information]'
|
|
+ )
|
|
+
|
|
+ action_arguments=(
|
|
+ "($commands $actions)--obtain[Attempt to obtain authorization to do an action]:Obtainable Actions:_polkit obtainable-actions"
|
|
+ "($commands $actions)--explicit[Show explicit authorizations]"
|
|
+ "($commands $actions)--explicit-detail[Show detailed information about explicit authorizations]"
|
|
+ "($commands $actions)--grant[Grant an authorization for an action]:Obtainable Actions:_polkit actions"
|
|
+ "($commands $actions)--revoke[Revoke all authorization for an action]:Authorized Actions:_polkit authorized-actions"
|
|
+ )
|
|
+
|
|
+ user_arguments=(
|
|
+ "($commands)--user[The user the authorization applies to]:User:_users"
|
|
+ )
|
|
+
|
|
+ grant_arguments=(
|
|
+ "($commands)--constraint[Optional constraints on the granted authorization]:Constraint:_polkit constraints"
|
|
+ )
|
|
+
|
|
+ if [[ grant -eq 1 ]] ; then
|
|
+ _arguments $arguments $user_arguments $action_arguments $grant_arguments
|
|
+ else
|
|
+ _arguments $arguments $user_arguments $action_arguments
|
|
+ fi
|
|
+}
|
|
+
|
|
+_polkit_auth "$@"
|