X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=release;h=e9a29ff002fd14bd06440a25ac5f958c2f6b32bc;hb=001dcc94aaba89a5fed1a328496bf83dba5bfb79;hp=88e09dc7f195254599bc27b2088233542ff57a5e;hpb=0bbe6e2dbf0cfbdf7bc063f052c7494a8f16637f;p=dcpomatic.git diff --git a/release b/release index 88e09dc7f..e9a29ff00 100755 --- a/release +++ b/release @@ -4,78 +4,53 @@ import os import sys import datetime import shutil +import version +import argparse -def command(c): - os.system(c) - print c - -def release_version(s): - s = s[1:-1] - if s.endswith('pre'): - s = s[0:-3] - p = s.split('.') - return '0.%02d' % int(p[1]) - -def new_pre_version(s): - s = s[1:-1] - p = s.split('.') - return '0.%02dpre' % (int(p[1]) + 1) +parser = argparse.ArgumentParser(description = "Build and tag a release.") +parser.add_argument('-f', '--full', dest='full', action='store_const', const=True, help="full release", default=False) +parser.add_argument('-b', '--beta', dest='beta', action='store_const', const=True, help="beta release", default=False) +parser.add_argument('-d', '--debug', dest='debug', action='store_const', const=True, help="show commands but don't do anything", default=False) +args = parser.parse_args() -def rewrite_wscript(version_maker): - f = open('wscript', 'rw') - o = open('wscript.tmp', 'w') - while 1: - l = f.readline() - if l == '': - break - - s = l.split() - if len(s) == 3 and s[0] == "VERSION": - v = version_maker(s[2]) - print "REWRITE %s -> %s" % (s[2], v) - print >>o,"VERSION = '%s'" % v - else: - print >>o,l, - f.close() - o.close() +if not args.full and not args.beta: + print "%s: must specify --full or --beta" % sys.argv[0] + sys.exit(1) - os.rename('wscript.tmp', 'wscript') - return v +def command(c): + if not args.debug: + os.system(c) + print c -def append_to_changelog(version): - f = open('ChangeLog', 'r') - c = f.read() - f.close() +def check_diff_with_user(): + print "Planning to commit... ok? [y/n]" + command("git diff") + if (raw_input() != "y"): + command("git reset --hard") + print 'Aborted' + sys.exit(1) - f = open('ChangeLog', 'w') - now = datetime.datetime.now() - f.write('%d-%02d-%02d Carl Hetherington \n\n\tVersion %s released.\n\n' % (now.year, now.month, now.day, version)) - f.write(c) +if not args.debug and os.popen('git status -s').read() != '': + print '%s: uncommitted changes exist.' % sys.argv[0] + sys.exit(1) -release_version_string = rewrite_wscript(release_version) -append_to_changelog(release_version_string) +m = version.Version.to_release +if args.beta: + m = version.Version.bump_beta -command("git diff") -if (raw_input() != "y"): - command("git reset --hard") - print 'Aborted' - sys.exit(1) +new_version = version.rewrite_wscript(m) +version.append_to_changelog(new_version) +command("dch -b -v %s-1 \"New upstream release.\"" % new_version) -command("git commit -a -m \"Bump version\"") -command("git tag -m \"v%s\" v%s" % (release_version_string, release_version_string)) command("./waf clean") -command("./waf") -command("./waf configure") command("./waf dist") -command("./rebuild-windows") -shutil.copy(os.path.join('build', 'windows', 'DVD-o-matic %s Installer.exe' % release_version_string), '.') -rewrite_wscript(new_pre_version) - -command("git diff") -if (raw_input() != "y"): - command("git reset --hard") - print 'Aborted' - sys.exit(1) +check_diff_with_user() command("git commit -a -m \"Bump version\"") +command("git tag -m \"v%s\" v%s" % (new_version, new_version)) + +if args.full: + version.rewrite_wscript(version.Version.bump_and_to_pre) + check_diff_with_user() + command("git commit -a -m \"Bump version\"")