Split out `expand_sdk_name` function. NFC. (#580)
diff --git a/emsdk.py b/emsdk.py
index 2f4393d..1f57332 100755
--- a/emsdk.py
+++ b/emsdk.py
@@ -2635,6 +2635,47 @@
return 1
+def expand_sdk_name(name):
+ if name in ('latest', 'sdk-latest', 'latest-64bit', 'sdk-latest-64bit'):
+ # This is effectly the default SDK
+ return str(find_latest_releases_sdk('upstream'))
+ elif name in ('latest-fastcomp', 'latest-releases-fastcomp'):
+ return str(find_latest_releases_sdk('fastcomp'))
+ elif name in ('latest-upstream', 'latest-clang-upstream', 'latest-releases-upstream'):
+ return str(find_latest_releases_sdk('upstream'))
+ elif name in ('tot', 'sdk-tot'):
+ return str(find_tot_sdk('upstream'))
+ elif name == 'tot-upstream':
+ return str(find_tot_sdk('upstream'))
+ elif name in ('tot-fastcomp', 'sdk-nightly-latest'):
+ return str(find_tot_sdk('fastcomp'))
+ else:
+ # check if it's a release handled by an emscripten-releases version,
+ # and if so use that by using the right hash. we support a few notations,
+ # x.y.z[-(upstream|fastcomp_])
+ # sdk-x.y.z[-(upstream|fastcomp_])-64bit
+ # TODO: support short notation for old builds too?
+ backend = None
+ fullname = name
+ if '-upstream' in fullname:
+ fullname = name.replace('-upstream', '')
+ backend = 'upstream'
+ elif '-fastcomp' in fullname:
+ fullname = fullname.replace('-fastcomp', '')
+ backend = 'fastcomp'
+ fullname = fullname.replace('sdk-', '').replace('-64bit', '').replace('tag-', '')
+ releases_info = load_releases_info()['releases']
+ release_hash = get_release_hash(fullname, releases_info)
+ if release_hash:
+ if backend is None:
+ if version_key(fullname) >= (1, 39, 0):
+ backend = 'upstream'
+ else:
+ backend = 'fastcomp'
+ return 'sdk-releases-%s-%s-64bit' % (backend, release_hash)
+ return name
+
+
def main():
global BUILD_FOR_TESTING, ENABLE_LLVM_ASSERTIONS, TTY_OUTPUT
@@ -2808,47 +2849,10 @@
return 1
sys.argv = [x for x in sys.argv if not len(x) == 0]
- releases_info = load_releases_info()['releases']
-
# Replace meta-packages with the real package names.
if cmd in ('update', 'install', 'activate'):
for i in range(2, len(sys.argv)):
- arg = sys.argv[i]
- if arg in ('latest', 'sdk-latest', 'latest-64bit', 'sdk-latest-64bit'):
- # This is effectly the default SDK
- sys.argv[i] = str(find_latest_releases_sdk('upstream'))
- elif arg in ('latest-fastcomp', 'latest-releases-fastcomp'):
- sys.argv[i] = str(find_latest_releases_sdk('fastcomp'))
- elif arg in ('latest-upstream', 'latest-clang-upstream', 'latest-releases-upstream'):
- sys.argv[i] = str(find_latest_releases_sdk('upstream'))
- elif arg in ('tot', 'sdk-tot'):
- sys.argv[i] = str(find_tot_sdk('upstream'))
- elif arg == 'tot-upstream':
- sys.argv[i] = str(find_tot_sdk('upstream'))
- elif arg in ('tot-fastcomp', 'sdk-nightly-latest'):
- sys.argv[i] = str(find_tot_sdk('fastcomp'))
- else:
- # check if it's a release handled by an emscripten-releases version,
- # and if so use that by using the right hash. we support a few notations,
- # x.y.z[-(upstream|fastcomp_])
- # sdk-x.y.z[-(upstream|fastcomp_])-64bit
- # TODO: support short notation for old builds too?
- backend = None
- if '-upstream' in arg:
- arg = arg.replace('-upstream', '')
- backend = 'upstream'
- elif '-fastcomp' in arg:
- arg = arg.replace('-fastcomp', '')
- backend = 'fastcomp'
- arg = arg.replace('sdk-', '').replace('-64bit', '').replace('tag-', '')
- release_hash = get_release_hash(arg, releases_info)
- if release_hash:
- if backend is None:
- if version_key(arg) >= (1, 39, 0):
- backend = 'upstream'
- else:
- backend = 'fastcomp'
- sys.argv[i] = 'sdk-releases-%s-%s-64bit' % (backend, release_hash)
+ sys.argv[i] = expand_sdk_name(sys.argv[i])
if cmd == 'list':
print('')
@@ -2879,6 +2883,7 @@
key=lambda x: [int(v) if v.isdigit() else -1 for v in x.split('.')],
reverse=True,
)
+ releases_info = load_releases_info()['releases']
for ver in releases_versions:
print(' %s %s' % (ver, installed_sdk_text('sdk-releases-upstream-%s-64bit' % get_release_hash(ver, releases_info))))
print()