diff --git a/librarymanagement/src/main/contraband/librarymanagement.json b/librarymanagement/src/main/contraband/librarymanagement.json index 6497a557f..34d1c8e63 100644 --- a/librarymanagement/src/main/contraband/librarymanagement.json +++ b/librarymanagement/src/main/contraband/librarymanagement.json @@ -138,11 +138,12 @@ "namespace": "sbt.librarymanagement", "target": "Scala", "doc": [ - "Cross-versions a module using the result of applying `remapVersion` to the binary version.", - "For example, if `remapVersion = v => \"2.10\"` and the binary version is \"2.9.2\" or \"2.10\",", - "the module is cross-versioned with \"2.10\"." + "Cross-versions a module using the result of appending `suffix` to the binary version.", + "For example, if `suffix = \"_foo\"` and the binary version is \"2.10\",", + "the module is cross-versioned with \"2.10_foo\"." ], - "type": "record" + "type": "record", + "fields": [ { "name": "suffix", "type": "String", "default": "\"\"", "since": "0.0.1" } ] }, { "name": "Patch", @@ -150,7 +151,7 @@ "target": "Scala", "doc": [ "Cross-versions a module by stripping off -bin-suffix.", - "This is intented for patch-version compatible alternative replacements." + "This is intended for patch-version compatible alternative replacements." ], "type": "record" }, @@ -160,10 +161,11 @@ "target": "Scala", "type": "record", "doc": [ - "Cross-versions a module with the result of applying `remapVersion` to the full version.", - "For example, if `remapVersion = v => \"2.10\"` and the full version is \"2.9.2\" or \"2.10.3\",", - "the module is cross-versioned with \"2.10\"." - ] + "Cross-versions a module with the result of appending `suffix` to the full version.", + "For example, if `suffix = \"_foo\"` and the full version is \"2.12.1\",", + "the module is cross-versioned with \"2.12.1_foo\"." + ], + "fields": [ { "name": "suffix", "type": "String", "default": "\"\"", "since": "0.0.1" } ] } ], "parentsCompanion": "sbt.librarymanagement.CrossVersionFunctions" diff --git a/librarymanagement/src/main/scala/sbt/librarymanagement/CrossVersionExtra.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/CrossVersionExtra.scala index d8d63b7a8..d9227b841 100644 --- a/librarymanagement/src/main/scala/sbt/librarymanagement/CrossVersionExtra.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/CrossVersionExtra.scala @@ -15,9 +15,21 @@ abstract class CrossVersionFunctions { /** Cross-versions a module with the full version (typically the full Scala version). */ def full: CrossVersion = Full() + /** + * Cross-versions a module with the result of appending `suffix` to the full version. + * (typically the full Scala version). See also [[sbt.librarymanagement.Full]] + */ + def fullSuffixed(suffix: String): CrossVersion = Full(suffix) + /** Cross-versions a module with the binary version (typically the binary Scala version). */ def binary: CrossVersion = Binary() + /** + * Cross-versions a module with the result of appending `suffix` to the binary version + * (typically the binary Scala version). See also [[sbt.librarymanagement.Binary]]. + */ + def binarySuffixed(suffix: String): CrossVersion = Binary(suffix) + /** * Cross-versions a module with the full Scala version excluding any `-bin` suffix. */ @@ -41,9 +53,9 @@ abstract class CrossVersionFunctions { def apply(cross: CrossVersion, fullVersion: String, binaryVersion: String): Option[String => String] = cross match { case _: Disabled => None - case _: Binary => append(binaryVersion) + case b: Binary => append(binaryVersion + b.suffix) case _: Patch => append(patchFun(fullVersion)) - case _: Full => append(fullVersion) + case f: Full => append(fullVersion + f.suffix) } /** Constructs the cross-version function defined by `module` and `is`, if one is configured. */