diff --git a/history_reset.py b/history_reset.py new file mode 100644 index 0000000000..c1de5f3ba4 --- /dev/null +++ b/history_reset.py @@ -0,0 +1,74 @@ +''' +Created on 24-12-2012 + +@author: marcin +''' +import os +import re + +rootpath = "." +specfile = "pspec.xml" +newcomment = "First release" +newrelease = "1" +relative_backup_path = "../backup" + +def read_file(path): + with open(path) as f: + return f.read().strip() + +def reset_history(spec): + release = re.compile("(.*?release\s*=\s*)[\"\']\d+[\"\'](.*?)") + newspec = '' + history = False + update1 = False + skipline = False + for line in spec.split("\n"): + if "" in line: history = False + if "" in line: history = True + if history: + if "" in line: + if not update1: newspec = "\n".join((newspec, line)) + update1 = True + if update1: continue + else: + if "%s" % newcomment + if not skipline: newspec = "\n".join((newspec, line)) + else: newspec = "\n".join((newspec, line)) + return newspec + +if __name__ == '__main__': + backup_path = os.path.normpath(os.path.join(rootpath, relative_backup_path)) + if not os.path.isdir(backup_path): + os.makedirs(backup_path) + else: + suffix = 0 + parent_backup = os.path.dirname(backup_path) + base_name = os.path.basename(relative_backup_path) + for d in os.listdir(parent_backup): + if d.startswith(base_name): + ext = d.replace(base_name, '') + if os.path.isdir("%s/%s" % (parent_backup, d)) and ext.isdigit(): + if int(ext) > suffix: + suffix = int(ext) + suffix +=1 + suffix = "0%d" % suffix if suffix < 10 else str(suffix) + os.rename(backup_path, backup_path + suffix) + os.makedirs(backup_path) + + for root, dirs, files in os.walk(rootpath): + if specfile in files: + f = "%s/%s" % (root, specfile) + print(f) + spec = read_file(f) + bf = "%s/%s" % (os.path.normpath(root.replace(rootpath, relative_backup_path)), specfile) + os.makedirs(os.path.dirname(bf)) + open(bf, "w").write(spec) + open(bf, "a").write("\n") + open(f, "w").write(reset_history(spec)) + open(f, "a").write("\n")