diff options
author | Paul Ackersviller <packersv@users.sourceforge.net> | 2007-10-09 02:30:22 +0000 |
---|---|---|
committer | Paul Ackersviller <packersv@users.sourceforge.net> | 2007-10-09 02:30:22 +0000 |
commit | c3784137e10e79035ae00ae6e3226857806c656a (patch) | |
tree | a229e3d100ca2aeeae305af2d0a816de0ed8444f | |
parent | 2e838c3fb03da798c1bf932b8ccabc485e4f7703 (diff) | |
download | zsh-c3784137e10e79035ae00ae6e3226857806c656a.tar.gz zsh-c3784137e10e79035ae00ae6e3226857806c656a.tar.xz zsh-c3784137e10e79035ae00ae6e3226857806c656a.zip |
Merge up to 1.8 from trunk onto 4.2 branch.
-rw-r--r-- | Completion/Unix/Command/_bzr | 399 |
1 files changed, 391 insertions, 8 deletions
diff --git a/Completion/Unix/Command/_bzr b/Completion/Unix/Command/_bzr index 26e992dd3..62f1151e7 100644 --- a/Completion/Unix/Command/_bzr +++ b/Completion/Unix/Command/_bzr @@ -1,13 +1,396 @@ #compdef bzr -local _bzr_subcommands expl curcontext="$curcontext" +# bzr is the bazaar-ng revision-control system -_bzr_subcommands=(${(f)"$(_call_program bzr bzr shell-complete)"}) +local curcontext="$curcontext" state line expl cmd args ret=1 +typeset -A opt_args -if (( CURRENT == 2 )); then - _describe -t subcommand 'subcommand' _bzr_subcommands -else -# this part should call bzr shell-complete <subcmd> when -# it has been tweaked properly - _files +_arguments -C \ + '1: :->cmd' \ + '*:: :->args' && ret=0 + +if (( ! $+_bzr_cmds )); then + typeset -gH _bzr_cmds + _bzr_cmds=(${(f)"$(_call_program bzr bzr shell-complete)"}) +fi + +if [[ $state != 'args' ]]; then + _describe -t subcommand 'subcommand' _bzr_cmds + return 0 fi + +cmd="$words[1]" +curcontext="${curcontext%:*:*}:bzr-$cmd:" + +(( $+functions[_bzr_unknownFiles] )) || +_bzr_unknownFiles() { + local fileList + fileList=(${(ps:\0:)"$(bzr ls --null --unknown)"}) + compadd -af fileList + return 0 +} + +(( $+functions[_bzr_unknownRoot] )) || +_bzr_unknownRoot() { + local fileList + fileList=(${(ps:\0:)"$(bzr ls --null --from-root --unknown)"}) + compadd -af fileList + return 0 +} + +(( $+functions[_bzr_versionedFiles] )) || +_bzr_versionedFiles() { + local fileList + fileList=(${(ps:\0:)"$(bzr ls --null --versioned)"}) + compadd -af fileList + return 0 +} + +(( $+functions[_bzr_completeParents] )) || +_bzr_completeParents() { + local parentFile=$(bzr root 2>/dev/null)/.bzr/branch/parent + [[ -r $parentFile ]] && compadd -X "Completing parents" $(cat $parentFile) +} + +args=( '(-)'{--help,-h}'[show help message]' ) + +case $cmd in +(add) + args+=( + '--dry-run[show what would be added without adding anything]' + '--no-recurse[do not recurse into subdirectories]' + '(-q --quiet -v --verbose)'{--quiet,-q}'[be quiet]' + '(-v --verbose -q --quiet)'{--verbose,-v}'[display more information]' + '*:unknown files:_bzr_unknownFiles' + ) + ;; + +(annotate|blame|praise) + args+=( + '--all[show annotations on all lines]' + '--long[show date in annotations]' + '(-r --revision)'{--revision=,-r}'[the revision to show]:rev:' + '*:files:_bzr_versionedFiles' + ) + ;; + +(branch|get|clone) + args+=( + '(-r --revision)'{--revision=,-r}'[the revision to get]:rev:' + '--basis=[specify basis branch]:basis:' + ) + if (( CURRENT == 2 )); then + args+=( '*:FROM_LOCATION:_files -/' ) + elif (( CURRENT == 3 )); then + args+=( '*:TO_LOCATION:_files -/' ) + fi + ;; + +(checkout) + args+=( + '--lightweight[perform a lightweight checkout]' + '(-r --revision)'{--revision=,-r}'[the revision to get]:rev:' + ) + _bzr_completeParents + ;; + +(rename|move|mv) + if (( CURRENT == 2 )); then + args+=( '*:files:_bzr_versionedFiles' ) + else + args=( '*:destination dir:_files -/' ) + fi + ;; + +(cat) + args+=( + '(-r --revision)'{--revision=,-r}'[revision]:rev:' + '*:file:_bzr_versionedFiles' + ) + ;; + +(root) + args+=( '*:file:_files' ) + ;; + +(log) + args+=( + '--forward[reverse direction of revisions]' + '(-l --long --short --log_format)--line[Use log format with one line per revision. Same as "--log-format line"]' + '(-l --long --short --line)--log-format=[Use the specified log format]:log format:(line short long)' + '(-l --long --short --line --log-format)'{--long,-l}'[Use detailed log format. Same as "--log-format long"]' + '(-l --long --log_format)--short[Use moderately short log format. Same as "--log-format short"]' + '(-m --message)'{--message=,-m}'[specify regexp]:regexp:' + '(-r --revision)'{--revision=,-r}'[revision or range]:rev or rev range:' + '--show-ids[show file IDs]' + '--timezone=[specify timezone for dates]:timezone:' + '(-v --verbose)'{--verbose,-v}'[show revision manifest]' + '*:file:_bzr_versionedFiles' + ) + ;; + +(resolve|resolved) + args+=( + '--all[resolve all conflicts in this tree]' + '*:file:_bzr_versionedFiles' + ) + ;; + +(status|st|stat) + args+=( + '--all[include unchanged versioned files]' + '(-r --revision)'{--revision=,-r}'[compare working tree with revision]:revision:' + '--show-ids[show file IDs]' + '*:file:_bzr_versionedFiles' + ) + ;; + +(check) + args+=( + '(-v --verbose)'{--verbose,-v}'[display more information]' + '*:DIR:_files -/' + ) + ;; + +(mkdir|renames|update) + args+=( '*:DIR:_files -/' ) + ;; + +(init|upgrade) + args+=( + '--format=[format for repository]:format:(default knit metaweave weave)' + '*:DIR:_files -/' + ) + ;; + +(init-repo|init-repository) + args+=( + '--format=[format for repository]:format:(default knit metaweave weave)' + '--trees[allows branches in repository to have a working tree]' + '*:DIR:_files -/' + ) + ;; + +(remove|rm) + args+=( + '(-v --verbose)'{--verbose,-v}'[display more information]' + '*:file:_bzr_versionedFiles' + ) + ;; + +(pull) + args+=( + '--overwrite[Ignore differences, overwrite unconditionally]' + '--remember[Remember the specified location as a default]' + '(-r --revision)'{--revision=,-r}'[get a particular revision]:revision:' + '(-v --verbose)'{--verbose,-v}'[display more information]' + '*:local repository:_files -/' + ) + _bzr_completeParents + ;; + +(missing) + args+=( + '(-l --long --short --log_format)--line[Use log format with one line per revision. Same as "--log-format line"]' + '(-l --long --short --line)--log-format=[Use the specified log format]:log format:(line short long)' + '(-l --long --short --line --log-format)'{--long,-l}'[Use detailed log format. Same as "--log-format long"]' + '(-l --long --log_format)--short[Use moderately short log format. Same as "--log-format short"]' + '--mine-only[Display changes in the local branch only]' + '--reverse[Reverse the order of revisions]' + '--show-ids[show internal object ids]' + '--theirs-only[Display changes in the remote branch only]' + '(-v --verbose)'{--verbose,-v}'[display more information]' + '*:local repository:_files -/' + ) + _bzr_completeParents + ;; + +(commit|checkin|ci) + args+=( + '(-F --file)'{--file=,-F}'[commit message from file]:message file:' + '--local[perform a local only commit in a bound branch]' + '(-m --message)'{--message=,-m}'[commit message]:message text:' + '--strict[refuse to commit if there are unknown files]' + '--unchanged[include unchanged files]' + '(-q --quiet -v --verbose)'{--quiet,-q}'[be quiet]' + '(-v --verbose -q --quiet)'{--verbose,-v}'[display more information]' + '*:modified files:_bzr_versionedFiles' + ) + ;; + +(bind|break-lock|reconcile) + _bzr_completeParents + ;; + +(register-branch) + args+=( + '--author=[email of the branch author, if not you]:email:' + '--branch-description=[longer description of the branch]:description:' + '--branch-name=[short name for the branch]:name:' + '--branch-title=[one-sentence description of the branch]:title:' + '--dry-run[prepare the request but do not actually send it]' + '--link-bug=[the bug this branch fixes]:bug-ID:' + '--product=[launchpad product short name to associate with the branch]:product:' + ) + _bzr_completeParents + ;; + +(remerge) + args+=( + '--merge-type=[the type of the merge]:type:' + '--reprocess[Reprocess to reduce spurious conflicts]' + '--show-base[Show base revision text in conflicts]' + ) + _bzr_completeParents + ;; + +(conflicts|added|deleted|modified|unknowns|directories|ignored|unbind|nick|revno|version) + ;; + +(whoami) + args+=( '--email[only show e-mail address]' ) + ;; + +(inventory) + args+=( + '--kind=[limit output by type]:kind:(file directory symlink)' + '(-r --revision)'{--revision=,-r}'[show inventory of a revision]:revision:' + '--show-ids[show file IDs]' + ) + ;; + +(diff|dif|di) + args+=( + '(-r --revision)'{--revision=,-r}'[revision]:revision:' + '--diff-options=[options to pass to gdiff]:diff options:' + '(-p --prefix)'{--prefix,-p}'[set prefix added to old and new filenames]' + '*:files:_files' + ) + ;; + +(export) + args+=( + '(-r --revision)'{--revision=,-r}'[revision]:revision:' + '--format=[format of exported file]:format:(dir tar tgz tbz2)' + '--root=[root directory of patch]:_files -/' + '*:destination:_files' + ) + ;; + +(ignore) + args+=( '*:NAME_PATTERN:_bzr_unknownRoot' ) + ;; + +(info) + args+=( + '(-v --verbose)'{--verbose,-v}'[display more information]' + '*:branch:_files -/' + ) + ;; + +(testament) + args+=( + '(-l --long)'{--long,-l}'[use long format]' + '(-r --revision)'{--revision=,-r}'[revision]:revision:' + '*:branch:_files -/' + ) + ;; + +(revert|merge-revert) + args+=( + '--no-backup[skip generation of backup~ files]' + '(-r --revision)'{--revision=,-r}'[revision]:revision:' + '*:file:_bzr_versionedFiles' + ) + ;; + +(merge) + args+=( + '--force[ignore uncommitted changes]' + '--merge-type:merge type:(diff3 merge3 weave)' + '--remember[Remember the specified location as a default]' + '--reprocess[Reprocess to reduce spurious conflicts]' + '(-r --revision)'{--revision=,-r}'[revision]:revision:' + '--show-base[Show base revision text in conflicts]' + '*:local repository:_files -/' + ) + _bzr_completeParents + ;; + +(ls) + args+=( + '(-q --quiet -v --verbose)'{--quiet,-q}'[be quiet]' + '(-v --verbose -q --quiet)'{--verbose,-v}'[display more information]' + '(-r --revision)'{--revision=,-r}'[revision]:revision:' + '--from-root[Print all paths from the root of the branch]' + '--non-recursive[Do not recurse into subdirectories]' + '--null[Null separate the files]' + '--ignored[Print ignored files]' + '--unknown[Print unknown files]' + '--versioned[Print versioned files]' + ) + ;; + +(help) + args=( + '(-l --long)'{--long,-l}'[use long format]' + '*:subcmds:->cmds' + ) + _arguments -s "$args[@]" && ret=0 + _describe -t subcommand 'subcommand' _bzr_cmds + return 0 + ;; + + # Plugins + +(visualize|visualise|viz|vis) + args+=( '(-r --revision)'{--revision=,-r}'[starting revision]:rev:' ) + ;; + +(gannotate|gblame|gpraise) + args+=( + '--all[show annotations on all lines]' + '--plain[do not hightlight annotation lines]' + '*:files:_bzr_versionedFiles' + ) + ;; + +(push) + args+=( + '--create-prefix[Create the path leading up to the branch when missing]' + '--overwrite[Ignore differences, overwrite unconditionally]' + '--remember[Remember the specified location as a default]' + '*:local repository:_files -/' + ) + _bzr_completeParents + ;; + +(clean-tree) + args+=( + '--dry-run[show files to delete instead of deleting them]' + '--ignored[delete all ignored files]' + '--detritus[delete conflict files, merge backups, failed self-tests, *~, *.tmp, etc]' + ) + ;; + +(uncommit) + args+=( + '--dry-run[do not make any changes]' + '--force[say "yes" to all questions]' + '(-r --revision)'{--revision=,-r}'[the earliest revision to delete]:rev:' + '(-v --verbose)'{--verbose,-v}'[display more information]' + ) + ;; + +(sign-my-commits) + args+=( '--dry-run[do not actually sign anything]' ) + ;; + +(*) + _message "unknown bzr command completion: $cmd" + return 1 + ;; +esac + +_arguments -s "$args[@]" && ret=0 +return $ret |