mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
55 lines
1.9 KiB
Python
Executable File
55 lines
1.9 KiB
Python
Executable File
import platform
|
|
import re
|
|
import subprocess
|
|
import sys
|
|
|
|
def is_windows():
|
|
'''Whether we appear to be running on Windows'''
|
|
if platform.system() == 'Windows':
|
|
return True
|
|
if platform.system().startswith('CYGWIN'):
|
|
return True
|
|
return False
|
|
|
|
many_versions = [ '1.4.32', '1.5.31', '1.6.10', '1.6.20' ]
|
|
|
|
def get_single_version():
|
|
# TODO: `shell=True` is a workaround to get CI working on Windows. It breaks the build on Linux.
|
|
versionOutput = subprocess.run(['kotlinc', '-version'], capture_output=True, text=True, shell=is_windows())
|
|
m = re.match(r'.* kotlinc-jvm ([0-9]+)\.([0-9]+\.)([0-9]+) .*', versionOutput.stderr)
|
|
if m is None:
|
|
raise Exception('Cannot detect version of kotlinc (got ' + str(versionOutput) + ')')
|
|
major = m.group(1)
|
|
minor = m.group(2)
|
|
patch = m.group(3)
|
|
current_version = f'{major}.{minor}.{patch}'
|
|
matching_minor_versions = [ version for version in many_versions if version.startswith(f'{major}.{minor}') ]
|
|
if len(matching_minor_versions) == 0:
|
|
raise Exception(f'Cannot find a matching minor version for kotlinc version {current_version} (got {versionOutput}; know about {str(many_versions)})')
|
|
|
|
matching_minor_versions.sort()
|
|
|
|
for version in matching_minor_versions:
|
|
if current_version >= version:
|
|
return version
|
|
|
|
return matching_minor_versions[-1]
|
|
|
|
raise Exception(f'No suitable kotlinc version found for {current_version} (got {versionOutput}; know about {str(many_versions)})')
|
|
|
|
def get_latest_url():
|
|
version = many_versions[-1]
|
|
url = 'https://github.com/JetBrains/kotlin/releases/download/v' + version + '/kotlin-compiler-' + version + '.zip'
|
|
return url
|
|
|
|
if __name__ == "__main__":
|
|
args = sys.argv
|
|
if len(args) != 2:
|
|
raise Exception("Bad arguments")
|
|
command = args[1]
|
|
if command == 'latest-url':
|
|
print(get_latest_url())
|
|
else:
|
|
raise Exception("Unknown command: " + command)
|
|
|