blob: aa73ba801e774fda980f32e4439ddb65476beef4 [file] [log] [blame]
Ian Zernydcb172e2022-02-22 15:36:45 +01001#!/usr/bin/env python3
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +02002# Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file
3# for details. All rights reserved. Use of this source code is governed by a
4# BSD-style license that can be found in the LICENSE file.
5
Morten Krogh-Jespersen5b557362022-02-16 11:41:48 +01006import utils
7if utils.is_python3():
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +02008 from html.parser import HTMLParser
9 import urllib.request
10 url_request = urllib.request
Morten Krogh-Jespersen5b557362022-02-16 11:41:48 +010011else:
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020012 from HTMLParser import HTMLParser
13 import urllib
14 url_request = urllib
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020015import os
16import sys
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020017
18JETBRAINS_KOTLIN_MAVEN_URL = "https://maven.pkg.jetbrains.space/kotlin/p/" \
19 "kotlin/bootstrap/org/jetbrains/kotlin/"
20KOTLIN_RELEASE_URL = JETBRAINS_KOTLIN_MAVEN_URL + "kotlin-compiler/"
21
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020022
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020023def download_newest():
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020024 response = url_request.urlopen(KOTLIN_RELEASE_URL)
25 if response.getcode() != 200:
26 raise Exception('Url: %s \n returned %s' %
27 (KOTLIN_RELEASE_URL, response.getcode()))
28 content = str(response.read())
29 release_candidates = []
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020030
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020031 class HTMLContentParser(HTMLParser):
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020032
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020033 def handle_data(self, data):
34 if ('-dev-' in data):
35 release_candidates.append(data)
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020036
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020037 parser = HTMLContentParser()
38 parser.feed(content)
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020039
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020040 top_most_version = (0, 0, 0, 0)
41 top_most_version_and_build = None
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020042
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020043 for version in release_candidates:
44 # The compiler version is on the form <major>.<minor>.<revision>-dev-<build>/
45 version = version.replace('/', '')
46 version_build_args = version.split('-')
47 version_components = version_build_args[0].split('.')
48 version_components.append(version_build_args[2])
49 current_version = tuple(map(int, version_components))
50 if (current_version > top_most_version):
51 top_most_version = current_version
52 top_most_version_and_build = version
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020053
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020054 if (top_most_version_and_build is None):
55 raise Exception('Url: %s \n returned %s' %
56 (KOTLIN_RELEASE_URL, response.getcode()))
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020057
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020058 # We can now download all files related to the kotlin compiler version.
59 print("Downloading version: " + top_most_version_and_build)
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020060
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020061 kotlinc_lib = os.path.join(utils.THIRD_PARTY, "kotlin",
62 "kotlin-compiler-dev", "kotlinc", "lib")
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020063
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020064 utils.DownloadFromGoogleCloudStorage(
65 os.path.join(utils.THIRD_PARTY, "kotlin",
66 "kotlin-compiler-dev.tar.gz.sha1"))
67
68 download_and_save(
69 JETBRAINS_KOTLIN_MAVEN_URL +
70 "kotlin-compiler/{0}/kotlin-compiler-{0}.jar".format(
71 top_most_version_and_build), kotlinc_lib, "kotlin-compiler.jar")
72 download_and_save(
73 JETBRAINS_KOTLIN_MAVEN_URL +
74 "kotlin-stdlib/{0}/kotlin-stdlib-{0}.jar".format(
75 top_most_version_and_build), kotlinc_lib, "kotlin-stdlib.jar")
76 download_and_save(
77 JETBRAINS_KOTLIN_MAVEN_URL +
78 "kotlin-reflect/{0}/kotlin-reflect-{0}.jar".format(
79 top_most_version_and_build), kotlinc_lib, "kotlin-reflect.jar")
80 download_and_save(
81 JETBRAINS_KOTLIN_MAVEN_URL +
82 "kotlin-script-runtime/{0}/kotlin-script-runtime-{0}.jar".format(
83 top_most_version_and_build), kotlinc_lib,
84 "kotlin-script-runtime.jar")
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020085
86
87def download_and_save(url, path, name):
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020088 print('Downloading: ' + url)
89 url_request.urlretrieve(url, os.path.join(path, name))
Morten Krogh-Jespersenc69a5542021-09-23 08:10:23 +020090
91
92if __name__ == '__main__':
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020093 sys.exit(download_newest())