zsh-workers
 help / color / mirror / code / Atom feed
* [mdz@canonical.com: Bug#285745: Completion for baz]
@ 2004-12-15 17:23 Clint Adams
  2004-12-16  2:47 ` Felix Rosencrantz
  0 siblings, 1 reply; 4+ messages in thread
From: Clint Adams @ 2004-12-15 17:23 UTC (permalink / raw)
  To: zsh-workers; +Cc: mdz

I imagine that some stuff could be factored out of _tla, _baz, and
_larch (well, _larch looks like it needs to be finished before it will
have anything in common), but I'm committing as-is for now.

----- Forwarded message from Matt Zimmerman <mdz@canonical.com> -----

Package: zsh
Version: 4.2.1-12ubuntu1
Severity: wishlist

Based on the tla completion, search-and-replaced and adjusted for (some of
the) syntax differences.

-- System Information:
Debian Release: 3.1
Architecture: i386 (i686)
Kernel: Linux 2.6.8.1-3-k7
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)

Versions of packages zsh depends on:
ii  debconf              1.4.40ubuntu1       Debian configuration management sy
ii  libc6                2.3.2.ds1-18ubuntu3 GNU C Library: Shared libraries an
ii  libncurses5          5.4-4               Shared libraries for terminal hand
ii  passwd               1:4.0.3-30.4ubuntu1 Change and administer password and

-- debconf information excluded

-- 
 - mdz

#compdef baz

autoload is-at-least
local BAZ=$words[1]
local baz_version
local hide_short

# ask the user which version of baz this is
if ! zstyle -s ":completion:${curcontext}" baz-version baz_version; then
  # ask baz instead
  baz_version="${${$($BAZ --version)#baz baz-}%% from regexps.com*}"
fi

# test whether to hide short options from completion
if zstyle -s ":completion:${curcontext}" hide-shortopts hide_short; then
  case $hide_short in
    true|yes|on|1) hide_short='!' ;;
    *) hide_short='' ;;
  esac
fi

# completion functions

(( $+functions[_baz_archives] )) ||
_baz_archives () {
  local expl completions library name_arg='-n'
  if [[ -n $argv[(r)--library] ]]; then
    library='library-'
    # remove parameter from $@ before calling compadd
    argv[(r)--library]=()
    name_arg=
  fi
  completions=($(_call_program baz $BAZ ${library:-}archives $name_arg))
  _description -V archives expl "${library:-}archives"
  compadd "$@" "$expl[@]" -- "$completions[@]"
}

(( $+functions[_baz_categories] )) ||
_baz_categories () { _baz_namespace 1 "$argv[@]" }

(( $+functions[_baz_branches] )) ||
_baz_branches () {_baz_namespace 2 "$argv[@]" }

(( $+functions[_baz_versions] )) ||
_baz_versions () { _baz_namespace 3 "$argv[@]" }

(( $+functions[_baz_revisions] )) ||
_baz_revisions () { _baz_namespace 4 "$argv[@]" }

(( $+functions[_baz_local_revisions] )) ||
_baz_local_revisions () {
  local expl1 expl2 tree_version=`$BAZ tree-version`
  _description -V applied-patches expl1 "patches from this version"
  _description -V other-patches expl2 "patches from other versions"
  compadd "$expl1[@]" `$BAZ logs`
  compadd "$expl2[@]" `$BAZ logs --full $($BAZ log-versions | grep -v $tree_version)`
  # This is incredibly slow.
  # Should complete based on -A, -R, -d
}

(( $+functions[_baz_namespace] )) ||
_baz_namespace () { #double as arch_namespace_categories
# takes an integer argument specifying how many components:
# 1: category
# 2: branch
# 3: version
# 4: revision
  local suffix expl archive=`$BAZ my-default-archive 2> /dev/null`
  local trailing_dashes=0
  [[ -n $argv[(r)--trailing-dashes] ]] && trailing_dashes=1
  local library
  [[ -n $argv[(r)--library] ]] && library='library-';
  local exclude_library_revisions=0
  [[ -n $argv[(r)--exclude-library-revisions] ]] && exclude_library_revisions=1

  if [ $1 -gt 1 ] || (( trailing_dashes )); then
    suffix=(-q -S --)
  fi
  if [[ $PREFIX = */* ]]; then
    compset -P '*/'
    archive=${IPREFIX%/*}
    _description -V categories expl "${library:-}categories in $archive"
    compadd $suffix "$expl[@]" `$BAZ ${library:-}categories -A $archive`
  elif [ -z $IPREFIX ]; then
    local index=$(( words[(i)-A] + 1 ))
    (( index < CURRENT )) || index=$(( words[(i)--archive] + 1 ))
    (( index < CURRENT )) && archive=$words[$index]

    if [ $archive ]; then
      _description -V categories expl "${library:-}categories in $archive"
      compadd "$expl[@]" $suffix `$BAZ ${library:-}categories -A $archive`
    fi

    _baz_archives -S / ${library:+--library}
  fi
  if [ $archive ] && [ $1 -gt 1 ] && [[ $PREFIX != *@* ]] \
     && [[ $PREFIX = *--* ]]; then
  #this match could be better
    _baz_namespace_branches $(($1 - 1))
  fi
}

(( $+functions[_baz_namespace_branches] )) ||
_baz_namespace_branches () {
  local suffix expl
  if [ $1 -gt 1 ] || (( $trailing_dashes )); then
    suffix=(-q -S --)
  fi
  if [[ $IPREFIX != *-- ]]; then
    compset -P 1 '*--'
    local category=${IPREFIX%--}
    _description -V branches expl "${library:-}branches"
    compadd $suffix "$expl[@]" \
      ${${(@)$($BAZ ${library:-}branches -A $archive $category)}##*--}
  fi
  if [ $1 -gt 1 ] && [[ $IPREFIX = *-- ]] && [[ $PREFIX = *--* ]]; then
    _baz_namespace_versions $(($1 - 1))
  fi
}

(( $+functions[_baz_namespace_versions] )) ||
_baz_namespace_versions () {
  local suffix expl
  if [ $1 -gt 1 ]; then
    suffix=(-q -S --)
  fi
  if [[ $IPREFIX != *--*-- ]] || [[ $IPREFIX != */*--*-- ]]; then
    compset -P 1 '*--'
    local branch=${IPREFIX%--}
    _description -V versions expl "${library:-}versions"
    compadd $suffix "$expl[@]" \
      ${${(@)$($BAZ ${library:-}versions -A $archive $branch)}##*--}
  fi
  if [ $1 -gt 1 ] && [[ $IPREFIX = *--*-- ]] && ([[ $IPREFIX = */*--*-- ]] \
    || [[ $PREFIX != */* ]]) && [[ $PREFIX = *--* ]]; then
    _baz_namespace_revisions
  fi
}

(( $+functions[_baz_namespace_revisions] )) ||
_baz_namespace_revisions () {
  local expl
  if [[ $IPREFIX != *--*--*-- ]] || [[ $IPREFIX != */*--*--*-- ]]; then
    compset -P 1 '*--'
    local version=${IPREFIX%--}
    _description -V revisions expl "${library:-}revisions"
    local completions c
    completions=(
      ${${(@)$($BAZ ${library:-}revisions -A $archive $version)}##*--}
    )
    (( exclude_library_revisions )) && \
        foreach c ($($BAZ library-revisions -A $archive $version)); do completions[(r)$c]=(); done
    compadd "$expl[@]" -a completions
  fi
}

(( $+functions[_baz_config] )) ||
_baz_config () {

  # zsh 4.1.1+ is recommended; 4.0.6 gives the error below when doing
  # baz build-config e<TAB>
  # _path_files:322: no matches found: configs//e/.(/)
  # whereas 4.1.1 completes correctly

  local configdir root ret=1 n expl

  n=$opt_args[(i)(-d|--dir)]
  [[ -n "$n" ]] && configdir=$opt_args[$n]
  root="$(_call_program baz $BAZ tree-root ${configdir} 2>&1)"
  if (( $? )); then
    _message -e messages "Error: $root"
    return $ret
  fi

  if [[ -d "$root/configs" ]]; then
    configdir=("$root/configs")
    _description files expl '%Bconfig file%b'
    _files -W configdir "$expl[@]" && ret=0
  else
    _message -e messages "No configs/ directory in tree whose root is $root"
  fi
  return $ret
}

(( $+functions[_baz_limit] )) ||
_baz_limit () { #presently only does push-mirror style limits
  [[ $words[$CURRENT] == *@* ]] && return 1

  local expl archive
  archive=${words[(r)*@*]:-$($BAZ my-default-archive 2> /dev/null)}
  if [ $archive ]; then

    if [[ $PREFIX != *--* ]]; then
      _description -V categories expl "categories in $archive"
      compadd -q -S -- "$expl[@]" `$BAZ categories -A $archive`
    else
      _baz_namespace_branches 3
    fi
  fi
}

(( $+functions[_baz_tree_or_rev] )) ||
_baz_tree_or_rev () {
  _alternative 'trees:tree:_files -/' 'revisions:revision:_baz_revisions'
}

(( $+functions[_baz_libraries] )) ||
_baz_libraries () {
  local libraries expl
  libraries=($(_call_program baz $BAZ my-revision-library))
  _description -V libraries expl "revision libraries"
  compadd "$expl[@]" -a libraries
}

(( $+functions[_baz_my_revision_library] )) ||
_baz_my_revision_library () {
  if [[ -n $words[(r)-d] ]] || [[ -n $words[(r)--delete] ]]; then
    _baz_libraries
  else
    _files -/
  fi
}

(( $+functions[_baz_log_versions] )) ||
_baz_log_versions () {
  local logs expl
  logs=($(_call_program baz $BAZ log-versions))
  _description -V versions expl "log versions"
  compadd "$expl[@]" -a logs
}

# command argument definitions
# commands with different versions

local cmd_register_archive cmd_archives cmd_ls_archives cmd_redo
local cmd_redo_changes cmd_changes cmd_what_changed cmd_categories
local cmd_branches cmd_versions cmd_cacherev cmd_logs cmd_log_versions
local cmd_log_ls cmd_update cmd_join_branch cmd_replay cmd_deltapatch
local cmd_delta_patch cmd_apply_delta cmd_sync_tree cmd_make_sync_tree
local cmd_delta cmd_revdelta cmd_library_categories cmd_library_branches
local cmd_library_versions cmd_library_revisions

cmd_log_ls=('*:version:_baz_log_versions')
cmd_log_versions=()
# the options should only complete items that are in the tree

cmd_register_archive=('::archive:_baz_archives' ':location:_files -/')
cmd_archives=('::regex:')
cmd_redo=('::changeset:_files -/')
cmd_changes=('::revision:_baz_revisions'
  #  ':separator:(--)' '*::limit:_files'
  #don't understand the limit usage
)
cmd_categories=('::archive:_baz_archives')
cmd_branches=('::category:_baz_categories')
cmd_versions=('::branch:_baz_branches')
cmd_cacherev=('::revision:_baz_revisions')
#should only complete non-cached revisions

cmd_logs=($cmd_log_ls)
cmd_update=('::revision:_baz_revisions')
cmd_join_branch=(':revision:_baz_revisions')
#should only complete continuation revisions

cmd_replay=('*::revision:_baz_revisions')
cmd_deltapatch=(':FROM:_baz_tree_or_rev' ':TO:_baz_tree_or_rev')
cmd_sync_tree=(':revision:_baz_revisions')
cmd_delta=(':FROM:_baz_tree_or_rev' ':TO:_baz_tree_or_rev' '::DEST:_files -/')
cmd_library_categories=('::archive:_baz_archives --library')
cmd_library_branches=('::category:_baz_categories --library')
cmd_library_versions=('::branch:_baz_branches --library')
cmd_library_revisions=('::version:_baz_versions --library')

cmd_ls_archives=($cmd_archives)
cmd_redo_changes=($cmd_redo)
cmd_what_changed=($cmd_changes)
cmd_delta_patch=($cmd_deltapatch)
cmd_apply_delta=($cmd_deltapatch)
cmd_make_sync_tree=($cmd_sync_tree)
cmd_revdelta=($cmd_delta)

# commands the same in all versions

local cmd_help
cmd_help=()

local cmd_my_id
cmd_my_id=('::id-string:')

local cmd_my_default_archive
cmd_my_default_archive=('::archive:_baz_archives')

local cmd_whereis_archive
cmd_whereis_archive=(':archive:_baz_archives')

local cmd_init_tree
cmd_init_tree=('::version:_baz_versions')

local cmd_tree_root
cmd_tree_root=('::directory:_files -/')

local cmd_tree_version
cmd_tree_version=('::directory:_files -/')

local cmd_set_tree_version
cmd_set_tree_version=(':version:_baz_versions')

local cmd_build_config cmd_buildcfg
cmd_build_config=(':config:_baz_config')
cmd_buildcfg=($cmd_build_config)

local cmd_cat_config cmd_catcfg cmd_cfgcat
cmd_cat_config=(':config:_baz_config')
cmd_catcfg=($cmd_cat_config)
cmd_cfgcat=($cmd_cat_config)

local cmd_undo cmd_undo_changes
cmd_undo=('::revision:_baz_revisions')
cmd_undo_changes=($cmd_undo)

local cmd_file_diffs
cmd_file_diffs=(':file:_files' '::revision:_baz_revisions')

local cmd_file_find
cmd_file_find=(':file:_files' '::revision:_baz_revisions')

local cmd_inventory cmd_srcfind
cmd_inventory=('::separator:(--)' '*:directory:_files -/')
cmd_srcfind=($cmd_inventory)

local cmd_lint
cmd__lint=('::directory:_files -/')

local cmd_id cmd_invtag
cmd_id=('*:file:_files')
cmd_invtag=($cmd_id)

local cmd_id_tagging_method cmd_tagging_method methods
cmd_id_tagging_method=('::tagging method:(($methods))')
methods=(
  'names:use naming conventions only'
  'implicit:use naming conventions but permit for inventory tags'
  'tagline:use naming conventions but permit for inventory tags'
  'explicit:require explicit designation of source'
)
cmd_tagging_method=($cmd_id_tagging_method)

local cmd_add cmd_add_id cmd_add_tag
cmd_add=('*:files to add:_files')
cmd_add_id=($cmd_add)
cmd_add_tag=($cmd_add)

local cmd_delete cmd_delete_id cmd_delete_tag
cmd_delete=('*:files to delete:_files')
cmd_delete_id=($cmd_delete)
cmd_delete_tag=($cmd_delete)

local cmd_move cmd_move_id cmd_move_tag
cmd_move_id=(':old name:_files' ':new name:_files')
cmd_move_id=($cmd_move)
cmd_move_tag=($cmd_move)
#would be nice not to offer dirs for newname if oldname is a file, and
#vice versa

local cmd_mv
cmd_mv=('*:file:_files')
# not really right, but close enough

local cmd_default_id cmd_explicit_default cmd_default_tag
cmd_default_id=('::TAG-PREFIX:')
cmd_explicit_default=($cmd_default_id)
cmd_default_tag=($cmd_default_id)

local cmd_tagging_defaults cmd_id_tagging_defaults
cmd_tagging_defaults=()
cmd_id_tagging_defaults=($cmd_tagging_defaults)

local cmd_changeset cmd_mkpatch
cmd_changeset=(
  ':ORIG:_files -/'
  ':MOD:_files -/'
  ':DEST:_files -/'
  '*:files:_files'
)
cmd_mkpatch=("$cmd_changeset[@]")

local cmd_dopatch cmd_do_changeset cmd_apply_changeset
cmd_dopatch=(':changeset:_files -/' ':target:_files -/')
cmd_do_changeset=($cmd_dopatch)
cmd_apply_changeset=($cmd_dopatch)

local cmd_show_changeset
cmd_show_changeset=('::changeset:_files -/')

local cmd_make_archive
cmd_make_archive=('::name:' ':location:_files -/')

local cmd_archive_setup
cmd_archive_setup=('*:versions:_baz_branches --trailing-dashes')

local cmd_make_category
cmd_make_category=(':category:_baz_archives -S /')

local cmd_make_branch
cmd_make_branch=(':branch:_baz_categories --trailing-dashes')

local cmd_make_version
cmd_make_version=(':version:_baz_branches --trailing-dashes')

local cmd_import cmd_imprev
cmd_import=('::version:_baz_versions')
cmd_imprev=($cmd_import)

local cmd_commit cmd_cmtrev
cmd_commit=('::version:_baz_versions' ':separator:(--)' '*:files:_files')
cmd_cmtrev=($cmd_commit)

local cmd_get cmd_getrev
cmd_get=(':revision:_baz_revisions' '::directory:_files -/')
cmd_getrev=($cmd_get)

local cmd_get_patch cmd_get_changeset
cmd_get_patch=(':revision:_baz_revisions' '::dir:_files -/')
cmd_get_changeset=($cmd_get_patch)

local cmd_lock_revision
cmd_lock_revision=(':revision:_baz_revisions')

local cmd_push_mirror cmd_archive_mirror
cmd_push_mirror=(
  '::FROM or MINE:_baz_archives'
  '::TO:_baz_archives'
  '::LIMIT:_baz_limit'
)
cmd_archive_mirror=($cmd_push_mirror)

local cmd_revisions
cmd_revisions=('::version:_baz_versions')

local cmd_ancestry
cmd_ancestry=('::revision:_baz_revisions')

local cmd_ancestry_graph
cmd_ancestry_graph=('::revision:_baz_revisions')

local cmd_cat_archive_log
cmd_cat_archive_log=(':revision:_baz_revisions')

local cmd_cachedrevs
cmd_cachedrevs=(':version:_baz_versions')

local cmd_uncacherev
cmd_uncacherev=(':revision:_baz_revisions' '::dir:_files -/')

local cmd_archive_meta_info
cmd_archive_meta_info=(':item-name:((name\:foo mirror\:bar))')

local cmd_archive_snapshot
cmd_archive_snapshot=(':dir:_files -/' '::limit:_baz_revisions')

local cmd_archive_version
cmd_archive_version=()

local cmd_archive_fixup
cmd_archive_fixup=()

local cmd_make_log
cmd_make_log=('::version:_baz_versions')

local cmd_add_log cmd_add_log_version
cmd_add_log=(':version:_baz_versions')
cmd_add_log_version=($cmd_add_log)

local cmd_remove_log cmd_remove_log_version
cmd_remove_log=(':version:_baz_log_versions')
cmd_remove_log_version=($cmd_remove_log)

local cmd_abrowse
cmd_abrowse=('::LIMIT:_baz_revisions')

local cmd_cat_log
cmd_cat_log=(':revision-spec:_baz_local_revisions')

local cmd_changelog
cmd_changelog=('::version:_baz_versions')

local cmd_log_for_merge
cmd_log_for_merge=('::version:_baz_versions')

local cmd_merges
cmd_merges=(':INTO:_baz_revisions' '::FROM:_baz_revisions')

local cmd_new_merges
cmd_new_merges=('::version:_baz_versions')

local cmd_branch
cmd_branch=(':SOURCE-REVISION:_baz_revisions' ':TAG-VERSION:_baz_versions')

local cmd_star_merge
cmd_star_merge=(':FROM:_baz_revisions')

local cmd_missing cmd_whats_missing
cmd_missing=('::revision:_baz_revisions')
cmd_whats_missing=($cmd_missing)

local cmd_pristines cmd_ls_pristines
cmd_pristines=('::limit:_baz_revisions')
cmd_ls_pristines=($cmd_pristines)

local cmd_lock_pristine
cmd_lock_pristine=(':revision:_baz_revisions')

local cmd_add_pristine
cmd_add_pristine=(':revision:_baz_revisions')

local cmd_find_pristine
cmd_find_pristine=(':revision:_baz_revisions')

local cmd_my_revision_library
cmd_my_revision_library=(':library:_baz_my_revision_library')

local cmd_library_find
cmd_library_find=(':revision:_baz_revisions --library')

local cmd_library_add
cmd_library_add=(':revision:_baz_revisions --exclude-library-revisions')

local cmd_library_remove
cmd_library_remove=(':revision:_baz_revisions --library')

local cmd_library_archives
cmd_library_archives=()

local cmd_library_log
cmd_library_log=(':revision:_baz_revisions --library')

local cmd_library_file
cmd_library_file=(':file:_files' ':revision:_baz_revisions --library')

local cmd_grab
cmd_grab=(':location:_files')

local cmd_parse_package_name
cmd_parse_package_name=(':name:')

local cmd_valid_package_name
cmd_valid_package_name=(':name:')

local cmd_library_config
cmd_library_config=(':library:_baz_libraries')

local cmd_rbrowse
cmd_rbrowse=('::regular expression:')

local cmd_rm
cmd_rm=('*:file:_files')

local cmd_escape
cmd_escape=(':string:')

#mutually exclusive options

local -A excludes
excludes=(
# This first line means that if --output was given, don't complete
# --no-output or --keep. The converse is not true.
--output '--no-output --keep'
--no-output --output

--silent  '         --quiet --report --verbose --debug'
--quiet   '--silent         --report --verbose --debug'
--report  '--silent --quiet          --verbose --debug'
--verbose '--silent --quiet --report           --debug'
--debug   '--silent --quiet --report --verbose        '

--sparse --non-sparse
--non-sparse --sparse

--files       '        --directories --both'
--directories '--files               --both'
--both        '--files --directories       '

--mirror --mirror-from
--mirror-from --mirror

--no-cached --cached-tags
--cached-tags --no-cached

--non-greedy --greedy
--greedy --non-greedy
)

_baz_main () {
  typeset -A opt_args
  local arguments
  if (( CURRENT > 2 )); then
    local cmd=${words[2]}
    local var_cmd=cmd_${cmd//-/_}
    curcontext="${curcontext%:*:*}:baz-$cmd:"
    (( CURRENT-- ))
    shift words

    arguments=()
    local input
    input=(${${(f)"$($BAZ $cmd -h)"}#  })
    shift 6 input

    local i j=1
    local short long arg desc action
    short=()
    long=()
    arg=()
    desc=()
    action=()
    for (( i=1 ; i <= ${#input} ; i++ )); do
      [[ "$input[i]" != *[^\ ]* ]] && continue # stupid blank lines
      short[j]="${${${input[i]}[1,2]}#--}"
      long[j]="${${input[i]#-?, }%% *}"

      arg[j]="${${${input[i]%%  *}##* }##-*}"
      [[ $long[j] == --archive ]] && arg[j]=ARCHIVE # baz doesn't mention this

      desc[j]="${input[i]##*  }"
      if [[ "$input[i+1]" == \ *[^\ ]* ]]; then # description continues
        (( i++ ))
        desc[j]="$desc[j] ${input[i]##*  }"
      fi
      desc[j]="${${desc[j]//\[/\\[}//\]/\\]}" # escape brackets

      case $arg[j] in
      DIR|PATCH-DIR|DEST|OUTPUT|PATH)
        action[j]='_files -/' ;;
      FILES|FILE|SNAP-FILE)
        action[j]='_files' ;;
      MASTER|MASTER-SOURCE|ARCHIVE)
        action[j]='_baz_archives' ;;
      CATEGORY)
        action[j]='_baz_categories' ;;
      BRANCH)
        action[j]='_baz_branches' ;;
      VERSION)
        action[j]='_baz_versions' ;;
      CFG)
        action[j]='_baz_configs' ;;
      LIB)
        action[j]='_baz_libraries' ;;
#      PATCH,FILE) # not sure how to complete this
#        action[j]='_baz_patch_file' ;;
      *)
        action[j]='' ;;
      esac

      (( j++ ))

    done

    local excluded k
    for (( i = 1 ; i < j ; i++ )); do
      excluded=($short[i] $long[i])
      foreach opt (${=excludes[$long[i]]})
        k=$long[(i)$opt]
        excluded=($excluded $short[k] $long[k])
        #excludes matching short options too :-)
      end


      # generate arguments to _arguments ;-)
      # make long and short options mutually exclusive
      [ $short[i] ] && arguments=("$arguments[@]"
        "${hide_short}(${excluded})${short[i]}[${desc[i]}]${arg[i]:+:$arg[i]:$action[i]}")
      [ $long[i] ] && arguments=("$arguments[@]"
        "(${excluded})${long[i]}[${desc[i]}]${arg[i]:+:$arg[i]:$action[i]}")
    done

    arguments=("$arguments[@]" "${(@P)var_cmd-*:FILE:_files}")
  else
    local help
    local -U cmds
    help=(${(f)"$($BAZ help)"})
    cmds=(${${${${(M)help:#* :*}/ #: #/:}%% ##}## #})
    arguments=(':commands:(($cmds))')
  fi
  _arguments -S -A '-*' \
    {"${hide_short}(: -)-V",'(: -)--version'}'[display version]' \
    {"${hide_short}(: -)-h",'(: -)--help'}'[display help]' \
    '(: -)-H[display verbose help]' \
    "$arguments[@]"
}

_baz_main "$@"


----- End forwarded message -----


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [mdz@canonical.com: Bug#285745: Completion for baz]
  2004-12-15 17:23 [mdz@canonical.com: Bug#285745: Completion for baz] Clint Adams
@ 2004-12-16  2:47 ` Felix Rosencrantz
  2004-12-16  3:23   ` Clint Adams
  0 siblings, 1 reply; 4+ messages in thread
From: Felix Rosencrantz @ 2004-12-16  2:47 UTC (permalink / raw)
  To: zsh-workers

What is baz?  Some quick web searches didn't really turn anything up.

It sounds like it is an offshoot of Tom Lord's Arch.  The _larch
completion was something I generated based on the help output from the
Tom Lord's arch tool back in 2002.   It looks like _tla might be the
better completion function for arch now.  It was added in 2004.  So it
seems like _larch should be removed from the distribution. It's large,
and doesn't seem like it would be used by folks. (correct me if I'm
wrong)

I'm not too familiar arch, and any offshoots. So if tla, larch, and 
baz are all different flavors of arch, it would make sense to somehow
combine then. If there are a bunch of flavors of this tool, it would
be nice if someone could give a good pointer.

-FR.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [mdz@canonical.com: Bug#285745: Completion for baz]
  2004-12-16  2:47 ` Felix Rosencrantz
@ 2004-12-16  3:23   ` Clint Adams
  2004-12-16  8:01     ` Robert Collins
  0 siblings, 1 reply; 4+ messages in thread
From: Clint Adams @ 2004-12-16  3:23 UTC (permalink / raw)
  To: Felix Rosencrantz; +Cc: zsh-workers, mdz, robert.collins

> What is baz?  Some quick web searches didn't really turn anything up.

I believe that it is the binary name of the software described at
http://bazaar.canonical.com/ .  I've never used it.

> It sounds like it is an offshoot of Tom Lord's Arch.  The _larch
> completion was something I generated based on the help output from the
> Tom Lord's arch tool back in 2002.   It looks like _tla might be the
> better completion function for arch now.  It was added in 2004.  So it
> seems like _larch should be removed from the distribution. It's large,
> and doesn't seem like it would be used by folks. (correct me if I'm
> wrong)

larch was the original implementation of Arch, thusly named because
there's already an 'arch' binary present on most systems.  It was a
shell script and some C programs reimplementing FTP and whatnot.  I've
never used it.

> I'm not too familiar arch, and any offshoots. So if tla, larch, and 
> baz are all different flavors of arch, it would make sense to somehow
> combine then. If there are a bunch of flavors of this tool, it would
> be nice if someone could give a good pointer.

It looks as though baz is diverging from tla in terms of UI as well as
archive format.  ArX ( http://www.nongnu.org/arx/ ), which I have also
never used, is a fork of tla that I believe is completely incompatible
by this point.  I believe that there have been other Arch forks and
reimplementations, but I can't think of any of their names.

Canonical guys should feel free to correct me on any of this.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [mdz@canonical.com: Bug#285745: Completion for baz]
  2004-12-16  3:23   ` Clint Adams
@ 2004-12-16  8:01     ` Robert Collins
  0 siblings, 0 replies; 4+ messages in thread
From: Robert Collins @ 2004-12-16  8:01 UTC (permalink / raw)
  To: Clint Adams; +Cc: Felix Rosencrantz, zsh-workers, mdz

[-- Attachment #1: Type: text/plain, Size: 1950 bytes --]

On Wed, 2004-12-15 at 22:23 -0500, Clint Adams wrote:
> > What is baz?  Some quick web searches didn't really turn anything up.
> 
> I believe that it is the binary name of the software described at
> http://bazaar.canonical.com/ .  I've never used it.

Yup.

> larch was the original implementation of Arch, thusly named because
> there's already an 'arch' binary present on most systems.  It was a
> shell script and some C programs reimplementing FTP and whatnot.  I've
> never used it.

larch is a) known buggy, b) not supported upstream, c) superseded - tla
(& anything branched from it) is a superset of larch functionality.

> > I'm not too familiar arch, and any offshoots. So if tla, larch, and 
> > baz are all different flavors of arch, it would make sense to somehow
> > combine then. If there are a bunch of flavors of this tool, it would
> > be nice if someone could give a good pointer.

They are roughly the same, but there are some key differences - for
starters the UI's are quite different, and that gap is growing as we
overhaul the UI in baz. There may be model changes in the future -
though we do want to minimise those. I'm quite happy if the completions
are merged... but baz is a moving target (monthly releases...).

> It looks as though baz is diverging from tla in terms of UI as well as
> archive format.  ArX ( http://www.nongnu.org/arx/ ), which I have also
> never used, is a fork of tla that I believe is completely incompatible
> by this point.  I believe that there have been other Arch forks and
> reimplementations, but I can't think of any of their names.

Bazaar has a very strong UI focus, but is also has a custom archive
format that we hope will enable greater flexability in time. We are
talking with upstream (tla) in the hopes that they will adopt what we do
(or a lookalike :)).

Cheers,
Rob

-- 
GPG key available at: <http://www.robertcollins.net/keys.txt>.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-12-16  8:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-12-15 17:23 [mdz@canonical.com: Bug#285745: Completion for baz] Clint Adams
2004-12-16  2:47 ` Felix Rosencrantz
2004-12-16  3:23   ` Clint Adams
2004-12-16  8:01     ` Robert Collins

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).