| #!/usr/bin/env python3 |
| |
| import json |
| import os |
| import subprocess |
| import sys |
| from collections import OrderedDict |
| |
| script_dir = os.path.dirname(os.path.abspath(__file__)) |
| root_dir = os.path.dirname(script_dir) |
| sys.path.append(root_dir) |
| |
| import emsdk # noqa |
| |
| |
| def version_to_list(version_string): |
| return [int(part) for part in version_string.split('.')] |
| |
| |
| def main(args): |
| if subprocess.check_output(['git', 'status', '--porcelain'], cwd=root_dir).strip(): |
| print('tree is not clean') |
| sys.exit(1) |
| |
| release_info = emsdk.load_releases_info() |
| new_version = version_to_list(release_info['latest']) |
| new_version[-1] += 1 |
| branch_name = 'version_%s' % '_'.join(str(part) for part in new_version) |
| |
| # Create a new git branch |
| subprocess.check_call(['git', 'checkout', '-b', branch_name], cwd=root_dir) |
| |
| new_version = '.'.join(str(part) for part in new_version) |
| new_hash = emsdk.get_emscripten_releases_tot() |
| print('Creating new release: %s -> %s' % (new_version, new_hash)) |
| release_info['releases'][new_version] = new_hash |
| releases = [(k, v) for k, v in release_info['releases'].items()] |
| releases.sort(key=lambda pair: version_to_list(pair[0])) |
| |
| release_info['releases'] = OrderedDict(reversed(releases)) |
| release_info['latest'] = new_version |
| |
| with open(os.path.join(root_dir, 'emscripten-releases-tags.txt'), 'w') as f: |
| f.write(json.dumps(release_info, indent=2)) |
| f.write('\n') |
| |
| subprocess.check_call(os.path.join(script_dir, 'update_bazel_workspace.sh'), cwd=root_dir) |
| |
| # Create auto-generated changes to the new git branch |
| subprocess.check_call(['git', 'add', '-u', '.'], cwd=root_dir) |
| subprocess.check_call(['git', 'commit', '-m', new_version], cwd=root_dir) |
| |
| print('New relase created in branch: `%s`' % branch_name) |
| |
| return 0 |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main(sys.argv[1:])) |