Add dependency scopes option for scripting resolvers

This commit is contained in:
Ilya Muradyan
2020-07-12 04:27:28 +03:00
parent 742b98bed6
commit 1ac9b4c38f
8 changed files with 108 additions and 9 deletions
@@ -9,7 +9,7 @@ import kotlin.script.experimental.api.*
import kotlin.script.experimental.dependencies.ExternalDependenciesResolver
private val nameRegex = Regex("^[^\\S\\r\\n]*([a-zA-Z][a-zA-Z0-9-_]*)\\b")
private val valueRegex = Regex("^[^\\S\\r\\n]*([a-zA-Z0-9-_]+)\\b")
private val valueRegex = Regex("^[^\\S\\r\\n]*([a-zA-Z0-9-_,]+)\\b")
private val equalsRegex = Regex("^[^\\S\\r\\n]*=")
/**
@@ -0,0 +1,35 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package kotlin.script.experimental.dependencies.impl
import kotlin.script.experimental.dependencies.ExternalDependenciesResolver
fun ExternalDependenciesResolver.Options.value(name: DependenciesResolverOptionsName) =
value(name.key)
fun ExternalDependenciesResolver.Options.flag(name: DependenciesResolverOptionsName) =
flag(name.key)
operator fun MutableMap<String, String>.set(key: DependenciesResolverOptionsName, value: String) {
put(key.key, value)
}
/**
* These names are for convenience only.
* They don't have to be implemented in all resolvers.
*/
enum class DependenciesResolverOptionsName(optionName: String? = null) {
TRANSITIVE,
SCOPE;
val key = optionName ?: name.toLowerCase()
}
val ExternalDependenciesResolver.Options.transitive
get() = flag(DependenciesResolverOptionsName.TRANSITIVE)
val ExternalDependenciesResolver.Options.dependencyScopes
get() = value(DependenciesResolverOptionsName.SCOPE)?.split(",")