mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 18:10:56 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			191 lines
		
	
	
	
		
			6.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			191 lines
		
	
	
	
		
			6.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef prcs
 | |
| 
 | |
| local curcontext="$curcontext" state line subcmds ret=1
 | |
| typeset -A opt_args
 | |
| 
 | |
| # lookup project names in the repository
 | |
| # (this does not handle subprojects)
 | |
| 
 | |
| (( $+functions[_prcs_projects] )) ||
 | |
| _prcs_projects() {
 | |
|   local expl
 | |
| 
 | |
|   _wanted prcs-projects expl 'project name' compadd "$@" - \
 | |
|       ${~opt_args[-R]:-${opt_args[--repository]:-${PRCS_REPOSITORY:-~/PRCS}}}/*(/:t)
 | |
| }	   
 | |
| 
 | |
| # standard options for all subcommands 
 | |
| 
 | |
| (( $+functions[_prcs_arguments] )) ||
 | |
| _prcs_arguments() {
 | |
|   _arguments -s \
 | |
|     '(-f --force)'{-f,--force}'[resolve interactive queries in some fixed way]' \
 | |
|     '(-h -H --help)'{-h,-H,--help}'[print out help]' \
 | |
|     '(-j --jobs)'{-j,--jobs=}'[spawn many child processes at once]:number:' \
 | |
|     '(-l -L --long-format --long-long-format)'{-l,--long-format}'[long format]' \
 | |
|     '(-l -L --long-format --long-long-format)'{-L,--long-long-format}'[longer format]' \
 | |
|     '(-n --no-action)--no-action[show what would happen but leave files unchanged]' \
 | |
|     '(-q --quiet)'{-q,--quiet}'[suppress normal informational messages]' \
 | |
|     "--plain-format[don't break lines at screen width]" \
 | |
|     '(-R --repository)'{-R,--repository=}'[specify the repository directory]:directory:_files -/' \
 | |
|     "$@"
 | |
| }
 | |
| 
 | |
| _arguments -C \
 | |
|   '(* -)'{-h,-H,--help}'[print out help]' \
 | |
|   '(* -)--version[display program version]' \
 | |
|   '*:: :->subcmd' && ret=0
 | |
| 
 | |
| if (( CURRENT == 1 )); then
 | |
|   subcmds=(
 | |
|     'admin:admin subcommand'
 | |
|     'checkin:checkin project revision'
 | |
|     'checkout:checkout project revision'
 | |
|     'config:verify configuration'
 | |
|     'delete:delete named revision of project'
 | |
|     'depopulate:remove named files from project descriptor'
 | |
|     'diff:show differences between two revisions'
 | |
|     'execute:execute a command for each file in a project'
 | |
|     'info:print information about versions of project'
 | |
|     'merge:reconcile differences between working files and another revision'
 | |
|     'package:package the project and all its revisions into packagefile'
 | |
|     'populate:add named files to project descriptor'
 | |
|     'rekey:set keywords in selected files'
 | |
|     'unpackage:unpackage project in packagefile'
 | |
|   )
 | |
|   
 | |
|   _describe -t commands 'prcs command' subcmds && ret=0
 | |
|   return ret
 | |
| fi
 | |
| 
 | |
| curcontext="${curcontext%:*}-$words[1]:"
 | |
| 
 | |
| case "$words[1]" in
 | |
|   admin)
 | |
|     if (( CURRENT == 2 )); then
 | |
|       subcmds=(
 | |
| 	'access:set the access permissions on the repository'
 | |
| 	'compress:instruct PRCS to save disk space for project'
 | |
| 	'init:create a repository entry'
 | |
| 	'pdelete:delete a repository entry'
 | |
| 	'pinfo:list all projects in the repository'
 | |
| 	'prename:rename a repository entry'
 | |
| 	'rebuild:reconstruct PRCS data files in the repository'
 | |
| 	'uncompress:instruct PRCS to save time in processing project'
 | |
|       )
 | |
|       _describe -t commands 'admin subcommand' subcmds
 | |
|     else
 | |
|       shift words
 | |
|       (( --CURRENT ))
 | |
|       curcontext="${curcontext%:*}-$words[1]:"
 | |
|       case "$words[1]" in
 | |
| 	access|compress|init|pdelete|prename|rebuild)
 | |
|           _prcs_arguments ':project name:_prcs_projects'
 | |
|         ;;
 | |
| 	pinfo)
 | |
| 	  _prcs_arguments
 | |
| 	;;
 | |
| 	uncompress)
 | |
|           _prcs_arguments \
 | |
| 	    '-i[expand the entire project immediately]' \
 | |
|             ':project name:_prcs_projects'
 | |
|         ;;
 | |
| 	*)
 | |
| 	  _message "unknown prcs administrative subfunction: $words[1]"
 | |
| 	;;
 | |
|       esac
 | |
|     fi
 | |
|   ;;
 | |
|   checkin)
 | |
|     _prcs_arguments \
 | |
|       '(-r --revision)'{-r+,--revision=}'[specify version of the project]:revision:' \
 | |
|       '(-s --skilled-merge)'{-s,--skilled-merge}'[turn off most of the safety features of merge]' \
 | |
|       ':project name:_prcs_projects' \
 | |
|       '*:file or directory:_files'
 | |
|   ;;
 | |
|   checkout)
 | |
|     _prcs_arguments \
 | |
|       '(-r --revision)'{-r+,--revision=}'[specify version of the project]:revision:' \
 | |
|       '(-p --preserve)'{-p,--preserve}'[preserve permissions on files that are checked out]' \
 | |
|       '(-u --unlink)'{-u,--unlink}"[don't overwrite symbolic link references]" \
 | |
|       '(-P --exclude-project-file)'{-P,--exclude-project-file}"[don't checkout the project file]" \
 | |
|       ':project name:_prcs_projects' \
 | |
|       '*:file or directory:_files'
 | |
|   ;;
 | |
|   config)
 | |
|     _prcs_arguments
 | |
|   ;;
 | |
|   delete)
 | |
|     _prcs_arguments \
 | |
|       '(-r --revision)'{-r+,--revision=}'[specify version of the project]:revision:' \
 | |
|       ':project name:_prcs_projects'
 | |
|   ;;
 | |
|   depopulate)
 | |
|     _prcs_arguments \
 | |
|       ':project name:_prcs_projects' \
 | |
|       '*:file or directory:_files'
 | |
|   ;;
 | |
|   diff)
 | |
|     _prcs_arguments \
 | |
|       '*'{-r+,--revision=}'[specify version of the project]:revision:' \
 | |
|       '(-k --keywords)'{-k,--keywords}'[compare keywords too]' \
 | |
|       '(-N --new)'{-N,--new}'[compare new files against empty files]' \
 | |
|       '(-P --exclude-project-file)'{-P,--exclude-project-file}"[don't diff the project file]" \
 | |
|       '--[introduce diff options]:*::diff options:=  _diff_options ${PRCS_DIFF_COMMAND:-diff}' \
 | |
|       ':project name:_prcs_projects' \
 | |
|       '*:file or directory:_files'
 | |
|   ;;
 | |
|   execute)
 | |
|     _prcs_arguments \
 | |
|       '(-r --revision)'{-r+,--revision=}'[specify version of the project]:revision:' \
 | |
|       '--pre[list directories first]' \
 | |
|       '(--pipe)--all[execute command once, with all files as arguments]' \
 | |
|       '(--all)--pipe[supply file contents as the standard input]' \
 | |
|       '--match[execute command on files matching a pattern]:pattern:' \
 | |
|       '--not[execute command on files not matching a pattern]:pattern:' \
 | |
|       '--:command: _command_names -e:*::arguments: _normal' \
 | |
|       ':project name:_prcs_projects' \
 | |
|       '*:file or directory:_files'
 | |
|   ;;
 | |
|   info)
 | |
|     _prcs_arguments \
 | |
|       '(-r --revision)'{-r+,--revision=}'[specify version of the project]:revision:' \
 | |
|       '--sort=[set sorting type]:sorting type:(version date)' \
 | |
|       ':project name:_prcs_projects' \
 | |
|       '*:file or directory:_files'
 | |
|   ;;
 | |
|   merge)
 | |
|     _prcs_arguments \
 | |
|       '(-r --revision)'{-r+,--revision=}'[specify version of the project]:revision:' \
 | |
|       '(-s --skilled-merge)'{-s,--skilled-merge}'[turn off most of the safety features of merge]' \
 | |
|       '(-u --unlink)'{-u,--unlink}"[don't overwrite symbolic link references]" \
 | |
|       ':project name:_prcs_projects' \
 | |
|       '*:file or directory:_files'
 | |
|   ;;
 | |
|   package)
 | |
|     _prcs_arguments \
 | |
|       '(-r --revision)'{-r+,--revision=}'[specify version of the project]:revision:' \
 | |
|       '(-z --compress)'{-z,--compress=}'[compress the output]' \
 | |
|       ':project name:_prcs_projects' \
 | |
|       ':file:_files'
 | |
|   ;;
 | |
|   populate)
 | |
|     _prcs_arguments \
 | |
|       '(-d --delete)'{-d,--delete=}'[perform optional deletions]' \
 | |
|       ':project name:_prcs_projects' \
 | |
|       '*:file or directory:_files'
 | |
|   ;;    
 | |
|   rekey)
 | |
|     _prcs_arguments \
 | |
|       '(-u --unlink)'{-u,--unlink}"[don't overwrite symbolic link references]" \
 | |
|       ':project name:_prcs_projects'
 | |
|   ;;    
 | |
|   unpackage)
 | |
|     _prcs_arguments \
 | |
|       ':file:_files' \
 | |
|       ':project name:_prcs_projects'
 | |
|   ;;
 | |
|   *)
 | |
|     _message "unknown prcs command: $words[1]"
 | |
|   ;;
 | |
| esac
 |