From b6af8188d13bd6469710cd69caf4a9e920fafe33 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Wed, 19 Aug 2020 06:27:48 +0200
Subject: [PATCH] refactor: initRepo (#7022)

---
 lib/util/cache/repository/index.ts        |  4 +--
 lib/workers/repository/init/config.ts     |  2 +-
 lib/workers/repository/init/index.spec.ts | 13 ++++++----
 lib/workers/repository/init/index.ts      | 31 +++++++++++++++--------
 4 files changed, 32 insertions(+), 18 deletions(-)

diff --git a/lib/util/cache/repository/index.ts b/lib/util/cache/repository/index.ts
index 6301ce8927..81c07da08e 100644
--- a/lib/util/cache/repository/index.ts
+++ b/lib/util/cache/repository/index.ts
@@ -13,8 +13,8 @@ export interface BaseBranchCache {
 export interface Cache {
   repository?: string;
   init?: {
-    configFile: string;
-    contents: RenovateConfig;
+    configFile?: string;
+    configFileContents?: RenovateConfig;
   };
   scan?: Record<string, BaseBranchCache>;
 }
diff --git a/lib/workers/repository/init/config.ts b/lib/workers/repository/init/config.ts
index fea1aec42d..c15916cf44 100644
--- a/lib/workers/repository/init/config.ts
+++ b/lib/workers/repository/init/config.ts
@@ -126,7 +126,7 @@ export async function mergeRenovateConfig(
   const cache = getCache();
   cache.init = {
     configFile,
-    contents: clone(renovateJson),
+    configFileContents: clone(renovateJson),
   };
   const migratedConfig = await migrateAndValidate(config, renovateJson);
   if (migratedConfig.errors.length) {
diff --git a/lib/workers/repository/init/index.spec.ts b/lib/workers/repository/init/index.spec.ts
index bb3a737e15..54f5ff984e 100644
--- a/lib/workers/repository/init/index.spec.ts
+++ b/lib/workers/repository/init/index.spec.ts
@@ -1,23 +1,26 @@
 import { mocked } from '../../../../test/util';
+import * as _onboarding from '../onboarding/branch';
 import * as _apis from './apis';
 import * as _config from './config';
 import { initRepo } from '.';
 
 jest.mock('../../../util/git');
-jest.mock('../../../workers/repository/onboarding/branch');
-jest.mock('../../../workers/repository/configured');
-jest.mock('../../../workers/repository/init/apis');
-jest.mock('../../../workers/repository/init/config');
-jest.mock('../../../workers/repository/init/semantic');
+jest.mock('../onboarding/branch');
+jest.mock('../configured');
+jest.mock('../init/apis');
+jest.mock('../init/config');
+jest.mock('../init/semantic');
 
 const apis = mocked(_apis);
 const config = mocked(_config);
+const onboarding = mocked(_onboarding);
 
 describe('workers/repository/init', () => {
   describe('initRepo', () => {
     it('runs', async () => {
       apis.initApis.mockResolvedValue({} as never);
       config.mergeRenovateConfig.mockResolvedValueOnce({});
+      onboarding.checkOnboardingBranch.mockResolvedValueOnce({});
       const renovateConfig = await initRepo({});
       expect(renovateConfig).toMatchSnapshot();
     });
diff --git a/lib/workers/repository/init/index.ts b/lib/workers/repository/init/index.ts
index 876f4208e3..3f164db11e 100644
--- a/lib/workers/repository/init/index.ts
+++ b/lib/workers/repository/init/index.ts
@@ -11,21 +11,32 @@ import { mergeRenovateConfig } from './config';
 import { detectSemanticCommits } from './semantic';
 import { detectVulnerabilityAlerts } from './vulnerability';
 
-export async function initRepo(input: RenovateConfig): Promise<RenovateConfig> {
+function initializeConfig(config: RenovateConfig): RenovateConfig {
+  return { ...config, errors: [], warnings: [], branchList: [] };
+}
+
+async function initializeCaches(config: RenovateConfig): Promise<void> {
   memCache.init();
-  await repositoryCache.initialize(input);
-  let config: RenovateConfig = {
-    ...input,
-    errors: [],
-    warnings: [],
-    branchList: [],
-  };
-  config = await initApis(config);
+  await repositoryCache.initialize(config);
+}
+
+async function getRepoConfig(config_: RenovateConfig): Promise<RenovateConfig> {
+  let config = { ...config_ };
   config.semanticCommits = await detectSemanticCommits(config);
   config.baseBranch = config.defaultBranch;
   config.baseBranchSha = await platform.setBaseBranch(config.baseBranch);
-  config = await checkOnboardingBranch(config);
   config = await mergeRenovateConfig(config);
+  return config;
+}
+
+export async function initRepo(
+  config_: RenovateConfig
+): Promise<RenovateConfig> {
+  let config: RenovateConfig = initializeConfig(config_);
+  await initializeCaches(config);
+  config = await initApis(config);
+  config = await getRepoConfig(config);
+  config = await checkOnboardingBranch(config);
   checkIfConfigured(config);
   await setBranchPrefix(config.branchPrefix);
   config = await detectVulnerabilityAlerts(config);
-- 
GitLab