Skip to content
Snippets Groups Projects
Commit 266534eb authored by Rhys Arkins's avatar Rhys Arkins
Browse files

refactor: write branches cache

parent b2ffabcf
No related branches found
No related tags found
No related merge requests found
......@@ -158,6 +158,7 @@ export interface PackageDependency<T = Record<string, any>> extends Package<T> {
digestOneAndOnly?: boolean;
displayFrom?: string;
displayTo?: string;
fixedVersion?: string;
fromVersion?: string;
lockedVersion?: string;
propSource?: string;
......
......@@ -11,7 +11,30 @@ export interface BaseBranchCache {
packageFiles: PackageFile[]; // extract result
}
export interface BranchUpgradeCache {
currentDigest?: string;
currentValue?: string;
datasource?: string;
depName?: string;
fixedVersion?: string;
fromVersion?: string;
lookupName?: string;
newDigest?: string;
newValue?: string;
toVersion?: string;
}
export interface BranchCache {
automerge: boolean;
branchName: string;
isModified: boolean;
prNo: number | null;
sha: string | null;
upgrades: BranchUpgradeCache[];
}
export interface Cache {
branches?: BranchCache[];
repository?: string;
init?: RepoInitConfig;
scan?: Record<string, BaseBranchCache>;
......
/* istanbul ignore file */
import { logger } from '../../logger';
import { platform } from '../../platform';
import {
BranchCache,
BranchUpgradeCache,
getCache,
} from '../../util/cache/repository';
import { getBranchCommit, isBranchModified } from '../../util/git';
import { BranchConfig, BranchUpgradeConfig } from '../common';
function generateBranchUpgradeCache(
upgrade: BranchUpgradeConfig
): BranchUpgradeCache {
const {
datasource,
depName,
lookupName,
fixedVersion,
fromVersion,
toVersion,
currentDigest,
newDigest,
} = upgrade;
return {
datasource,
depName,
lookupName,
fixedVersion,
fromVersion,
toVersion,
currentDigest,
newDigest,
};
}
async function generateBranchCache(branch: BranchConfig): Promise<BranchCache> {
const { branchName } = branch;
try {
const sha = getBranchCommit(branchName) || null;
let prNo = null;
if (sha) {
const branchPr = await platform.getBranchPr(branchName);
if (branchPr) {
prNo = branchPr.number;
}
}
const automerge = !!branch.automerge;
const isModified = await isBranchModified(branchName);
const upgrades: BranchUpgradeCache[] = branch.upgrades
? branch.upgrades.map(generateBranchUpgradeCache)
: [];
return { branchName, sha, prNo, automerge, isModified, upgrades };
} catch (err) {
logger.error({ err, branchName }, 'Error generating branch cache');
return null;
}
}
export async function setBranchCache(branches: BranchConfig[]): Promise<void> {
const branchCache: BranchCache[] = [];
for (const branch of branches) {
branchCache.push(await generateBranchCache(branch));
}
getCache().branches = branchCache.filter(Boolean);
}
......@@ -3,6 +3,7 @@ import { RenovateConfig } from '../../config';
import { logger, setMeta } from '../../logger';
import { deleteLocalFile } from '../../util/fs';
import { addSplit, getSplits, splitInit } from '../../util/split';
import { setBranchCache } from './cache';
import { ensureMasterIssue } from './dependency-dashboard';
import handleError from './error';
import { finaliseRepo } from './finalise';
......@@ -41,6 +42,7 @@ export async function renovateRepository(
await ensureOnboardingPr(config, packageFiles, branches);
const res = await updateRepo(config, branches);
addSplit('update');
await setBranchCache(branches);
if (res !== 'automerged') {
await ensureMasterIssue(config, branches);
}
......
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