Skip to content
Snippets Groups Projects
Unverified Commit 4b2eaf54 authored by Rhys Arkins's avatar Rhys Arkins Committed by GitHub
Browse files

refactor: initRepo cache (#7146)

parent b7f215b9
No related merge requests found
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`workers/repository/init initRepo runs 1`] = `Object {}`;
exports[`workers/repository/init initRepo uses cache 1`] = `Object {}`;
......@@ -12,10 +12,17 @@ import * as npmApi from '../../../datasource/npm';
import { logger } from '../../../logger';
import { getCache } from '../../../util/cache/repository';
import { readLocalFile } from '../../../util/fs';
import { getFileList } from '../../../util/git';
import {
checkoutBranch,
getBranchCommit,
getFileList,
} from '../../../util/git';
import * as hostRules from '../../../util/host-rules';
import { checkOnboardingBranch } from '../onboarding/branch';
import { getResolvedConfig, setResolvedConfig } from './cache';
import { RepoConfig } from './common';
import { flattenPackageRules } from './flatten';
import { detectSemanticCommits } from './semantic';
export async function detectRepoFileConfig(): Promise<RepoConfig> {
const fileList = await getFileList();
......@@ -198,3 +205,22 @@ export async function mergeRenovateConfig(
}
return returnConfig;
}
// istanbul ignore next
export async function getRepoConfig(
config_: RenovateConfig
): Promise<RenovateConfig> {
let config = { ...config_ };
config.defaultBranchSha = getBranchCommit(config.defaultBranch);
const resolvedConfig = getResolvedConfig(config.defaultBranchSha);
if (resolvedConfig) {
return resolvedConfig;
}
config.baseBranch = config.defaultBranch;
config.baseBranchSha = await checkoutBranch(config.baseBranch);
config.semanticCommits = await detectSemanticCommits(config);
config = await checkOnboardingBranch(config);
config = await mergeRenovateConfig(config);
setResolvedConfig(config);
return config;
}
import { mocked } from '../../../../test/util';
import * as _onboarding from '../onboarding/branch';
import * as _apis from './apis';
import * as _cache from './cache';
import * as _config from './config';
import { initRepo } from '.';
......@@ -11,10 +10,8 @@ jest.mock('../configured');
jest.mock('../init/apis');
jest.mock('../init/config');
jest.mock('../init/semantic');
jest.mock('./cache');
const apis = mocked(_apis);
const cache = mocked(_cache);
const config = mocked(_config);
const onboarding = mocked(_onboarding);
......@@ -23,16 +20,10 @@ describe('workers/repository/init', () => {
it('runs', async () => {
apis.initApis.mockResolvedValue({} as never);
onboarding.checkOnboardingBranch.mockResolvedValueOnce({});
config.getRepoConfig.mockResolvedValueOnce({});
config.mergeRenovateConfig.mockResolvedValueOnce({});
const renovateConfig = await initRepo({});
expect(renovateConfig).toMatchSnapshot();
});
it('uses cache', async () => {
apis.initApis.mockResolvedValue({} as never);
onboarding.checkOnboardingBranch.mockResolvedValueOnce({});
cache.getResolvedConfig.mockResolvedValueOnce({} as never);
const renovateConfig = await initRepo({});
expect(renovateConfig).toMatchSnapshot();
});
});
});
import { RenovateConfig } from '../../../config';
import { logger } from '../../../logger';
import { clone } from '../../../util/clone';
import {
checkoutBranch,
getBranchCommit,
setBranchPrefix,
} from '../../../util/git';
import { setBranchPrefix } from '../../../util/git';
import { checkIfConfigured } from '../configured';
import { checkOnboardingBranch } from '../onboarding/branch';
import { initApis } from './apis';
import {
getResolvedConfig,
initializeCaches,
setResolvedConfig,
} from './cache';
import { mergeRenovateConfig } from './config';
import { detectSemanticCommits } from './semantic';
import { initializeCaches } from './cache';
import { getRepoConfig } from './config';
import { detectVulnerabilityAlerts } from './vulnerability';
function initializeConfig(config: RenovateConfig): RenovateConfig {
return { ...clone(config), errors: [], warnings: [], branchList: [] };
}
async function getRepoConfig(config_: RenovateConfig): Promise<RenovateConfig> {
let config = { ...config_ };
config.baseBranch = config.defaultBranch;
config.baseBranchSha = await checkoutBranch(config.baseBranch);
config.semanticCommits = await detectSemanticCommits(config);
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.defaultBranchSha = getBranchCommit(config.defaultBranch);
const resolvedConfig = getResolvedConfig(config.defaultBranchSha);
if (resolvedConfig) {
config = resolvedConfig;
} else {
config = await getRepoConfig(config);
setResolvedConfig(config);
}
config = await getRepoConfig(config);
checkIfConfigured(config);
await setBranchPrefix(config.branchPrefix);
config = await detectVulnerabilityAlerts(config);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment