diff --git a/lib/manager/sbt/extract.ts b/lib/manager/sbt/extract.ts index 16b20647bae59ec56b2397fa9cde5b7b30d935aa..10b2e0ba66777c83875bb3245d28bd7842d0be06 100644 --- a/lib/manager/sbt/extract.ts +++ b/lib/manager/sbt/extract.ts @@ -20,6 +20,14 @@ const isScalaVersion = (str: string): boolean => const getScalaVersion = (str: string): string => str.replace(/^\s*scalaVersion\s*:=\s*"/, '').replace(/"\s*$/, ''); +/* + https://www.scala-sbt.org/release/docs/Cross-Build.html#Publishing+conventions + */ +const normalizeScalaVersion = (str: string): string => + /^\d+\.\d+\.\d+$/.test(str) + ? str.replace(/^(\d+)\.(\d+)\.\d+$/, '$1.$2') + : str; + const isScalaVersionVariable = (str: string): boolean => /^\s*scalaVersion\s*:=\s*[_a-zA-Z][_a-zA-Z0-9]*\s*$/.test(str); @@ -170,7 +178,7 @@ function parseSbtLine( if (!isComment(line)) { if (isScalaVersion(line)) { isMultiDeps = false; - scalaVersion = getScalaVersion(line); + scalaVersion = normalizeScalaVersion(getScalaVersion(line)); } else if (isScalaVersionVariable(line)) { isMultiDeps = false; scalaVersionVariable = getScalaVersionVariable(line); @@ -227,7 +235,7 @@ function parseSbtLine( scalaVersion || (scalaVersionVariable && variables[scalaVersionVariable] && - variables[scalaVersionVariable].val), + normalizeScalaVersion(variables[scalaVersionVariable].val)), }; if (deps.length) return { deps }; return null; diff --git a/test/manager/sbt/__snapshots__/extract.spec.ts.snap b/test/manager/sbt/__snapshots__/extract.spec.ts.snap index 96fb1dca216c16477a5a3dc520d4d5f311026a27..58f73549a3ffb06a0ebd415e6f7ead1f643e4cc0 100644 --- a/test/manager/sbt/__snapshots__/extract.spec.ts.snap +++ b/test/manager/sbt/__snapshots__/extract.spec.ts.snap @@ -144,7 +144,7 @@ Object { "currentValue": "0.0.1", "datasource": "sbt", "depName": "org.example:foo", - "fileReplacePosition": 192, + "fileReplacePosition": 195, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://example.com/repos/1/", @@ -158,7 +158,7 @@ Object { "currentValue": "0.0.2", "datasource": "sbt", "depName": "org.example:bar_2.12", - "fileReplacePosition": 248, + "fileReplacePosition": 251, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://example.com/repos/1/", @@ -172,7 +172,7 @@ Object { "currentValue": "0.0.3", "datasource": "sbt", "depName": "org.example:baz_2.12", - "fileReplacePosition": 312, + "fileReplacePosition": 315, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://example.com/repos/1/", @@ -186,7 +186,7 @@ Object { "currentValue": "0.0.4", "datasource": "sbt", "depName": "org.example:qux", - "fileReplacePosition": 347, + "fileReplacePosition": 350, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://example.com/repos/1/", @@ -200,7 +200,7 @@ Object { "currentValue": "0.0.5", "datasource": "sbt", "depName": "org.example:quux", - "fileReplacePosition": 406, + "fileReplacePosition": 409, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://example.com/repos/1/", @@ -215,7 +215,7 @@ Object { "datasource": "sbt", "depName": "org.example:quuz_2.12", "depType": "test", - "fileReplacePosition": 550, + "fileReplacePosition": 553, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://example.com/repos/1/", @@ -230,7 +230,7 @@ Object { "datasource": "sbt", "depName": "org.example:corge", "depType": "Provided", - "fileReplacePosition": 608, + "fileReplacePosition": 611, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://example.com/repos/1/", @@ -245,7 +245,7 @@ Object { "datasource": "sbt", "depName": "org.example:grault", "depType": "Test", - "fileReplacePosition": 48, + "fileReplacePosition": 51, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://example.com/repos/1/", @@ -260,7 +260,7 @@ Object { "datasource": "sbt", "depName": "org.example:waldo", "depType": "plugin", - "fileReplacePosition": 1010, + "fileReplacePosition": 1013, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://example.com/repos/1/", diff --git a/test/manager/sbt/_fixtures/scala-version-variable.sbt b/test/manager/sbt/_fixtures/scala-version-variable.sbt index 9cdeb6bb716a296565fc7c214fadca1001230167..fd0abe2efd43aa80c8477de065a4c36b5d9de8f9 100644 --- a/test/manager/sbt/_fixtures/scala-version-variable.sbt +++ b/test/manager/sbt/_fixtures/scala-version-variable.sbt @@ -1,4 +1,4 @@ -val ScalaVersion = "2.12" +val ScalaVersion = "2.12.10" val versionExample = "0.0.8" scalaVersion := ScalaVersion