diff --git a/src/TruffleSqueak-Core.package/Polyglot.class/class/installLanguage.st b/src/TruffleSqueak-Core.package/Polyglot.class/class/installLanguage.st index c2b46eb83..b66b3c712 100644 --- a/src/TruffleSqueak-Core.package/Polyglot.class/class/installLanguage.st +++ b/src/TruffleSqueak-Core.package/Polyglot.class/class/installLanguage.st @@ -1,6 +1,8 @@ helpers installLanguage - | languageId version | + | modulesPath languageId version | + modulesPath := (FSLocator vmDirectory resolve: '../modules'). + modulesPath isDirectory ifFalse: [ self error: 'Unable to find modules/ directory.' ]. languageId := UIManager default chooseFrom: #('JavaScript' 'Ruby' 'Python' 'Java' 'LLVM' 'Wasm') values: #('js' 'ruby' 'python' 'java' 'llvm' 'wasm') @@ -8,4 +10,4 @@ installLanguage version := UIManager default request: 'Select a version:' initialAnswer: ((Java type: 'java.lang.System') getProperty: 'org.graalvm.version' and: 'unknown'). - self installLanguage: languageId version: version \ No newline at end of file + self installLanguage: languageId version: version path: modulesPath fullName \ No newline at end of file diff --git a/src/TruffleSqueak-Core.package/Polyglot.class/class/installLanguage.version.path..st b/src/TruffleSqueak-Core.package/Polyglot.class/class/installLanguage.version.path..st new file mode 100644 index 000000000..72dd741d6 --- /dev/null +++ b/src/TruffleSqueak-Core.package/Polyglot.class/class/installLanguage.version.path..st @@ -0,0 +1,15 @@ +helpers +installLanguage: languageId version: version path: path + | downloader | + [ downloader := Java type: 'org.graalvm.maven.downloader.Main' ] + on: Error + do: [ self error: 'Unable to find Maven Downloader. Additional languages can only be installed in a JVM standalone of TruffleSqueak.']. + 'Installing language and its dependencies...' displayProgressFrom: 0 to: 1 during: [ :bar | + bar value: 0. + downloader main: { + '-o'. path. + '-v'. version. + '-a'. languageId + }. + ]. + self inform: 'Success! Please restart TruffleSqueak for the language to become available. You can also install more languages now.' \ No newline at end of file diff --git a/src/TruffleSqueak-Core.package/Polyglot.class/methodProperties.json b/src/TruffleSqueak-Core.package/Polyglot.class/methodProperties.json index e0714cba2..bc6f539b5 100644 --- a/src/TruffleSqueak-Core.package/Polyglot.class/methodProperties.json +++ b/src/TruffleSqueak-Core.package/Polyglot.class/methodProperties.json @@ -33,8 +33,9 @@ "iconWASM" : "fn 6/26/2021 15:10", "import:" : "fn 11/11/2018 21:34", "initialize" : "fn 1/24/2020 14:41", - "installLanguage" : "fn 2/17/2024 13:19", + "installLanguage" : "fn 2/17/2024 16:36", "installLanguage:version:" : "fn 2/17/2024 13:19", + "installLanguage:version:path:" : "fn 2/17/2024 16:35", "isPermitted:" : "fn 1/26/2021 17:27", "isPolyglotEvalAllowed" : "fn 5/13/2020 17:37", "languageIdHost" : "fn 6/25/2021 13:43", diff --git a/src/TruffleSqueak-Tests.package/PolyglotTest.class/instance/testInstallLanguage.st b/src/TruffleSqueak-Tests.package/PolyglotTest.class/instance/testInstallLanguage.st index 107c2bb64..a31b0b4b8 100644 --- a/src/TruffleSqueak-Tests.package/PolyglotTest.class/instance/testInstallLanguage.st +++ b/src/TruffleSqueak-Tests.package/PolyglotTest.class/instance/testInstallLanguage.st @@ -1,4 +1,4 @@ testing testInstallLanguage Java primitiveIsHostLookupAllowed ifFalse: [ ^self ]. - Polyglot installLanguage: 'js' version: '23.1.0' \ No newline at end of file + Polyglot installLanguage: 'js' version: '23.1.0' path: Smalltalk imagePath \ No newline at end of file diff --git a/src/TruffleSqueak-Tests.package/PolyglotTest.class/methodProperties.json b/src/TruffleSqueak-Tests.package/PolyglotTest.class/methodProperties.json index 2f0dd2579..a15c33782 100644 --- a/src/TruffleSqueak-Tests.package/PolyglotTest.class/methodProperties.json +++ b/src/TruffleSqueak-Tests.package/PolyglotTest.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "testInstallLanguage" : "fn 2/17/2024 14:50", + "testInstallLanguage" : "fn 2/17/2024 16:36", "testLanguageInfo" : "fn 2/11/2021 10:54", "testPolyglotBindings" : "fn 11/28/2019 14:53", "testPolyglotEval" : "fn 6/27/2021 12:15" } }