about summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
authorPaul Ackersviller <packersv@users.sourceforge.net>2007-10-09 02:30:22 +0000
committerPaul Ackersviller <packersv@users.sourceforge.net>2007-10-09 02:30:22 +0000
commitc3784137e10e79035ae00ae6e3226857806c656a (patch)
treea229e3d100ca2aeeae305af2d0a816de0ed8444f /Completion
parent2e838c3fb03da798c1bf932b8ccabc485e4f7703 (diff)
downloadzsh-c3784137e10e79035ae00ae6e3226857806c656a.tar.gz
zsh-c3784137e10e79035ae00ae6e3226857806c656a.tar.xz
zsh-c3784137e10e79035ae00ae6e3226857806c656a.zip
Merge up to 1.8 from trunk onto 4.2 branch.
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Unix/Command/_bzr399
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