From 1eb37c43731893349c321990cbd34a56e4580a32 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Mon, 7 May 2018 06:26:07 +0200
Subject: [PATCH] refactor: move repo finalise logic to own directory

---
 lib/workers/repository/finalise/index.js      | 14 ++++++++++++
 .../{cleanup.js => finalise/prune.js}         |  3 +--
 .../repository/{ => finalise}/validate.js     |  2 +-
 lib/workers/repository/index.js               | 22 +++++--------------
 .../prune.spec.js}                            |  6 ++---
 .../{ => finalise}/validate.spec.js           |  2 +-
 test/workers/repository/index.spec.js         |  3 +--
 7 files changed, 27 insertions(+), 25 deletions(-)
 create mode 100644 lib/workers/repository/finalise/index.js
 rename lib/workers/repository/{cleanup.js => finalise/prune.js} (95%)
 rename lib/workers/repository/{ => finalise}/validate.js (97%)
 rename test/workers/repository/{cleanup.spec.js => finalise/prune.spec.js} (92%)
 rename test/workers/repository/{ => finalise}/validate.spec.js (97%)

diff --git a/lib/workers/repository/finalise/index.js b/lib/workers/repository/finalise/index.js
new file mode 100644
index 0000000000..e3fa96c485
--- /dev/null
+++ b/lib/workers/repository/finalise/index.js
@@ -0,0 +1,14 @@
+const { validatePrs } = require('./validate');
+const { pruneStaleBranches } = require('./prune');
+
+module.exports = {
+  finaliseRepo,
+};
+
+// istanbul ignore next
+async function finaliseRepo(config, branchList) {
+  // TODO: Promise.all
+  await validatePrs(config);
+  await pruneStaleBranches(config, branchList);
+  platform.cleanRepo();
+}
diff --git a/lib/workers/repository/cleanup.js b/lib/workers/repository/finalise/prune.js
similarity index 95%
rename from lib/workers/repository/cleanup.js
rename to lib/workers/repository/finalise/prune.js
index 213f7612f7..a357c567ae 100644
--- a/lib/workers/repository/cleanup.js
+++ b/lib/workers/repository/finalise/prune.js
@@ -2,9 +2,8 @@ module.exports = {
   pruneStaleBranches,
 };
 
-async function pruneStaleBranches(config) {
+async function pruneStaleBranches(config, branchList) {
   // TODO: try/catch
-  const { branchList } = config;
   logger.debug('Removing any stale branches');
   logger.trace({ config }, `pruneStaleBranches`);
   logger.debug(`config.repoIsOnboarded=${config.repoIsOnboarded}`);
diff --git a/lib/workers/repository/validate.js b/lib/workers/repository/finalise/validate.js
similarity index 97%
rename from lib/workers/repository/validate.js
rename to lib/workers/repository/finalise/validate.js
index fb2911e4cb..53892712df 100644
--- a/lib/workers/repository/validate.js
+++ b/lib/workers/repository/finalise/validate.js
@@ -1,4 +1,4 @@
-const { migrateAndValidate } = require('../../config/migrate-validate');
+const { migrateAndValidate } = require('../../../config/migrate-validate');
 
 async function getRenovatePrs(branchPrefix) {
   return (await platform.getPrList())
diff --git a/lib/workers/repository/index.js b/lib/workers/repository/index.js
index 12b849dad4..548bd32086 100644
--- a/lib/workers/repository/index.js
+++ b/lib/workers/repository/index.js
@@ -4,8 +4,7 @@ const { determineUpdates } = require('./updates');
 const { ensureOnboardingPr } = require('./onboarding/pr');
 const { writeUpdates } = require('./write');
 const { handleError } = require('./error');
-const { pruneStaleBranches } = require('./cleanup');
-const { validatePrs } = require('./validate');
+const { finaliseRepo } = require('./finalise');
 
 const { resolvePackageFiles } = require('../../manager');
 
@@ -77,23 +76,14 @@ async function renovateRepository(repoConfig) {
     res = config.repoIsOnboarded
       ? await writeUpdates(config)
       : await ensureOnboardingPr(config);
-    await validatePrs(commonConfig || config);
+    logger.setMeta({ repository: config.repository });
+    config.branchPrefix = commonConfig
+      ? commonConfig.branchPrefix
+      : config.branchPrefix;
+    await finaliseRepo(commonConfig || config, config.branchList);
   } catch (err) /* istanbul ignore next */ {
     res = await handleError(config, err);
   }
-  logger.setMeta({ repository: config.repository });
-  config.branchPrefix = commonConfig
-    ? commonConfig.branchPrefix
-    : config.branchPrefix;
-  try {
-    await pruneStaleBranches(config);
-    platform.cleanRepo();
-  } catch (err) /* istanbul ignore next */ {
-    logger.error(
-      { err, message: err.message },
-      'Error pruning/cleaning repository'
-    );
-  }
   const disabledStatuses = [
     'archived',
     'blocked',
diff --git a/test/workers/repository/cleanup.spec.js b/test/workers/repository/finalise/prune.spec.js
similarity index 92%
rename from test/workers/repository/cleanup.spec.js
rename to test/workers/repository/finalise/prune.spec.js
index 8ca8169d03..9f81cedc3a 100644
--- a/test/workers/repository/cleanup.spec.js
+++ b/test/workers/repository/finalise/prune.spec.js
@@ -1,15 +1,15 @@
-const cleanup = require('../../../lib/workers/repository/cleanup');
+const cleanup = require('../../../../lib/workers/repository/finalise/prune');
 
 let config;
 beforeEach(() => {
   jest.resetAllMocks();
-  config = require('../../_fixtures/config');
+  config = require('../../../_fixtures/config');
   config.platform = 'github';
   config.errors = [];
   config.warnings = [];
 });
 
-describe('workers/repository/cleanup', () => {
+describe('workers/repository/finalise/prune', () => {
   describe('pruneStaleBranches()', () => {
     it('returns if no branchList', async () => {
       delete config.branchList;
diff --git a/test/workers/repository/validate.spec.js b/test/workers/repository/finalise/validate.spec.js
similarity index 97%
rename from test/workers/repository/validate.spec.js
rename to test/workers/repository/finalise/validate.spec.js
index 4345d7d8df..25fc8a2e87 100644
--- a/test/workers/repository/validate.spec.js
+++ b/test/workers/repository/finalise/validate.spec.js
@@ -1,4 +1,4 @@
-const validate = require('../../../lib/workers/repository/validate');
+const validate = require('../../../../lib/workers/repository/finalise/validate');
 
 beforeEach(() => {
   jest.resetAllMocks();
diff --git a/test/workers/repository/index.spec.js b/test/workers/repository/index.spec.js
index 722675c5f5..acdf5f2fd5 100644
--- a/test/workers/repository/index.spec.js
+++ b/test/workers/repository/index.spec.js
@@ -11,8 +11,7 @@ jest.mock('../../../lib/workers/repository/init/apis');
 jest.mock('../../../lib/workers/repository/updates');
 jest.mock('../../../lib/workers/repository/onboarding/pr');
 jest.mock('../../../lib/workers/repository/write');
-jest.mock('../../../lib/workers/repository/cleanup');
-jest.mock('../../../lib/workers/repository/validate');
+jest.mock('../../../lib/workers/repository/finalise');
 jest.mock('../../../lib/manager');
 jest.mock('delay');
 
-- 
GitLab