~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-02-11 02:16:42 UTC
  • mfrom: (5017.1.2 initialize)
  • Revision ID: pqm@pqm.ubuntu.com-20100211021642-eitum30b2e09oalf
(mbp) Add bzrlib.initialize

Show diffs side-by-side

added added

removed removed

Lines of Context:
59
59
    deprecated_function,
60
60
    deprecated_in,
61
61
    deprecated_method,
62
 
    suppress_deprecation_warnings,
63
62
    )
64
63
 
65
64
 
1078
1077
        "bzr plugin-provider-db check")
1079
1078
 
1080
1079
 
1081
 
def main(argv=None):
1082
 
    """Main entry point of command-line interface.
1083
 
 
1084
 
    :param argv: list of unicode command-line arguments similar to sys.argv.
1085
 
        argv[0] is script name usually, it will be ignored.
1086
 
        Don't pass here sys.argv because this list contains plain strings
1087
 
        and not unicode; pass None instead.
1088
 
 
1089
 
    :return: exit code of bzr command.
1090
 
    """
1091
 
    import bzrlib.ui
1092
 
    bzrlib.ui.ui_factory = bzrlib.ui.make_ui_for_terminal(
1093
 
        sys.stdin, sys.stdout, sys.stderr)
1094
 
 
1095
 
    # Is this a final release version? If so, we should suppress warnings
1096
 
    if bzrlib.version_info[3] == 'final':
1097
 
        suppress_deprecation_warnings(override=True)
 
1080
 
 
1081
def _specified_or_unicode_argv(argv):
 
1082
    # For internal or testing use, argv can be passed.  Otherwise, get it from
 
1083
    # the process arguments in a unicode-safe way.
1098
1084
    if argv is None:
1099
 
        argv = osutils.get_unicode_argv()
 
1085
        return osutils.get_unicode_argv()
1100
1086
    else:
1101
1087
        new_argv = []
1102
1088
        try:
1108
1094
                    new_argv.append(a.decode('ascii'))
1109
1095
        except UnicodeDecodeError:
1110
1096
            raise errors.BzrError("argv should be list of unicode strings.")
1111
 
        argv = new_argv
 
1097
        return new_argv
 
1098
 
 
1099
 
 
1100
def main(argv=None):
 
1101
    """Main entry point of command-line interface.
 
1102
 
 
1103
    Typically `bzrlib.initialize` should be called first.
 
1104
 
 
1105
    :param argv: list of unicode command-line arguments similar to sys.argv.
 
1106
        argv[0] is script name usually, it will be ignored.
 
1107
        Don't pass here sys.argv because this list contains plain strings
 
1108
        and not unicode; pass None instead.
 
1109
 
 
1110
    :return: exit code of bzr command.
 
1111
    """
 
1112
    argv = _specified_or_unicode_argv(argv)
1112
1113
    ret = run_bzr_catch_errors(argv)
1113
1114
    bzrlib.ui.ui_factory.log_transport_activity(
1114
1115
        display=('bytes' in debug.debug_flags))
1115
1116
    trace.mutter("return code %d", ret)
1116
 
    osutils.report_extension_load_failures()
1117
1117
    return ret
1118
1118
 
1119
1119
 
1123
1123
    This function assumed that that UI layer is setup, that symbol deprecations
1124
1124
    are already applied, and that unicode decoding has already been performed on argv.
1125
1125
    """
 
1126
    # done here so that they're covered for every test run
1126
1127
    install_bzr_command_hooks()
1127
1128
    return exception_to_return_code(run_bzr, argv)
1128
1129
 
1133
1134
    This is used for the test suite, and might be useful for other programs
1134
1135
    that want to wrap the commandline interface.
1135
1136
    """
 
1137
    # done here so that they're covered for every test run
1136
1138
    install_bzr_command_hooks()
1137
1139
    try:
1138
1140
        return run_bzr(argv)
1188
1190
            yield provider
1189
1191
 
1190
1192
command_providers_registry = ProvidersRegistry()
1191
 
 
1192
 
 
1193
 
if __name__ == '__main__':
1194
 
    sys.exit(main(sys.argv))