blob: 3bcf9b773d125ebfeaf62595f6da40a3cd1a6168 [file] [log] [blame] [edit]
#!/usr/bin/env python3
# Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
import utils
if utils.is_python3():
from html.parser import HTMLParser
import urllib.request
url_request = urllib.request
else:
from HTMLParser import HTMLParser
import urllib
url_request = urllib
import os
import sys
JETBRAINS_KOTLIN_MAVEN_URL = "https://maven.pkg.jetbrains.space/kotlin/p/" \
"kotlin/bootstrap/org/jetbrains/kotlin/"
KOTLIN_RELEASE_URL = JETBRAINS_KOTLIN_MAVEN_URL + "kotlin-compiler/"
def download_newest():
response = url_request.urlopen(KOTLIN_RELEASE_URL)
if response.getcode() != 200:
raise Exception('Url: %s \n returned %s'
% (KOTLIN_RELEASE_URL, response.getcode()))
content = str(response.read())
release_candidates = []
class HTMLContentParser(HTMLParser):
def handle_data(self, data):
if ('-dev-' in data):
release_candidates.append(data)
parser = HTMLContentParser()
parser.feed(content)
top_most_version = (0, 0, 0, 0)
top_most_version_and_build = None
for version in release_candidates:
# The compiler version is on the form <major>.<minor>.<revision>-dev-<build>/
version = version.replace('/', '')
version_build_args = version.split('-')
version_components = version_build_args[0].split('.')
version_components.append(version_build_args[2])
current_version = tuple(map(int, version_components))
if (current_version > top_most_version):
top_most_version = current_version
top_most_version_and_build = version
if (top_most_version_and_build is None):
raise Exception('Url: %s \n returned %s'
% (KOTLIN_RELEASE_URL, response.getcode()))
# We can now download all files related to the kotlin compiler version.
print("Downloading version: " + top_most_version_and_build)
kotlinc_lib = os.path.join(
utils.THIRD_PARTY, "kotlin", "kotlin-compiler-dev", "kotlinc", "lib")
utils.DownloadFromGoogleCloudStorage(
os.path.join(
utils.THIRD_PARTY, "kotlin", "kotlin-compiler-dev.tar.gz.sha1"))
download_and_save(
JETBRAINS_KOTLIN_MAVEN_URL + "kotlin-compiler/{0}/kotlin-compiler-{0}.jar"
.format(top_most_version_and_build), kotlinc_lib, "kotlin-compiler.jar")
download_and_save(
JETBRAINS_KOTLIN_MAVEN_URL + "kotlin-stdlib/{0}/kotlin-stdlib-{0}.jar"
.format(top_most_version_and_build), kotlinc_lib, "kotlin-stdlib.jar")
download_and_save(
JETBRAINS_KOTLIN_MAVEN_URL + "kotlin-reflect/{0}/kotlin-reflect-{0}.jar"
.format(top_most_version_and_build), kotlinc_lib, "kotlin-reflect.jar")
download_and_save(
JETBRAINS_KOTLIN_MAVEN_URL + "kotlin-script-runtime/{0}/kotlin-script-runtime-{0}.jar"
.format(top_most_version_and_build), kotlinc_lib, "kotlin-script-runtime.jar")
def download_and_save(url, path, name):
print('Downloading: ' + url)
url_request.urlretrieve(url, os.path.join(path, name))
if __name__ == '__main__':
sys.exit(download_newest())