zsh-workers
 help / color / mirror / code / Atom feed
From: Borsenkow Andrej <Andrej.Borsenkow@mow.siemens.ru>
To: "'Zsh hackers list'" <zsh-workers@sunsite.dk>
Subject: PATCH: _chkconfig, _service
Date: Fri, 19 Apr 2002 12:23:18 +0400	[thread overview]
Message-ID: <001101c1e77b$776bed40$1fc1f2a3@mow.siemens.ru> (raw)

[-- Attachment #1: Type: text/plain, Size: 446 bytes --]

This adds support for chkconfig and service. I put them in RedHat
because they originate there, but I have only Mandrake so actual usage
may differ. Would anybody with RedHat check if it is correct for him and
modify if needed (but please preserve current usage for Mandrake; you
can test for Mandrake with /etc/mandrake-release).

It adds a couple of helpers and modifies _init_d to use them. If there
are no objections I commit them.

-andrej


[-- Attachment #2: zsh-initscripts.diff --]
[-- Type: application/octet-stream, Size: 5337 bytes --]

Index: Completion/Redhat/Command/_chkconfig
===================================================================
RCS file: Completion/Redhat/Command/_chkconfig
diff -N Completion/Redhat/Command/_chkconfig
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ Completion/Redhat/Command/_chkconfig	19 Apr 2002 08:18:11 -0000
@@ -0,0 +1,9 @@
+#compdef chkconfig
+
+_arguments \
+	"(: --add --del --level)--list[list available services]:available services:_init_scripts" \
+	"(: --add --list --level)--del[remove service]:available services:_init_scripts" \
+	"(: --del --list --level)--add[add service]:available services:_init_scripts" \
+	"(--add --del --list)--level[specify runlevel]:run level:(0 1 2 3 4 5 6 s)" \
+	":service name:_init_scripts" \
+	":state:(on off reset)"
Index: Completion/Redhat/Command/_service
===================================================================
RCS file: Completion/Redhat/Command/_service
diff -N Completion/Redhat/Command/_service
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ Completion/Redhat/Command/_service	19 Apr 2002 08:18:11 -0000
@@ -0,0 +1,15 @@
+#compdef service
+
+# *:: for last argument looks more like a hack but it is
+# the simplest way known to me to reset $words and keep
+# _sub_command happy
+
+_arguments -s \
+    '(-d --debug)'{-d,--debug}'[turn debugging on]' \
+    '(- :)'{-h,--help}'[print usage]' \
+    '(- :)'{-v,--version}'[print version]' \
+    '(-)'{-f,--full-restart}'[restart service]' \
+    '(- :)'{-R,--full-restart-all}'[restart all services]' \
+    '(- :)'{-s,--status-all}'[print status of all services]' \
+    ':service name:_init_scripts' \
+    '*::service argument:{_initscript_argument $words[CURRENT]}'
Index: Completion/Unix/Command/_init_d
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_init_d,v
retrieving revision 1.2
diff -u -r1.2 _init_d
--- Completion/Unix/Command/_init_d	30 Jan 2002 03:38:30 -0000	1.2
+++ Completion/Unix/Command/_init_d	19 Apr 2002 08:18:11 -0000
@@ -1,23 +1,3 @@
 #compdef -P */(init|rc[0-9S]#).d/*
 
-local magic cmds what
-
-# This should probably be system specific...
-
-# If the file starts with `#!' we hope that this is a shell script
-# and get lines looking like <space>foo|bar) with the words in $what.
-
-what='(st(art|op|atus)|(force-|)re(start|load)|debug_(up|down)|dump(|_stats)|add|delete|clean|list)'
-
-[[ -f $words[1] ]] && read -u0k 2 magic < $words[1] && [[ $magic = '#!' ]] &&
-    cmds=( ${${(j:|:s:|:)${(M)${(f)"$(< $words[1])"}:#[[:blank:]]#\'#${~what}(\|${~what})#\'#\)*}}//[^a-z_-]} )
-
-# This would be the pattern to use every line of the form <space>foo).
-# Some people say this might match too many lines...
-#
-#    cmds=( ${${(j:|:s:|:)${(M)${(f)"$(< $words[1])"}:#[[:blank:]]#(\'|)[a-z_|]##(\'|)\)}}//[^a-z_]} )
-
-(( $#cmds )) || zstyle -a ":completion:${curcontext}:commands" commands cmds ||
-    cmds=(start stop)
-
-_sub_commands $cmds
+_initscript_argument $words[CURRENT]
Index: Completion/Unix/Type/_init_scripts
===================================================================
RCS file: Completion/Unix/Type/_init_scripts
diff -N Completion/Unix/Type/_init_scripts
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ Completion/Unix/Type/_init_scripts	19 Apr 2002 08:18:11 -0000
@@ -0,0 +1,16 @@
+#autoload
+
+local expl
+local -a services
+
+# exclude backup files and RPM leftovers
+services=(/etc/init.d/*~(*~|*.orig|*.rpmnew|*.rpmsave|*.rpmorig)(N:t))
+
+# remove those that are known to not be real initscripts
+if [[ -f /etc/mandrake-release ]]; then
+    services=(${services:#(functions|mandrake_firstime|mandrake_everytime|mandrake_consmap)})
+elif [[ -f /etc/redhat-release ]]; then
+    services=(${services:#functions})
+fi
+
+_wanted initscripts expl 'init scripts' compadd "$@" -a services
Index: Completion/Unix/Type/_initscript_argument
===================================================================
RCS file: Completion/Unix/Type/_initscript_argument
diff -N Completion/Unix/Type/_initscript_argument
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ Completion/Unix/Type/_initscript_argument	19 Apr 2002 08:18:11 -0000
@@ -0,0 +1,33 @@
+#autoload
+
+local magic cmds what script
+
+(( $# == 1 )) || return 1
+
+# This should probably be system specific...
+
+if [[ -f $1 ]]; then
+    script=$1
+elif [ -f /etc/init.d/$1 ]]; then
+    script=/etc/init.d/$1
+fi
+
+(( $#script )) || return 1
+
+# If the file starts with `#!' we hope that this is a shell script
+# and get lines looking like <space>foo|bar) with the words in $what.
+
+what='(st(art|op|atus)|(force-|)re(start|load)|debug_(up|down)|dump(|_stats)|add|delete|clean|list)'
+
+read -u0k 2 magic < $script && [[ $magic = '#!' ]] &&
+    cmds=( ${${(j:|:s:|:)${(M)${(f)"$(< $script)"}:#[[:blank:]]#(\'|)${~what}(|${~what})#(\'|)\)}}//[^a-z_]} )
+
+# This would be the pattern to use every line of the form <space>foo).
+# Some people say this might match too many lines...
+#
+#    cmds=( ${${(j:|:s:|:)${(M)${(f)"$(< $script)"}:#[[:blank:]]#(\'|)[a-z_|]##(\'|)\)}}//[^a-z_]} )
+
+(( $#cmds )) || zstyle -a ":completion:${curcontext}:commands" commands cmds ||
+    cmds=(start stop)
+
+_sub_commands $cmds

             reply	other threads:[~2002-04-19  8:23 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-04-19  8:23 Borsenkow Andrej [this message]
2002-04-19 16:22 ` Oliver Kiddle
2002-05-06  7:15   ` Borsenkow Andrej

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='001101c1e77b$776bed40$1fc1f2a3@mow.siemens.ru' \
    --to=andrej.borsenkow@mow.siemens.ru \
    --cc=zsh-workers@sunsite.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).