mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-20 14:04:03 +01:00
207 lines
7.4 KiB
Plaintext
207 lines
7.4 KiB
Plaintext
#compdef prcs
|
|
|
|
# lookup project names in the repository
|
|
# (this does not handle subprojects)
|
|
|
|
(( $+functions[_prcs_projects] )) ||
|
|
_prcs_projects() {
|
|
compadd $@ - ${~opt_args[-R]:-${opt_args[--repository]:-${PRCS_REPOSITORY:-$HOME/PRCS}}}/*(/:t)
|
|
}
|
|
|
|
# standard options for all subcommands
|
|
|
|
(( $+functions[_prcs_arguments] )) ||
|
|
_prcs_arguments() {
|
|
_arguments -s \
|
|
'(-f)--force[resolve interactive queries in some fixed way]' \
|
|
'(--force)-f[resolve interactive queries in some fixed way]' \
|
|
'(-h -H)--help[print out help]' \
|
|
'(--help -H)-h[print out help]' \
|
|
'(--help -h)-H[print out help]' \
|
|
'(-j)--jobs=[spawn many child processes at once]:number:' \
|
|
'(--jobs)-j[spawn many child processes at once]:number:' \
|
|
'(-l)--long-format[long format]' \
|
|
'(--long-format)-l[long format]' \
|
|
'(-L)--long-long-format[long format]' \
|
|
'(--long-long-format)-L[longer format]' \
|
|
'(-n)--no-action[no action]' \
|
|
'(--no-action)-n[no action]' \
|
|
'(-q)--quiet[suppress normal informational messages]' \
|
|
'(--quiet)-q[suppress normal informational messages]' \
|
|
"--plain-format[don't break lines at screen width]" \
|
|
'(-R)--repository=[set the repository directory]:directory:_files -/' \
|
|
'(--repository)-R[set the repository directory]:directory:_files -/' \
|
|
'(-v)--version[print PRCS version and exits]' \
|
|
'(--version)-v[print PRCS version and exits]' \
|
|
$@
|
|
}
|
|
|
|
if (( CURRENT == 2 )); then
|
|
_arguments \
|
|
':prcs command:((
|
|
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"))'
|
|
else
|
|
shift words
|
|
(( --CURRENT ))
|
|
case "$words[1]" in
|
|
admin)
|
|
if (( CURRENT == 2 )); then
|
|
_arguments \
|
|
':admin subcommand:((
|
|
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"))'
|
|
else
|
|
shift words
|
|
(( --CURRENT ))
|
|
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)--revison=[version of the project]:revision:' \
|
|
'(--revison)-r[version of the project]:revision:' \
|
|
'(-s)--skilled-merge[turn off most of the safety features of merge]' \
|
|
'(--skilled-merge)-s[turn off most of the safety features of merge]' \
|
|
':project name:_prcs_projects' \
|
|
'*:file or directory:_files'
|
|
;;
|
|
checkout)
|
|
_prcs_arguments \
|
|
'(-r)--revison=[version of the project]:revision:' \
|
|
'(--revison)-r[version of the project]:revision:' \
|
|
'(-p)--preserve[preserve permissions on files that are checked out]' \
|
|
'(--preserve)-p[preserve permissions on files that are checked out]' \
|
|
"(-u)--unlink[don't overwrite symbolic link references]" \
|
|
"(--unlink)-u[don't overwrite symbolic link references]" \
|
|
"(-P)--exclude-project-file[don't checkout the project file]" \
|
|
"(--exclude-project-file)-P[don't checkout the project file]" \
|
|
':project name:_prcs_projects' \
|
|
'*:file or directory:_files'
|
|
;;
|
|
config)
|
|
_prcs_arguments
|
|
;;
|
|
delete)
|
|
_prcs_arguments \
|
|
'(-r)--revison=[version of the project]:reversion:' \
|
|
'(--revison)-r[version of the project]:reversion:' \
|
|
':project name:_prcs_projects'
|
|
;;
|
|
depopulate)
|
|
_prcs_arguments \
|
|
':project name:_prcs_projects' \
|
|
'*:file or directory:_files'
|
|
;;
|
|
diff)
|
|
_prcs_arguments \
|
|
'*--revison=[version of the project]:revision:' \
|
|
'*-r[version of the project]:revision:' \
|
|
'(-k)--keywords[compare keywords too]' \
|
|
'(--keywords)-k[compare keywords too]' \
|
|
'(-N)--new[compare new files against empty files]' \
|
|
'(--new)-N[compare new files against empty files]' \
|
|
"(-P)--exclude-project-file[don't diff the project file]" \
|
|
"(--exclude-project-file)-P[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)--revison=[version of the project]:reversion:' \
|
|
'(--revison)-r[version of the project]:reversion:' \
|
|
'--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)--revison=[version of the project]:revision:' \
|
|
'(--revison)-r[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)--revison=[version of the project]:revision:' \
|
|
'(--revison)-r[version of the project]:revision:' \
|
|
'(-s)--skilled-merge[turn off most of the safety features of merge]' \
|
|
'(--skilled-merge)-s[turn off most of the safety features of merge]' \
|
|
"(-u)--unlink[don't overwrite symbolic link references]" \
|
|
"(--unlink)-u[don't overwrite symbolic link references]" \
|
|
':project name:_prcs_projects' \
|
|
'*:file or directory:_files'
|
|
;;
|
|
package)
|
|
_prcs_arguments \
|
|
'(-r)--revison=[version of the project]:revision:' \
|
|
'(--revison)-r[version of the project]:revision:' \
|
|
'(-z)--compress=[compress the output]' \
|
|
'(--compress)-z[compress the output]' \
|
|
':project name:_prcs_projects' \
|
|
':file:_files'
|
|
;;
|
|
populate)
|
|
_prcs_arguments \
|
|
'(-d)--delete=[perform optional deletions]' \
|
|
'(--delete)-d[perform optional deletions]' \
|
|
':project name:_prcs_projects' \
|
|
'*:file or directory:_files'
|
|
;;
|
|
rekey)
|
|
_prcs_arguments \
|
|
"(-u)--unlink[don't overwrite symbolic link references]" \
|
|
"(--unlink)-u[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
|
|
fi
|