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
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)
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()