diff --git a/librarymanagement/src/main/contraband/librarymanagement.json b/librarymanagement/src/main/contraband/librarymanagement.json index 1ea41015e..71b18d691 100644 --- a/librarymanagement/src/main/contraband/librarymanagement.json +++ b/librarymanagement/src/main/contraband/librarymanagement.json @@ -150,6 +150,18 @@ { "name": "suffix", "type": "String", "default": "\"\"", "since": "0.0.1" } ] }, + { + "name": "Constant", + "namespace": "sbt.librarymanagement", + "target": "Scala", + "doc": [ + "Cross-versions a module using the string `value`." + ], + "type": "record", + "fields": [ + { "name": "value", "type": "String", "default": "\"\"", "since": "0.0.2" } + ] + }, { "name": "Patch", "namespace": "sbt.librarymanagement", diff --git a/librarymanagement/src/main/scala/sbt/librarymanagement/CrossVersionExtra.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/CrossVersionExtra.scala index c7e8fecc8..b556a8a50 100644 --- a/librarymanagement/src/main/scala/sbt/librarymanagement/CrossVersionExtra.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/CrossVersionExtra.scala @@ -24,6 +24,9 @@ abstract class CrossVersionFunctions { /** Cross-versions a module with the binary version (typically the binary Scala version). */ def binary: CrossVersion = Binary() + /** Cross-versions a module with a constant string (typically the binary Scala version). */ + def constant(value: String): CrossVersion = Constant(value) + /** * Cross-versions a module with the result of prepending `prefix` and appending `suffix` to the binary version * (typically the binary Scala version). See also [[sbt.librarymanagement.Binary]]. @@ -58,6 +61,7 @@ abstract class CrossVersionFunctions { cross match { case _: Disabled => None case b: Binary => append(b.prefix + binaryVersion + b.suffix) + case c: Constant => append(c.value) case _: Patch => append(patchFun(fullVersion)) case f: Full => append(f.prefix + fullVersion + f.suffix) }