| #!/usr/bin/env python3 |
| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import argparse |
| import json |
| import os |
| import urllib.request |
| |
| |
| def _get_last_commit(commit_url): |
| """Returns the last commit of build/fuchsia. |
| The approach is not very ideal since we may want to ignore unrelated |
| changes like the linux_internal.sdk.sha1 file. |
| """ |
| content = urllib.request.urlopen(commit_url).read().decode('utf-8') |
| # Remove the leading json safety prefix. |
| assert content.startswith(")]}'") |
| return json.loads(content[4:])['log'][0]['commit'] |
| |
| |
| def _do_latest(commit_url): |
| print(_get_last_commit(commit_url)) |
| |
| |
| def _get_download_url(sha, archive_url): |
| """Returns the manifest for the following download procedure.""" |
| partial_manifest = { |
| 'url': [archive_url.format(sha)], |
| 'ext': '.tar.gz', |
| } |
| print(json.dumps(partial_manifest)) |
| |
| |
| def main(commit_url, archive_url): |
| ap = argparse.ArgumentParser() |
| sub = ap.add_subparsers() |
| |
| latest = sub.add_parser("latest") |
| latest.set_defaults(func=lambda: _do_latest(commit_url)) |
| |
| download = sub.add_parser("get_url") |
| download.set_defaults(func=lambda: _get_download_url( |
| os.environ.get('_3PP_VERSION', _get_last_commit(commit_url)), |
| archive_url)) |
| |
| opts = ap.parse_args() |
| opts.func() |