def run_rename(args): patchfns.chdir_to_base_dir() patch = patchfns.find_patch_in_series(args.opt_patch) if not patch: return cmd_result.ERROR new_patch = patchfns.patch_name_base(args.new_name) new_patch_exists = patchfns.patch_in_series(new_patch) new_patch_exists = True if new_patch_exists else os.path.isdir(os.path.join(patchfns.QUILT_PC, new_patch)) new_patch_exists = True if new_patch_exists else os.path.exists(patchfns.patch_file_name(new_patch)) if new_patch_exists: output.error('Patch %s exists already, please choose a different name\n' % patchfns.print_patch(new_patch)) return cmd_result.ERROR is_ok = True if patchfns.is_applied(patch): is_ok = patchfns.rename_in_db(patch, new_patch) if is_ok: is_ok = move_file(os.path.join(patchfns.QUILT_PC, patch), os.path.join(patchfns.QUILT_PC, new_patch)) if is_ok: is_ok = patchfns.rename_in_series(patch, new_patch) if is_ok and os.path.exists(patchfns.patch_file_name(patch)): is_ok = move_file(patchfns.patch_file_name(patch), patchfns.patch_file_name(new_patch)) if is_ok: output.write('Patch %s renamed to %s\n' % (patchfns.print_patch(patch), patchfns.print_patch(new_patch))) return cmd_result.OK else: output.error('Renaming of patch %s to %s failed\n' % (patchfns.print_patch(patch), patchfns.print_patch(new_patch))) return cmd_result.ERROR
def run_previous(args): patchfns.chdir_to_base_dir() patch = patchfns.find_patch_in_series(args.arg_patch) if not patch: return cmd_result.ERROR befores = patchfns.applied_before(patch) if not befores: return cmd_result.ERROR output.write('%s\n' % patchfns.print_patch(befores[-1])) return cmd_result.OK
def run_header(args): def read_input(): text = sys.stdin.read() if args.opt_strip_trailing_whitespace: return _trim_trailing_ws(text) return text def get_text(pfile): text = putils.get_patch_hdr(pfile, omit_diffstat=args.opt_strip_diffstat) if args.opt_strip_trailing_whitespace: return _trim_trailing_ws(text) return text def set_text(pfile, text): if args.opt_backup: try: shutil.copy2(pfile, pfile + '~') except Exception as edata: output.perror(edata) if args.opt_strip_trailing_whitespace: text = _trim_trailing_ws(text) putils.set_patch_hdr(pfile, text, omit_diffstat=args.opt_strip_diffstat) patchfns.chdir_to_base_dir() if not args.opt_backup: args.opt_backup = customization.get_config('QUILT_BACKUP') patch = patchfns.find_patch_in_series(args.arg_patch) if not patch: return cmd_result.ERROR patch_file = patchfns.patch_file_name(patch) if args.opt_replace: set_text(patch_file, read_input()) output.write('Replaced header of patch %s\n' % patchfns.print_patch(patch)) elif args.opt_append: set_text(patch_file, get_text(patch_file) + read_input()) output.write('Appended text to header of patch %s\n' % patchfns.print_patch(patch)) elif args.opt_edit: savelang = os.getenv('LANG', None) os.environ['LANG'] = patchfns.ORIGINAL_LANG tempfile = patchfns.gen_tempfile() result = shell.run_cmd('%s %s' % (os.getenv('EDITOR'), tempfile)) if savelang: os.environ['LANG'] = savelang output.error(result.stderr) output.write(result.stdout) text = open(tempfile).read() os.remove(tempfile) if result.eflags != 0: return cmd_result.ERROR set_text(patch_file, text) output.write('Replaced header of patch %s\n' % patchfns.print_patch(patch)) else: if not os.path.exists(patch_file): return cmd_result.OK output.start_pager() output.write(get_text(patch_file)) output.wait_for_pager() return cmd_result.OK
def run_files(args): patchfns.chdir_to_base_dir() first_patch = None if args.opt_combine: args.opt_all = True if args.opt_combine != '-': first_patch = patchfns.find_patch_in_series(args.opt_combine) if not first_patch: return cmd_result.ERROR last_patch = patchfns.find_applied_patch(args.patch) if not last_patch: return cmd_result.ERROR if args.opt_all: if not first_patch: first_patch = patchfns.applied_patches()[0] patches = patchfns.patches_before(last_patch) + [last_patch] if first_patch not in patches: output.error('Patch %s not applied before patch %s\n' % (patchfns.print_patch(first_patch), patchfns.print_patch(last_patch))) return cmd_result.ERROR patches = patches[patches.index(first_patch):] else: patches = [last_patch] use_status = args.opt_verbose and not args.opt_labels # Note: If opt_labels is set, then use_status is not set. output.start_pager() for patch in patches: if args.opt_all and args.opt_verbose and not args.opt_labels: output.write('%s\n' % patch) for filename in sorted(patchfns.files_in_patch(patch)): if args.opt_labels: if args.opt_verbose: output.write('[%s] ' % patch) else: output.write('%s ' % patch) if not use_status: output.write('%s\n' % filename) else: status = ' ' buname = patchfns.backup_file_name(patch, filename) if os.path.exists(buname) and os.path.getsize(buname) > 0: if not os.path.exists(filename) or os.path.getsize(filename) == 0: status = '-' elif os.path.exists(filename) or os.path.getsize(filename) > 0: status = '+' output.write('%s %s\n' % (status, filename)) output.wait_for_pager() return cmd_result.OK
def run_unapplied(args): patchfns.chdir_to_base_dir() if args.arg_patch: start = patchfns.find_patch_in_series(args.arg_patch) if not start: return cmd_result.ERROR patch = patchfns.patch_after(start) else: patch = patchfns.find_unapplied_patch() if not patch: return cmd_result.OK output.start_pager() patches = [patch] + patchfns.patches_after(patch) for patch in patches: output.write('%s\n' % patchfns.print_patch(patch)) output.wait_for_pager() return cmd_result.OK