From f398fa19aa2fdca11a81c02c876bae8b2dbd8195 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Sun, 4 Mar 2018 14:36:45 +0100
Subject: [PATCH] fix: Revert "refactor: improve migration scripts"

This reverts commit c6be31543df1ef1edfd41daf5bb600ebdb192ad8.

Closes #1584
---
 lib/config/migration.js                       | 19 ++++---
 .../migrate-validate.spec.js.snap             |  4 +-
 .../__snapshots__/migration.spec.js.snap      | 49 ++++++++++++-------
 .../config/__snapshots__/presets.spec.js.snap |  4 +-
 test/config/migration.spec.js                 |  2 +
 5 files changed, 49 insertions(+), 29 deletions(-)

diff --git a/lib/config/migration.js b/lib/config/migration.js
index feaeae93a2..b6e53fa9ea 100644
--- a/lib/config/migration.js
+++ b/lib/config/migration.js
@@ -81,17 +81,24 @@ function migrateConfig(config) {
       typeof val === 'string' &&
       ['none', 'patch', 'minor', 'any'].indexOf(val) !== -1
     ) {
-      isMigrated = true;
       delete migratedConfig.automerge;
-      migratedConfig.extends = migratedConfig.extends || [];
+      isMigrated = true;
       if (val === 'none') {
-        migratedConfig.extends.push(':automergeDisabled');
+        migratedConfig.automerge = false;
       } else if (val === 'patch') {
-        migratedConfig.extends.push(':automergePatch');
+        migratedConfig.patch = migratedConfig.patch || {};
+        migratedConfig.patch.automerge = true;
+        migratedConfig.minor = migratedConfig.minor || {};
+        migratedConfig.minor.automerge = false;
+        migratedConfig.major = migratedConfig.major || {};
+        migratedConfig.major.automerge = false;
       } else if (val === 'minor') {
-        migratedConfig.extends.push(':automergeMinor');
+        migratedConfig.minor = migratedConfig.minor || {};
+        migratedConfig.minor.automerge = true;
+        migratedConfig.major = migratedConfig.major || {};
+        migratedConfig.major.automerge = false;
       } else if (val === 'any') {
-        migratedConfig.extends.push(':automergeAll');
+        migratedConfig.automerge = true;
       }
     } else if (key === 'packages') {
       isMigrated = true;
diff --git a/test/config/__snapshots__/migrate-validate.spec.js.snap b/test/config/__snapshots__/migrate-validate.spec.js.snap
index a71ec42566..1ac51fbf44 100644
--- a/test/config/__snapshots__/migrate-validate.spec.js.snap
+++ b/test/config/__snapshots__/migrate-validate.spec.js.snap
@@ -22,10 +22,8 @@ Object {
 
 exports[`config/migrate-validate migrateAndValidate() handles migration 1`] = `
 Object {
+  "automerge": false,
   "errors": Array [],
-  "extends": Array [
-    ":automergeDisabled",
-  ],
   "warnings": Array [],
 }
 `;
diff --git a/test/config/__snapshots__/migration.spec.js.snap b/test/config/__snapshots__/migration.spec.js.snap
index 3aa3a49543..7afd0def49 100644
--- a/test/config/__snapshots__/migration.spec.js.snap
+++ b/test/config/__snapshots__/migration.spec.js.snap
@@ -9,29 +9,30 @@ Object {
 exports[`config/migration migrateConfig(config, parentConfig) it migrates config 1`] = `
 Object {
   "autodiscover": true,
+  "automerge": false,
   "baseBranches": Array [
     "next",
   ],
   "commitMessage": "some commit message",
   "devDependencies": Object {
-    "extends": Array [
-      ":automergeMinor",
-    ],
+    "major": Object {
+      "automerge": false,
+    },
+    "minor": Object {
+      "automerge": true,
+    },
     "schedule": Array [],
   },
   "enabled": true,
   "extends": Array [
     "config:js-app",
     "config:js-lib",
-    ":automergeDisabled",
   ],
   "ignorePaths": Array [
     "node_modules/",
   ],
   "lockFileMaintenance": Object {
-    "extends": Array [
-      ":automergeAll",
-    ],
+    "automerge": true,
     "schedule": "before 5am",
   },
   "major": Object {
@@ -45,9 +46,12 @@ Object {
   },
   "onboarding": false,
   "optionalDependencies": Object {
-    "extends": Array [
-      ":automergeMinor",
-    ],
+    "major": Object {
+      "automerge": false,
+    },
+    "minor": Object {
+      "automerge": true,
+    },
     "respectLatest": false,
     "schedule": "before 5am on Monday",
   },
@@ -89,9 +93,7 @@ Object {
 exports[`config/migration migrateConfig(config, parentConfig) it migrates node to travis 1`] = `
 Object {
   "node": Object {
-    "extends": Array [
-      ":automergeDisabled",
-    ],
+    "automerge": false,
     "supportPolicy": Array [
       "lts",
     ],
@@ -125,15 +127,24 @@ Object {
 
 exports[`config/migration migrateConfig(config, parentConfig) it overrides existing automerge setting 1`] = `
 Object {
-  "extends": Array [
-    ":automergeMinor",
-  ],
+  "major": Object {
+    "automerge": false,
+  },
+  "minor": Object {
+    "automerge": true,
+  },
   "packageRules": Array [
     Object {
-      "extends": Array [
-        ":automergePatch",
-      ],
+      "major": Object {
+        "automerge": false,
+      },
+      "minor": Object {
+        "automerge": false,
+      },
       "packagePatterns": "^(@angular|typescript)",
+      "patch": Object {
+        "automerge": true,
+      },
     },
   ],
 }
diff --git a/test/config/__snapshots__/presets.spec.js.snap b/test/config/__snapshots__/presets.spec.js.snap
index 376bc6a475..4eb4714d24 100644
--- a/test/config/__snapshots__/presets.spec.js.snap
+++ b/test/config/__snapshots__/presets.spec.js.snap
@@ -259,7 +259,6 @@ Object {
     "Use <code>renovate/</code> as prefix for all branch names",
     "If semantic commits detected, use <code>fix(deps):</code> for dependencies and <code>chore(deps):</code> for all others",
     "Require all status checks to pass before any automerging",
-    "Automerge patch or minor upgrades if they pass tests",
     "Pin dependency versions for <code>devDependencies</code> and retain semver ranges for others",
   ],
   "devDependencies": Object {
@@ -281,6 +280,9 @@ Object {
       "before 8am on Monday",
     ],
   },
+  "major": Object {
+    "automerge": false,
+  },
   "minor": Object {
     "automerge": true,
   },
diff --git a/test/config/migration.spec.js b/test/config/migration.spec.js
index dd77c9153f..076df2910e 100644
--- a/test/config/migration.spec.js
+++ b/test/config/migration.spec.js
@@ -66,6 +66,7 @@ describe('config/migration', () => {
       expect(isMigrated).toBe(true);
       expect(migratedConfig.depTypes).not.toBeDefined();
       expect(migratedConfig.optionalDependencies.respectLatest).toBe(false);
+      expect(migratedConfig.automerge).toEqual(false);
       expect(migratedConfig).toMatchSnapshot();
     });
     it('migrates before and after schedules', () => {
@@ -191,6 +192,7 @@ describe('config/migration', () => {
       );
       expect(isMigrated).toBe(true);
       expect(migratedConfig).toMatchSnapshot();
+      expect(migratedConfig.packageRules[0].minor.automerge).toBe(false);
     });
     it('it does not migrate config', () => {
       const config = {
-- 
GitLab