rendered paste bodyimport pysvnimport osimport zipfileimport reimport shutilimport sysall_addons = ['AbacusLib', 'BabbleLib', 'CrayonLib', 'FuBar', 'FuBar_AmmoFu', 'FuBar_BagFu', 'FuBar_ClockFu', 'FuBar_DebugFu', 'FuBar_DurabilityFu', 'FuBar_ExperienceFu', 'FuBar_ExpRepGlueFu', 'FuBar_HonorFu', 'FuBar_LocationFu', 'FuBar_MicroMenuFu', 'FuBar_MoneyFu', 'FuBar_PerformanceFu', 'FuBar_RestFu', 'FuBar_TopScoreFu', 'FuBar-compat-1.0', 'FuBarPlugin-1.2', 'GloryLib', 'JostleLib', 'TabletLib', 'TouristLib']addons = sys.argv[1:]if not addons: addons = all_addonsstarter_pack = ['FuBar_AmmoFu', 'FuBar_BagFu', 'FuBar_ClockFu', 'FuBar_DurabilityFu', 'FuBar_ExperienceFu', 'FuBar_HonorFu', 'FuBar_LocationFu', 'FuBar_MoneyFu', 'FuBar_PerformanceFu']starter_pack_version = 0client = pysvn.Client()last_rev = 3362 # keep thismain_author = 'ckknight'for f in os.listdir('.'): if f.startswith('FuBar-StarterPack-') and f.endswith('.zip'): os.remove(f) breakfor dir in addons: for f in os.listdir('.'): if f.startswith(dir + '-') and f.endswith('.zip'): os.remove(f) for f in os.listdir('.'): if f.startswith(dir + '-') and f.endswith('-CHANGELOG.txt'): os.remove(f) if not os.access(dir, 0): print 'Checking out', dir client.checkout('http://svn.wowace.com/root/trunk/' + dir, dir) else: print 'Updating', dir client.update(dir) minor_version = client.info(dir).commit_revision.number for dirpath, dirnames, filenames in os.walk(dir): if ".svn" not in dirpath: for d in dirnames: if d != ".svn": mv = client.info(os.path.join(dirpath, d)).commit_revision.number if mv > minor_version: minor_version = mv if dir in starter_pack: zip = zipfile.ZipFile('FuBar-StarterPack.zip', os.access('FuBar-StarterPack.zip', 0) and 'a' or 'w', compression=8) for dirpath, dirnames, filenames in os.walk(dir): if not '.svn' in dirpath: for f in filenames: zip.write(os.path.join(dirpath, f)) zip.close() if minor_version > starter_pack_version: starter_pack_version = minor_version if minor_version < last_rev: print('No change') continue f = file(os.path.join(dir, 'README.txt')) line = f.readline() f.close() major_version = re.match('.*? v(\d+\.\d+) \$.*', line).groups()[0] print 'Done updating', dir, major_version + '.' + str(minor_version) changelog = "" start = client.log(dir, limit=1)[0]['revision'].number if last_rev > start: start = last_rev try: logs = client.log(dir, revision_end=pysvn.Revision( pysvn.opt_revision_kind.number, -1 ), revision_start=pysvn.Revision( pysvn.opt_revision_kind.number, last_rev )) except pysvn._pysvn.ClientError: logs = client.log(dir) for l in logs: author = l['author'] m = l['message'] for b in (dir + ' -', dir + ':'): if m.startswith(b): m = m[len(b):].strip() break if author != main_author: m = m.strip() + " (" + author + ")" changelog += m.strip() + '\n' changelog = major_version + '.' + str(minor_version) + ':\n' + changelog f = file(dir + '-' + major_version + '.' + str(minor_version) + '-CHANGELOG.txt', 'w') f.write(changelog) f.close() zip = zipfile.ZipFile(dir + '-' + major_version + '.' + str(minor_version) + '.zip', 'w', compression=8) for dirpath, dirnames, filenames in os.walk(dir): if not '.svn' in dirpath: for f in filenames: if f.endswith('.txt'): shutil.copy2(os.path.join(dirpath, f), os.path.join(dirpath, f) + '.bak') p = file(os.path.join(dirpath, f), 'r') lines = [x.rstrip() for x in p.readlines()] p.close() p = file(os.path.join(dirpath, f), 'w') p.write('\r\n'.join(lines)) p.close() zip.write(os.path.join(dirpath, f)) shutil.move(os.path.join(dirpath, f) + '.bak', os.path.join(dirpath, f)) else: zip.write(os.path.join(dirpath, f)) zip.close()if starter_pack_version > 0: if os.access('FuBar-StarterPack-1.2.' + str(starter_pack_version) + '.zip', 0): os.remove('FuBar-StarterPack-1.2.' + str(starter_pack_version) + '.zip') os.rename('FuBar-StarterPack.zip', 'FuBar-StarterPack-1.2.' + str(starter_pack_version) + '.zip')