[JS IR] Support additional repositories in CLI (compiler part)

This commit is contained in:
Roman Artemev
2020-11-24 11:15:47 +03:00
parent e22711d17f
commit cd9e341fa9
7 changed files with 11 additions and 5 deletions
@@ -134,7 +134,7 @@ fun main(args: Array<String>) {
}
val resolvedLibraries = jsResolveLibraries(
dependencies, messageCollectorLogger(MessageCollector.NONE)
dependencies, emptyList(), messageCollectorLogger(MessageCollector.NONE)
)
buildKLib(moduleName, listOfKtFilesFrom(inputFiles), outputPath, resolvedLibraries, listOfKtFilesFrom(commonSources))
@@ -175,6 +175,7 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
val resolvedLibraries = jsResolveLibraries(
libraries,
configuration[JSConfigurationKeys.REPOSITORIES] ?: emptyList(),
messageCollectorLogger(configuration[CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY] ?: error("Could not find message collector"))
)
@@ -37,12 +37,12 @@ class JsLibraryResolver(
}
// TODO: This is a temporary set of library resolver policies for js compiler.
fun jsResolveLibraries(libraries: List<String>, logger: Logger): KotlinLibraryResolveResult {
fun jsResolveLibraries(libraries: List<String>, repositories: Collection<String>, logger: Logger): KotlinLibraryResolveResult {
val unresolvedLibraries = libraries.map { UnresolvedLibrary(it, null) }
val libraryAbsolutePaths = libraries.map { File(it).absolutePath }
// Configure the resolver to only work with absolute paths for now.
val libraryResolver = JsLibraryResolver(
repositories = emptyList(),
repositories = repositories.toList(),
directLibs = libraryAbsolutePaths,
distributionKlib = null,
localKotlinDir = null,
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.incremental.js.IncrementalResultsConsumer;
import org.jetbrains.kotlin.serialization.js.ModuleKind;
import java.io.File;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -89,4 +90,7 @@ public class JSConfigurationKeys {
public static final CompilerConfigurationKey<ErrorTolerancePolicy> ERROR_TOLERANCE_POLICY =
CompilerConfigurationKey.create("set up policy to ignore compilation errors");
public static final CompilerConfigurationKey<Collection<String>> REPOSITORIES =
CompilerConfigurationKey.create("set up additional repository paths");
}
@@ -72,7 +72,7 @@ class ApiTest : KotlinTestWithEnvironment() {
val fullRuntimeKlib: String = System.getProperty("kotlin.js.full.stdlib.path")
val resolvedLibraries =
jsResolveLibraries(listOf(File(fullRuntimeKlib).absolutePath), messageCollectorLogger(MessageCollector.NONE))
jsResolveLibraries(listOf(File(fullRuntimeKlib).absolutePath), emptyList(), messageCollectorLogger(MessageCollector.NONE))
val project = environment.project
val configuration = environment.configuration
@@ -103,7 +103,7 @@ abstract class BasicIrBoxTest(
compilationCache[it] ?: error("Can't find compiled module for dependency $it")
}).map { File(it).absolutePath }
val resolvedLibraries = jsResolveLibraries(allKlibPaths, messageCollectorLogger(MessageCollector.NONE))
val resolvedLibraries = jsResolveLibraries(allKlibPaths, emptyList(), messageCollectorLogger(MessageCollector.NONE))
val actualOutputFile = outputFile.absolutePath.let {
if (!isMainModule) it.replace("_v5.js", "/") else it
@@ -116,6 +116,7 @@ fun readLibrariesFromConfiguration(configuration: CompilerConfiguration): List<M
val libraries = scriptDependencies.map { (it as JsDependency).path }
val resolvedLibraries = jsResolveLibraries(
libraries,
emptyList(),
object : Logger {
private val collector = configuration[CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY] ?: MessageCollector.NONE
override fun warning(message: String) = collector.report(CompilerMessageSeverity.STRONG_WARNING, message)