in multiversion/src/main/scala/multiversion/buildish/Functions.scala [32:124]
def jarLibrary(
name: String,
deps: StarlarkList[String],
dependencies: StarlarkList[String],
jars: StarlarkList[DependencyConfig],
version_scheme: String,
version_pattern: String,
): Unit =
defs += JarLibraryDef(
name = name,
deps = deps.toArray.toList.asInstanceOf[List[String]] ++ dependencies.toArray.toList
.asInstanceOf[List[String]],
jars = jars.toArray.toList.asInstanceOf[List[DependencyConfig]],
version_scheme = if (version_scheme == "") None else VersionCompatibility(version_scheme),
version_pattern = if (version_pattern == "") None else Some(version_pattern),
targets = Nil,
)
// https://github.com/pantsbuild/pants/blob/1.25.x-twtr/src/python/pants/java/jar/jar_dependency.py
@StarlarkMethod(
name = "jar",
parameters = Array(
new Param(name = "org", named = true),
new Param(name = "name", named = true),
new Param(name = "rev", named = true),
new Param(name = "force", named = true, defaultValue = "True"),
new Param(name = "classifier", named = true, defaultValue = empty_str),
new Param(name = "intransitive", named = true, defaultValue = "False"),
new Param(name = "excludes", named = true, defaultValue = "[]"),
),
doc = "A pre-built Maven repository dependency."
)
def jar(
org: String,
name: String,
rev: String,
force: Boolean,
classifier: String,
intransitive: Boolean,
excludes: StarlarkList[ModuleConfig],
): DependencyConfig =
DependencyConfig(
organization = JsonString(org),
name = name,
version = rev,
classifier = if (classifier == "") None else Some(classifier),
force = force,
transitive = !intransitive,
exclusions = excludes.toArray.toSet.asInstanceOf[Set[ModuleConfig]],
)
@StarlarkMethod(
name = "scala_jar",
parameters = Array(
new Param(name = "org", named = true),
new Param(name = "name", named = true),
new Param(name = "rev", named = true),
new Param(name = "force", named = true, defaultValue = "True"),
new Param(name = "classifier", named = true, defaultValue = empty_str),
new Param(name = "intransitive", named = true, defaultValue = "False"),
new Param(name = "excludes", named = true, defaultValue = "[]"),
),
doc = "A pre-built Maven repository dependency."
)
def scala_jar(
org: String,
name: String,
rev: String,
force: Boolean,
classifier: String,
intransitive: Boolean,
excludes: StarlarkList[ModuleConfig],
): DependencyConfig =
jar(org, name, rev, force, classifier, intransitive, excludes)
.copy(lang = ScalaLanguagesConfig)
@StarlarkMethod(
name = "multiversion_config",
parameters = Array(
new Param(name = "scala_versions", named = true, defaultValue = "[]"),
),
doc = "Configuration for the 3rdparty resolution."
)
def multiversion_config(
scala_versions: StarlarkList[String],
): Unit = {
val sv = scala_versions.toArray.toList.asInstanceOf[List[String]]
if (sv.size != 1) {
sys.error("Only 1 Scala version is currently supported")
}
scalaConfigs += VersionsConfig(sv.head)
}