diff options
author | David Robillard <d@drobilla.net> | 2017-10-07 12:31:19 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2017-10-07 12:31:19 +0200 |
commit | 067198b33c457211d270c6ee63741cad05eeca54 (patch) | |
tree | 4b350de2b5252ecbed9281e82837dfd09c5c1c2a | |
parent | c5b2c22fd6d78be36acf0c26f9aa78e435a9986e (diff) | |
download | autowaf-067198b33c457211d270c6ee63741cad05eeca54.tar.gz autowaf-067198b33c457211d270c6ee63741cad05eeca54.tar.bz2 autowaf-067198b33c457211d270c6ee63741cad05eeca54.zip |
Add run_script and release utilities
-rw-r--r-- | autowaf.py | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -1028,3 +1028,37 @@ def get_news(in_file, entry_props={}): def news_to_posts(news_file, entry_props, post_meta, post_dir): entries = get_news(news_file, entry_props) write_posts(entries, post_meta, post_dir) + +def run_script(cmds): + for cmd in cmds: + subprocess.check_call(cmd, shell=True) + +def release(name, version, dist_name=None): + if dist_name is None: + dist_name = name.lower() + + dist = '%s-%s.tar.bz2' % (dist_name or name.lower(), version) + try: + os.remove(dist) + os.remove(dist + '.sig') + except: + pass + + status = subprocess.check_output('git status --porcelain', shell=True) + if status: + Logs.error('error: git working copy is dirty\n' + status) + raise Exception('git working copy is dirty') + + head = subprocess.check_output('git show -s --oneline', shell=True) + head_summary = head[8:].strip().lower() + expected_summary = '%s %s' % (name.lower(), version) + if head_summary != expected_summary: + raise Exception('latest commit "%s" does not match "%s"' % ( + head_summary, expected_summary)) + + run_script(['./waf configure --docs', + './waf', + './waf distcheck', + './waf posts', + 'gpg -b %s' % dist, + 'git tag -s v%s -m "%s %s"' % (version, name, version)]) |