Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/config/global.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ export class GlobalConfig {
'onboarding',
'onboardingAutoCloseAge',
'onboardingBranch',
'onboardingConfigFileName',
'onboardingNoDeps',
'onboardingPrTitle',
'platform',
Expand Down
1 change: 1 addition & 0 deletions lib/config/inherit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export class InheritConfig {
'onboarding',
'onboardingAutoCloseAge',
'onboardingBranch',
'onboardingConfigFileName',
'onboardingNoDeps',
'onboardingPrTitle',
];
Expand Down
1 change: 1 addition & 0 deletions lib/config/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ export interface GlobalInheritableConfig {
onboarding?: boolean;
onboardingAutoCloseAge?: number;
onboardingBranch?: string;
onboardingConfigFileName?: string;
onboardingNoDeps?: 'auto' | 'enabled' | 'disabled';
onboardingPrTitle?: string;
}
Expand Down
3 changes: 3 additions & 0 deletions lib/workers/repository/init/apis.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type { RenovateConfig } from '~test/util.ts';
import { platform } from '~test/util.ts';
import { getConfig } from '../../../config/defaults.ts';
import { GlobalConfig } from '../../../config/global.ts';
import {
REPOSITORY_DISABLED,
REPOSITORY_FORKED,
Expand All @@ -12,6 +13,7 @@ describe('workers/repository/init/apis', () => {
let config: RenovateConfig;

beforeEach(() => {
GlobalConfig.reset();
config = { ...getConfig() };
config.errors = [];
config.warnings = [];
Expand Down Expand Up @@ -120,6 +122,7 @@ describe('workers/repository/init/apis', () => {
});

it('uses the onboardingConfigFileName if set', async () => {
GlobalConfig.set({ onboardingConfigFileName: '.github/renovate.json' });
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: false,
Expand Down
4 changes: 2 additions & 2 deletions lib/workers/repository/init/apis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ async function validateOptimizeForDisabled(
config: RenovateConfig,
): Promise<void> {
if (config.optimizeForDisabled) {
const renovateConfig = await getJsonFile(getDefaultConfigFileName(config));
const renovateConfig = await getJsonFile(getDefaultConfigFileName());
if (renovateConfig?.enabled === false) {
throw new Error(REPOSITORY_DISABLED_BY_CONFIG);
}
Expand Down Expand Up @@ -60,7 +60,7 @@ async function validateOptimizeForDisabled(

async function validateIncludeForks(config: RenovateConfig): Promise<void> {
if (config.forkProcessing !== 'enabled' && config.isFork) {
const defaultConfigFile = getDefaultConfigFileName(config);
const defaultConfigFile = getDefaultConfigFileName();
const repoConfig = await getJsonFile(defaultConfigFile);
if (!repoConfig) {
logger.debug(
Expand Down
2 changes: 1 addition & 1 deletion lib/workers/repository/init/merge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ export async function mergeRenovateConfig(
logger.debug(
'When mode=silent and repo has no config file, we use the onboarding config as repo config',
);
const configFileName = getDefaultConfigFileName(config);
const configFileName = getDefaultConfigFileName();
repoConfig = {
configFileName,
configFileParsed: await getOnboardingConfig(config),
Expand Down
22 changes: 17 additions & 5 deletions lib/workers/repository/onboarding/branch/create.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ describe('workers/repository/onboarding/branch/create', () => {

beforeEach(() => {
config = getConfig();
GlobalConfig.set({ onboardingBranch: config.onboardingBranch });
GlobalConfig.set({
onboardingBranch: config.onboardingBranch,
onboardingConfigFileName: config.onboardingConfigFileName,
});
});

describe('createOnboardingBranch', () => {
Expand Down Expand Up @@ -228,7 +231,7 @@ describe('workers/repository/onboarding/branch/create', () => {
const message = `${prefix}: add renovate.json`;

config.semanticCommits = 'enabled';
config.onboardingConfigFileName = undefined;
GlobalConfig.set({ onboardingBranch: config.onboardingBranch });

await createOnboardingBranch(config);

Expand All @@ -253,7 +256,10 @@ describe('workers/repository/onboarding/branch/create', () => {
const message = `${prefix}: add renovate.json`;

config.semanticCommits = 'enabled';
config.onboardingConfigFileName = 'superConfigFile.yaml';
GlobalConfig.set({
onboardingBranch: config.onboardingBranch,
onboardingConfigFileName: 'superConfigFile.yaml',
});

await createOnboardingBranch(config);

Expand All @@ -279,7 +285,10 @@ describe('workers/repository/onboarding/branch/create', () => {
const message = `${prefix}: add ${path}`;

config.semanticCommits = 'enabled';
config.onboardingConfigFileName = path;
GlobalConfig.set({
onboardingBranch: config.onboardingBranch,
onboardingConfigFileName: path,
});

await createOnboardingBranch(config);

Expand All @@ -305,7 +314,10 @@ describe('workers/repository/onboarding/branch/create', () => {
const message = `${prefix}: add ${path}`;

config.semanticCommits = 'enabled';
config.onboardingConfigFileName = path;
GlobalConfig.set({
onboardingBranch: config.onboardingBranch,
onboardingConfigFileName: path,
});

await createOnboardingBranch(config);

Expand Down
2 changes: 1 addition & 1 deletion lib/workers/repository/onboarding/branch/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export async function createOnboardingBranch(
config: Partial<RenovateConfig>,
): Promise<string | null> {
logger.debug('createOnboardingBranch()');
const configFile = getDefaultConfigFileName(config);
const configFile = getDefaultConfigFileName();
// TODO #22198
const contents = await getOnboardingConfigContents(config, configFile);
logger.debug('Creating onboarding branch');
Expand Down
35 changes: 13 additions & 22 deletions lib/workers/repository/onboarding/branch/rebase.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,16 @@ const configModule = vi.mocked(_config);
vi.mock('./config.ts');

describe('workers/repository/onboarding/branch/rebase', () => {
beforeAll(() => {
GlobalConfig.set({
localDir: '',
platform: 'github',
});
});

describe('rebaseOnboardingBranch()', () => {
let config: RenovateConfig;
const hash = 'hash';

beforeEach(() => {
GlobalConfig.set({
localDir: '',
onboardingConfigFileName: 'renovate.json',
platform: 'github',
});
memCache.init();

// using default options
Expand All @@ -34,7 +32,6 @@ describe('workers/repository/onboarding/branch/rebase', () => {
onboardingConfig: {
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
},
onboardingConfigFileName: 'renovate.json',
repository: 'some/repo',
};
configModule.getOnboardingConfigContents.mockResolvedValue('');
Expand All @@ -53,13 +50,12 @@ describe('workers/repository/onboarding/branch/rebase', () => {
});

it('uses the onboardingConfigFileName if set', async () => {
await rebaseOnboardingBranch(
{
...config,
onboardingConfigFileName: '.github/renovate.json',
},
hash,
);
GlobalConfig.set({
localDir: '',
onboardingConfigFileName: '.github/renovate.json',
platform: 'github',
});
await rebaseOnboardingBranch(config, hash);
expect(scm.commitAndPush).toHaveBeenCalledTimes(1);
expect(scm.commitAndPush.mock.calls[0][0].message).toContain(
'.github/renovate.json',
Expand All @@ -70,13 +66,8 @@ describe('workers/repository/onboarding/branch/rebase', () => {
});

it('falls back to "renovate.json" if onboardingConfigFileName is not set', async () => {
await rebaseOnboardingBranch(
{
...config,
onboardingConfigFileName: undefined,
},
hash,
);
GlobalConfig.set({ localDir: '', platform: 'github' });
await rebaseOnboardingBranch(config, hash);
expect(scm.commitAndPush).toHaveBeenCalledTimes(1);
expect(scm.commitAndPush.mock.calls[0][0].message).toContain(
'renovate.json',
Expand Down
2 changes: 1 addition & 1 deletion lib/workers/repository/onboarding/branch/rebase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export async function rebaseOnboardingBranch(
return null;
}

const configFile = getDefaultConfigFileName(config);
const configFile = getDefaultConfigFileName();
const contents = await getOnboardingConfigContents(config, configFile);
const currentConfigHash = toSha256(contents);

Expand Down
9 changes: 6 additions & 3 deletions lib/workers/repository/onboarding/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@ export function getSemanticCommitPrTitle(config: RenovateConfig): string {
return `${config.semanticCommitType ?? 'chore'}: ${getInheritedOrGlobal('onboardingPrTitle')}`;
}

export function getDefaultConfigFileName(config: RenovateConfig): string {
export function getDefaultConfigFileName(): string {
const configFileNames = getConfigFileNames();
return configFileNames.includes(config.onboardingConfigFileName!)
? config.onboardingConfigFileName!
const onboardingConfigFileName = getInheritedOrGlobal(
'onboardingConfigFileName',
);
return configFileNames.includes(onboardingConfigFileName!)
? onboardingConfigFileName!
: configFileNames[0];
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { RenovateConfig } from '~test/util.ts';
import { partial } from '~test/util.ts';
import { GlobalConfig } from '../../../../config/global.ts';
import type { PackageFile } from '../../../../modules/manager/types.ts';
import { getConfigDesc } from './config-description.ts';

Expand All @@ -8,6 +9,7 @@ describe('workers/repository/onboarding/pr/config-description', () => {
let config: RenovateConfig;

beforeEach(() => {
GlobalConfig.reset();
config = partial<RenovateConfig>();
});

Expand Down Expand Up @@ -58,7 +60,7 @@ describe('workers/repository/onboarding/pr/config-description', () => {
it('contains the onboardingConfigFileName if set', () => {
delete config.description;
config.schedule = ['before 5am'];
config.onboardingConfigFileName = '.github/renovate.json';
GlobalConfig.set({ onboardingConfigFileName: '.github/renovate.json' });
const res = getConfigDesc(config);
expect(res).toMatchSnapshot();
expect(res.indexOf('`.github/renovate.json`')).not.toBe(-1);
Expand All @@ -68,7 +70,6 @@ describe('workers/repository/onboarding/pr/config-description', () => {
it('falls back to "renovate.json" if onboardingConfigFileName is not set', () => {
delete config.description;
config.schedule = ['before 5am'];
config.onboardingConfigFileName = undefined;
const res = getConfigDesc(config);
expect(res).toMatchSnapshot();
expect(res.indexOf('`renovate.json`')).not.toBe(-1);
Expand All @@ -77,7 +78,7 @@ describe('workers/repository/onboarding/pr/config-description', () => {
it('falls back to "renovate.json" if onboardingConfigFileName is not valid', () => {
delete config.description;
config.schedule = ['before 5am'];
config.onboardingConfigFileName = 'foo.bar';
GlobalConfig.set({ onboardingConfigFileName: 'foo.bar' });
const res = getConfigDesc(config);
expect(res).toMatchSnapshot();
expect(res.indexOf('`renovate.json`')).not.toBe(-1);
Expand All @@ -86,7 +87,7 @@ describe('workers/repository/onboarding/pr/config-description', () => {
it('include retry/refresh checkbox message only if onboardingRebaseCheckbox is true', () => {
delete config.description;
config.schedule = ['before 5am'];
config.onboardingConfigFileName = '.github/renovate.json';
GlobalConfig.set({ onboardingConfigFileName: '.github/renovate.json' });
config.onboardingRebaseCheckbox = true;
const res = getConfigDesc(config);
expect(res).toMatchSnapshot();
Expand Down
2 changes: 1 addition & 1 deletion lib/workers/repository/onboarding/pr/config-description.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export function getConfigDesc(
_packageFiles?: Record<string, PackageFile[]>,
): string {
// TODO: type (#22198)
const configFile = getDefaultConfigFileName(config);
const configFile = getDefaultConfigFileName();
logger.debug('getConfigDesc()');
logger.trace({ config });
const descriptionArr = getDescriptionArray(config);
Expand Down
9 changes: 3 additions & 6 deletions lib/workers/repository/onboarding/pr/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,7 @@ export async function ensureOnboardingPr(
return;
}

const onboardingConfigHashComment =
await getOnboardingConfigHashComment(config);
const onboardingConfigHashComment = await getOnboardingConfigHashComment();
const rebaseCheckBox = getRebaseCheckbox(config.onboardingRebaseCheckbox);
logger.debug('Filling in onboarding PR template');
let prTemplate = `Welcome to [Renovate](${
Expand Down Expand Up @@ -292,10 +291,8 @@ function getRebaseCheckbox(onboardingRebaseCheckbox?: boolean): string {
return rebaseCheckBox;
}

async function getOnboardingConfigHashComment(
config: RenovateConfig,
): Promise<string> {
const configFile = getDefaultConfigFileName(config);
async function getOnboardingConfigHashComment(): Promise<string> {
const configFile = getDefaultConfigFileName();
const existingContents =
(await getFile(configFile, getInheritedOrGlobal('onboardingBranch'))) ?? '';
const hash = toSha256(existingContents);
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@
"re2": "1.23.3"
},
"devDependencies": {
"@biomejs/biome": "2.4.2",
"@biomejs/biome": "2.4.3",
"@commander-js/extra-typings": "14.0.0",
"@containerbase/eslint-plugin": "1.1.33",
"@containerbase/istanbul-reports-html": "1.1.32",
Expand Down
Loading
Loading