def write_branch_info(self, branch_info): """ Write branch information to file """ logger.debug("Writing branch information to workdir") full_path = self.archive.get_full_archive_path('/branch_info') write_file_with_text(full_path, json.dumps(branch_info))
def _copy_file_with_pattern(self, path, patterns, exclude): """ Copy file, selecting only lines we are interested in """ full_path = self.archive.get_full_archive_path(path) if not os.path.isfile(path): logger.debug("File %s does not exist", path) return logger.debug("Copying %s to %s with filters %s", path, full_path, str(patterns)) cmd = [] # shlex.split doesn't handle special characters well cmd.append("/bin/sed".encode('utf-8')) cmd.append("-rf".encode('utf-8')) cmd.append(constants.default_sed_file.encode('utf-8')) cmd.append(path.encode('utf8')) sedcmd = Popen(cmd, stdout=PIPE) if exclude is not None: exclude_file = NamedTemporaryFile() exclude_file.write("\n".join(exclude)) exclude_file.flush() cmd = "/bin/grep -v -F -f %s" % exclude_file.name args = shlex.split(cmd.encode("utf-8")) proc = Popen(args, stdin=sedcmd.stdout, stdout=PIPE) sedcmd.stdout.close() stdin = proc.stdout if patterns is None: output = proc.communicate()[0] else: sedcmd = proc if patterns is not None: pattern_file = NamedTemporaryFile() pattern_file.write("\n".join(patterns)) pattern_file.flush() cmd = "/bin/grep -F -f %s" % pattern_file.name args = shlex.split(cmd.encode("utf-8")) proc1 = Popen(args, stdin=sedcmd.stdout, stdout=PIPE) sedcmd.stdout.close() if exclude is not None: stdin.close() output = proc1.communicate()[0] if patterns is None and exclude is None: output = sedcmd.communicate()[0] write_file_with_text(full_path, output.decode('utf-8', 'ignore').strip())
def _copy_file_with_pattern(self, path, patterns, exclude): """ Copy file, selecting only lines we are interested in """ full_path = self.archive.get_full_archive_path(path) if not os.path.isfile(path): logger.debug("File %s does not exist", path) return logger.debug("Copying %s to %s with filters %s", path, full_path, str(patterns)) cmd = "/bin/sed -rf %s %s" % (constants.default_sed_file, path) sedcmd = Popen(shlex.split(cmd.encode('utf-8')), stdout=PIPE) if exclude is not None: exclude_file = NamedTemporaryFile() exclude_file.write("\n".join(exclude)) exclude_file.flush() cmd = "/bin/grep -v -F -f %s" % exclude_file.name args = shlex.split(cmd.encode("utf-8")) proc = Popen(args, stdin=sedcmd.stdout, stdout=PIPE) sedcmd.stdout.close() stdin = proc.stdout if patterns is None: output = proc.communicate()[0] else: sedcmd = proc if patterns is not None: pattern_file = NamedTemporaryFile() pattern_file.write("\n".join(patterns)) pattern_file.flush() cmd = "/bin/grep -F -f %s" % pattern_file.name args = shlex.split(cmd.encode("utf-8")) proc1 = Popen(args, stdin=sedcmd.stdout, stdout=PIPE) sedcmd.stdout.close() if exclude is not None: stdin.close() output = proc1.communicate()[0] if patterns is None and exclude is None: output = sedcmd.communicate()[0] write_file_with_text(full_path, output.decode('utf-8', 'ignore').strip())