about summary refs log tree commit diff
path: root/Completion/User
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/User')
-rw-r--r--Completion/User/_prcs203
1 files changed, 203 insertions, 0 deletions
diff --git a/Completion/User/_prcs b/Completion/User/_prcs
new file mode 100644
index 000000000..30c76e791
--- /dev/null
+++ b/Completion/User/_prcs
@@ -0,0 +1,203 @@
+#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"
+	  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'
+        ;;
+      uncompress)
+        _prcs_arguments \
+	  '-i[expand the entire project immediately]' \
+          ':project name:_prcs_projects'
+        ;;
+      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)
+#
+# FIXME: when there will be a _diff completion function,
+#        we should complete with diff options after `--' :
+# prcs diff [OPTION ...] [PROJECT [FILE-OR-DIR ...]] [-- [DIFF-OPTION ...]]
+#
+    _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]" \
+      ':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[2]"
+  ;;
+  esac
+fi