mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			28 lines
		
	
	
	
		
			954 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
	
		
			954 B
		
	
	
	
		
			Text
		
	
	
	
	
	
#compdef -p */(init|rc[0-9S]#).d/*
 | 
						|
 | 
						|
local magic cmds what script
 | 
						|
 | 
						|
_compskip=all
 | 
						|
 | 
						|
# This should probably be system specific...
 | 
						|
 | 
						|
script=$words[1]
 | 
						|
[[ $script = */* ]] || script=/etc/init.d/$script
 | 
						|
 | 
						|
# 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 -u0 -k2 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
 |