| #!/usr/bin/env python3 |
| |
| import json |
| import os |
| import subprocess |
| import sys |
| |
| EMSCRIPTEN_RELEASES_GIT = 'https://chromium.googlesource.com/emscripten-releases' |
| TAGFILE = 'emscripten-releases-tags.json' |
| |
| |
| def get_latest_hash(tagfile): |
| with open(tagfile) as f: |
| versions = json.load(f) |
| latest = versions['aliases']['latest'] |
| return versions['releases'][latest] |
| |
| |
| def get_latest_emscripten(tagfile): |
| latest = get_latest_hash(tagfile) |
| if not os.path.isdir('emscripten-releases'): |
| subprocess.run(['git', 'clone', EMSCRIPTEN_RELEASES_GIT, '--depth', |
| '100'], check=True) |
| # This will fail if the 'latest' revision is not within the most recent |
| # 100 commits; but that shouldn't happen because this script is intended |
| # to be run right after a release is added. |
| info = subprocess.run(['emscripten-releases/src/release-info.py', |
| 'emscripten-releases', latest], |
| stdout=subprocess.PIPE, check=True, text=True).stdout |
| for line in info.split('\n'): |
| tokens = line.split() |
| if len(tokens) and tokens[0] == 'emscripten': |
| return tokens[2] |
| |
| |
| if __name__ == '__main__': |
| emscripten_hash = get_latest_emscripten(TAGFILE) |
| print('Emscripten revision ' + emscripten_hash) |
| if 'GITHUB_ENV' in os.environ: |
| with open(os.environ['GITHUB_ENV'], 'a') as f: |
| f.write(f'EMSCRIPTEN_HASH={emscripten_hash}') |
| sys.exit(0) |
| print('Not a GitHub Action') |
| sys.exit(1) |