[go: up one dir, main page]

blob: 9cd3df0e5b5897cefaee95d5f6cfcba2a0776c84 [file] [log] [blame]
#!/usr/bin/env python3
# Copyright 2018 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 sys
import urllib.request
import packaging.version
def do_latest():
versions = []
for release in json.load(
urllib.request.urlopen('https://golang.org/dl/?mode=json')):
versions.append(
packaging.version.parse(release['version'].replace('go', '')))
versions.sort()
print(versions[-1])
def get_download_url(version, platform, kind):
if kind == 'prebuilt':
platform = platform.replace('mac', 'darwin')
ext = '.zip' if platform.startswith('windows') else '.tar.gz'
download_url = (
'https://storage.googleapis.com/golang/go%(version)s.%(platform)s%(ext)s'
% {
'version': version,
'platform': platform,
'ext': ext
})
else:
ext = '.tar.gz'
download_url = (
'https://storage.googleapis.com/golang/go%s.src.tar.gz' % (version,))
partial_manifest = {
'url': [download_url],
'ext': ext,
}
print(json.dumps(partial_manifest))
def main():
ap = argparse.ArgumentParser()
ap.add_argument('kind', choices=('prebuilt', 'source'))
sub = ap.add_subparsers(dest='action', required=True)
latest = sub.add_parser('latest')
latest.set_defaults(func=lambda _opts: do_latest())
download = sub.add_parser('get_url')
download.set_defaults(
func=lambda opts: get_download_url(
os.environ['_3PP_VERSION'], os.environ['_3PP_PLATFORM'],
opts.kind))
opts = ap.parse_args()
return opts.func(opts)
if __name__ == '__main__':
sys.exit(main())