| #!/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()) | |