From 3d29b9509994a686f1382190e80e530c5f3f197c Mon Sep 17 00:00:00 2001
From: Sergio Zharinov <zharinov@users.noreply.github.com>
Date: Tue, 28 Jul 2020 12:37:55 +0400
Subject: [PATCH] feat(sbt): Update scala version (#6816)

* feat(sbt): Update scala version

* Fixes

* Fixes

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
---
 lib/manager/common.ts                         |  1 +
 .../sbt/__snapshots__/extract.spec.ts.snap    | 45 +++++++++++++++++++
 lib/manager/sbt/extract.ts                    | 22 ++++++---
 3 files changed, 63 insertions(+), 5 deletions(-)

diff --git a/lib/manager/common.ts b/lib/manager/common.ts
index 2d86f6616d..0d219da80c 100644
--- a/lib/manager/common.ts
+++ b/lib/manager/common.ts
@@ -172,6 +172,7 @@ export interface PackageDependency<T = Record<string, any>> extends Package<T> {
   autoReplaceStringTemplate?: string;
   depIndex?: number;
   editFile?: string;
+  separateMinorPatch?: boolean;
 }
 
 export interface Upgrade<T = Record<string, any>>
diff --git a/lib/manager/sbt/__snapshots__/extract.spec.ts.snap b/lib/manager/sbt/__snapshots__/extract.spec.ts.snap
index 7751cbb0b4..f55954f2b1 100644
--- a/lib/manager/sbt/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/sbt/__snapshots__/extract.spec.ts.snap
@@ -3,6 +3,16 @@
 exports[`lib/manager/sbt/extract extractPackageFile() extract deps from native scala file with private variables 1`] = `
 Object {
   "deps": Array [
+    Object {
+      "currentValue": "2.13.0-RC5",
+      "datasource": "maven",
+      "depName": "scala",
+      "lookupName": "org.scala-lang:scala-library",
+      "registryUrls": Array [
+        "https://repo.maven.apache.org/maven2",
+      ],
+      "separateMinorPatch": true,
+    },
     Object {
       "currentValue": "0.7.1",
       "datasource": "sbt-package",
@@ -28,6 +38,16 @@ Object {
 exports[`lib/manager/sbt/extract extractPackageFile() extract deps from native scala file with variables 1`] = `
 Object {
   "deps": Array [
+    Object {
+      "currentValue": "2.13.0-RC5",
+      "datasource": "maven",
+      "depName": "scala",
+      "lookupName": "org.scala-lang:scala-library",
+      "registryUrls": Array [
+        "https://repo.maven.apache.org/maven2",
+      ],
+      "separateMinorPatch": true,
+    },
     Object {
       "currentValue": "0.7.1",
       "datasource": "sbt-package",
@@ -53,6 +73,21 @@ Object {
 exports[`lib/manager/sbt/extract extractPackageFile() extracts deps for generic use-cases 1`] = `
 Object {
   "deps": Array [
+    Object {
+      "currentValue": "2.9.10",
+      "datasource": "maven",
+      "depName": "scala",
+      "lookupName": "org.scala-lang:scala-library",
+      "registryUrls": Array [
+        "https://repo.maven.apache.org/maven2",
+        "https://example.com/repos/1/",
+        "https://example.com/repos/2/",
+        "https://example.com/repos/3/",
+        "https://example.com/repos/4/",
+        "https://example.com/repos/5/",
+      ],
+      "separateMinorPatch": true,
+    },
     Object {
       "currentValue": "0.0.1",
       "datasource": "sbt-package",
@@ -358,6 +393,16 @@ Object {
 exports[`lib/manager/sbt/extract extractPackageFile() extracts deps when scala version is defined with a trailing comma 1`] = `
 Object {
   "deps": Array [
+    Object {
+      "currentValue": "2.12.10",
+      "datasource": "maven",
+      "depName": "scala",
+      "lookupName": "org.scala-lang:scala-library",
+      "registryUrls": Array [
+        "https://repo.maven.apache.org/maven2",
+      ],
+      "separateMinorPatch": true,
+    },
     Object {
       "currentValue": "0.0.2",
       "datasource": "sbt-package",
diff --git a/lib/manager/sbt/extract.ts b/lib/manager/sbt/extract.ts
index fba8120c76..c8f5ae264b 100644
--- a/lib/manager/sbt/extract.ts
+++ b/lib/manager/sbt/extract.ts
@@ -1,3 +1,4 @@
+import * as datasourceMaven from '../../datasource/maven';
 import { MAVEN_REPO } from '../../datasource/maven/common';
 import * as datasourceSbtPackage from '../../datasource/sbt-package';
 import * as datasourceSbtPlugin from '../../datasource/sbt-plugin';
@@ -181,6 +182,7 @@ function parseDepExpr(
 
   return result;
 }
+
 interface ParseOptions {
   isMultiDeps?: boolean;
   scalaVersion?: string;
@@ -207,7 +209,15 @@ function parseSbtLine(
   if (!isComment(line)) {
     if (isScalaVersion(line)) {
       isMultiDeps = false;
-      scalaVersion = normalizeScalaVersion(getScalaVersion(line));
+      const rawScalaVersion = getScalaVersion(line);
+      scalaVersion = normalizeScalaVersion(rawScalaVersion);
+      dep = {
+        datasource: datasourceMaven.id,
+        depName: 'scala',
+        lookupName: 'org.scala-lang:scala-library',
+        currentValue: rawScalaVersion,
+        separateMinorPatch: true,
+      };
     } else if (isScalaVersionVariable(line)) {
       isMultiDeps = false;
       scalaVersionVariable = getScalaVersionVariable(line);
@@ -252,10 +262,12 @@ function parseSbtLine(
   }
 
   if (dep) {
-    if (dep.depType === 'plugin') {
-      dep.datasource = datasourceSbtPlugin.id;
-    } else {
-      dep.datasource = datasourceSbtPackage.id;
+    if (!dep.datasource) {
+      if (dep.depType === 'plugin') {
+        dep.datasource = datasourceSbtPlugin.id;
+      } else {
+        dep.datasource = datasourceSbtPackage.id;
+      }
     }
     deps.push({
       registryUrls,
-- 
GitLab