~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

  • Committer: Lalo Martins
  • Date: 2005-09-09 10:58:51 UTC
  • mto: (1185.1.22)
  • mto: This revision was merged to the branch mainline in revision 1390.
  • Revision ID: lalo@exoweb.net-20050909105851-25aa36ea27f4ce7b
creating the new branch constructors

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
# would help with validation and shell completion.
26
26
 
27
27
 
28
 
# TODO: Help messages for options.
29
 
 
30
 
# TODO: Define arguments by objects, rather than just using names.
31
 
# Those objects can specify the expected type of the argument, which
32
 
# would help with validation and shell completion.
33
 
 
34
 
 
35
28
 
36
29
import sys
37
30
import os
41
34
import bzrlib
42
35
import bzrlib.trace
43
36
from bzrlib.trace import mutter, note, log_error, warning
44
 
from bzrlib.errors import BzrError, BzrCheckError, BzrCommandError, NotBranchError
 
37
from bzrlib.errors import BzrError, BzrCheckError, BzrCommandError
45
38
from bzrlib.branch import find_branch
46
39
from bzrlib import BZRDIR
47
40
 
76
69
def _parse_revision_str(revstr):
77
70
    """This handles a revision string -> revno.
78
71
 
79
 
    This always returns a list.  The list will have one element for 
 
72
    This always returns a list.  The list will have one element for
 
73
    each revision.
80
74
 
81
75
    It supports integers directly, but everything else it
82
 
    defers for passing to Branch.get_revision_info()
 
76
    defers for passing to RevisionSpec.
83
77
 
84
78
    >>> _parse_revision_str('234')
85
79
    [234]
155
149
        msg = "No known merge type %s. Supported types are:\n%s" %\
156
150
            (typestring, type_list)
157
151
        raise BzrCommandError(msg)
 
152
    
 
153
 
 
154
def get_merge_type(typestring):
 
155
    """Attempt to find the merge class/factory associated with a string."""
 
156
    from merge import merge_types
 
157
    try:
 
158
        return merge_types[typestring][0]
 
159
    except KeyError:
 
160
        templ = '%s%%7s: %%s' % (' '*12)
 
161
        lines = [templ % (f[0], f[1][1]) for f in merge_types.iteritems()]
 
162
        type_list = '\n'.join(lines)
 
163
        msg = "No known merge type %s. Supported types are:\n%s" %\
 
164
            (typestring, type_list)
 
165
        raise BzrCommandError(msg)
158
166
 
159
167
 
160
168
def _builtin_commands():
349
357
    return parsed
350
358
 
351
359
 
 
360
 
 
361
 
352
362
# list of all available options; the rhs can be either None for an
353
363
# option that takes no argument, or a constructor function that checks
354
364
# the type.
642
652
 
643
653
    try:
644
654
        try:
645
 
            try:
646
 
                return run_bzr(argv[1:])
647
 
            finally:
648
 
                # do this here inside the exception wrappers to catch EPIPE
649
 
                sys.stdout.flush()
650
 
        #wrap common errors as CommandErrors.
651
 
        except (NotBranchError,), e:
652
 
            raise BzrCommandError(str(e))
 
655
            return run_bzr(argv[1:])
 
656
        finally:
 
657
            # do this here inside the exception wrappers to catch EPIPE
 
658
            sys.stdout.flush()
653
659
    except BzrCommandError, e:
654
660
        # command line syntax error, etc
655
661
        log_error(str(e))