mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef chroot gchroot
 | |
| 
 | |
| local variant ret=1
 | |
| local -a context line state state_descr args
 | |
| local -A opt_args
 | |
| 
 | |
| _pick_variant -r variant gnu='Free Soft' unix --version
 | |
| 
 | |
| variant+=-$OSTYPE
 | |
| 
 | |
| case $variant in
 | |
|   gnu-*)
 | |
|     args=(
 | |
|       '(: -)--help[display help information]'
 | |
|       '(: -)--version[display version information]'
 | |
|       '--groups=[specify supplemental group memberships]: :_sequence -s , _groups'
 | |
|       '--userspec=[specify user and group to run process as]: :->userspecs'
 | |
|       '--skip-chdir[do not change working directory to /]'
 | |
|     )
 | |
|     ;;
 | |
|   *-openbsd*)
 | |
|     args=(
 | |
|       '-u+[specify user to run process as]: :_users'
 | |
|       '-g+[specify group to run process as, and supplemental group memberships]: :_sequence -s , _groups'
 | |
|     )
 | |
|     ;;
 | |
|   *-(darwin|dragonfly|freebsd|netbsd)*)
 | |
|     args=(
 | |
|       '-u+[specify user to run process as]: :_users'
 | |
|       '-g+[specify group to run process as]: :_groups'
 | |
|       '-G+[specify supplemental group memberships]: :_sequence -s , _groups'
 | |
|     )
 | |
|     ;;
 | |
| esac
 | |
| 
 | |
| args+=( '1:new root directory:_directories' '*:::command:_normal' )
 | |
| 
 | |
| _arguments -s -S : $args && ret=0
 | |
| 
 | |
| # @todo user:group specs are probably used often enough to justify making a type
 | |
| # function for this (see also `chown`, `cpio`, `rsync`, ...)
 | |
| [[ $state == userspecs ]] &&
 | |
| if compset -P '*:*:'; then
 | |
|   ret=1
 | |
| elif compset -P '*:'; then
 | |
|   _groups && ret=0
 | |
| elif compset -S ':*'; then
 | |
|   _users && ret=0
 | |
| else
 | |
|   _users -qS : && ret=0
 | |
| fi
 | |
| 
 | |
| return ret
 |