~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

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
 
155
148
        msg = "No known merge type %s. Supported types are:\n%s" %\
156
149
            (typestring, type_list)
157
150
        raise BzrCommandError(msg)
 
151
    
 
152
 
 
153
def get_merge_type(typestring):
 
154
    """Attempt to find the merge class/factory associated with a string."""
 
155
    from merge import merge_types
 
156
    try:
 
157
        return merge_types[typestring][0]
 
158
    except KeyError:
 
159
        templ = '%s%%7s: %%s' % (' '*12)
 
160
        lines = [templ % (f[0], f[1][1]) for f in merge_types.iteritems()]
 
161
        type_list = '\n'.join(lines)
 
162
        msg = "No known merge type %s. Supported types are:\n%s" %\
 
163
            (typestring, type_list)
 
164
        raise BzrCommandError(msg)
158
165
 
159
166
 
160
167
def _builtin_commands():
349
356
    return parsed
350
357
 
351
358
 
 
359
 
 
360
 
352
361
# list of all available options; the rhs can be either None for an
353
362
# option that takes no argument, or a constructor function that checks
354
363
# the type.
642
651
 
643
652
    try:
644
653
        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))
 
654
            return run_bzr(argv[1:])
 
655
        finally:
 
656
            # do this here inside the exception wrappers to catch EPIPE
 
657
            sys.stdout.flush()
653
658
    except BzrCommandError, e:
654
659
        # command line syntax error, etc
655
660
        log_error(str(e))