示例#1
0
def main(usage):
    if getattr(sys.stdout, "encoding", None) != "UTF-8":
        usage = usage.replace(u"\xaf", u"-")
    parser = OptionParser(usage=usage)
    parser.add_option(
        "--username",
        help="specify SVN username to use when modifying groups or mappings")
    options, args = parser.parse_args()
    if not args or args[0] == "help":
        parser.print_help()
        return 0
    command = args[0]
    command_args = args[1:]

    username_provider = UsernameProvider(options.username)
    server = ServerApi(CODEMAPPING_API_URL, username_provider)
    svn = SvnApi(SVN_BASE_URL)
    command_executor = CommandExecutor(server, svn, sys.stdout)
    command_handler = getattr(command_executor,
                              "cmd_" + command.replace("-", "_"), None)
    try:
        if command_handler is None:
            usage_error("unknown subcommand: {0}".format(command))
        command_handler(*command_args)
        return 0
    except (ExecutionError, UsageError, IOError) as e:
        if isinstance(e, IOError) and e.errno == EPIPE:
            return 1
        if isinstance(e, UsageError):
            parser.print_help()
            sys.stderr.write("\n")
        sys.stderr.write("codemapper: error: {0}\n".format(e))
        return 1
示例#2
0
 def setUp(self, groups=None, mappings=None, paths=None):
     if groups is None:
         groups = []
     if mappings is None:
         mappings = []
     self._groups = groups
     self._mappings = mappings
     self._server = FakeServerApi(groups, mappings)
     self._svn = FakeSvnApi(paths)
     self._stdout = StringIO()
     self._command_executor = CommandExecutor(self._server, self._svn,
                                              self._stdout)
     self._saved_cwd = getcwd()
     self._tmpdir = mkdtemp(suffix="test-codemapper", dir="/tmp")
     chdir(self._tmpdir)
示例#3
0
    def run_command(self):
        svn_helper = SvnOperatorHelper(self.product_info_list)
        svn_helper.create_source_dir()
        cmd_queue = svn_helper.fill_cmd_text_to_queue()

        while cmd_queue.qsize() > 0:
            executor_list = []

            for i in range(ConfigDict.get_best_thread_number()):
                if cmd_queue.qsize() > 0:
                    cmd_executor = CommandExecutor('cmd_executor_' + str(i), cmd_queue)
                    executor_list.append(cmd_executor)
                    cmd_executor.start()
                else:
                    break

            for j in range(len(executor_list)):
                executor_list[j].join()