diff --git a/docs/usage/self-hosted-configuration.md b/docs/usage/self-hosted-configuration.md index 0971b51cb36b8d353989d10b1b009bd095e4b9e6..b1b8a67bd311bca185b299442897f74276e9f72e 100644 --- a/docs/usage/self-hosted-configuration.md +++ b/docs/usage/self-hosted-configuration.md @@ -85,7 +85,7 @@ e.g. ```json { - "autodiscoverFilter": ["project/*"] + "autodiscoverFilter": "project/*" } ``` diff --git a/lib/config/options/index.ts b/lib/config/options/index.ts index 885ed89e86897672997854c0bb196f3653d0a276..84b34978c2f00ef70c942ff9151834b76c1a21cd 100644 --- a/lib/config/options/index.ts +++ b/lib/config/options/index.ts @@ -668,9 +668,7 @@ const options: RenovateOptions[] = [ name: 'autodiscoverFilter', description: 'Filter the list of autodiscovered repositories.', stage: 'global', - type: 'array', - subType: 'string', - allowString: true, + type: 'string', default: null, }, { diff --git a/lib/config/types.ts b/lib/config/types.ts index 151f9de951bc09413914b854d337baf91630b0e4..cd4e2e32aef47d5c1a2a3bebdde75939811f81d7 100644 --- a/lib/config/types.ts +++ b/lib/config/types.ts @@ -72,7 +72,7 @@ export interface RenovateSharedConfig { // The below should contain config options where stage=global export interface GlobalOnlyConfig { autodiscover?: boolean; - autodiscoverFilter?: string[]; + autodiscoverFilter?: string; baseDir?: string; cacheDir?: string; detectHostRulesFromEnv?: boolean; diff --git a/lib/workers/global/autodiscover.spec.ts b/lib/workers/global/autodiscover.spec.ts index e3953c343756af90e2c92dae65b896ae09bd8d2a..076d179cc3fa9c0975c37f99154ec7f23d6931e2 100644 --- a/lib/workers/global/autodiscover.spec.ts +++ b/lib/workers/global/autodiscover.spec.ts @@ -1,4 +1,4 @@ -import type { AllConfig } from '../../config/types'; +import type { RenovateConfig } from '../../config/types'; import { PlatformId } from '../../constants'; import * as platform from '../../platform'; import * as _ghApi from '../../platform/github'; @@ -13,7 +13,7 @@ const hostRules = _hostRules; const ghApi: jest.Mocked<typeof _ghApi> = _ghApi as never; describe('workers/global/autodiscover', () => { - let config: AllConfig; + let config: RenovateConfig; beforeEach(async () => { jest.resetAllMocks(); config = {}; @@ -48,7 +48,7 @@ describe('workers/global/autodiscover', () => { }); it('filters autodiscovered github repos', async () => { config.autodiscover = true; - config.autodiscoverFilter = ['project/re*']; + config.autodiscoverFilter = 'project/re*'; config.platform = PlatformId.Github; hostRules.find = jest.fn(() => ({ token: 'abc', @@ -61,7 +61,7 @@ describe('workers/global/autodiscover', () => { }); it('filters autodiscovered github repos but nothing matches', async () => { config.autodiscover = true; - config.autodiscoverFilter = ['project/re*']; + config.autodiscoverFilter = 'project/re*'; config.platform = 'github'; hostRules.find = jest.fn(() => ({ token: 'abc', @@ -72,21 +72,4 @@ describe('workers/global/autodiscover', () => { const res = await autodiscoverRepositories(config); expect(res).toEqual(config); }); - it('filters autodiscovered github repos with multiple values', async () => { - config.autodiscover = true; - config.autodiscoverFilter = ['another-project/re*', 'department/dev/*']; - config.platform = 'github'; - hostRules.find = jest.fn(() => ({ - token: 'abc', - })); - const expectedRepositories = [ - 'another-project/repo', - 'department/dev/aProject', - ]; - ghApi.getRepos = jest.fn(() => - Promise.resolve(['another-project/another-repo', ...expectedRepositories]) - ); - const res = await autodiscoverRepositories(config); - expect(res.repositories).toEqual(expectedRepositories); - }); }); diff --git a/lib/workers/global/autodiscover.ts b/lib/workers/global/autodiscover.ts index 128d7bb0d60d11781397223886b09c0247698964..03b66b293acdf0c0c79b0b29e98005be2e0e945d 100644 --- a/lib/workers/global/autodiscover.ts +++ b/lib/workers/global/autodiscover.ts @@ -30,15 +30,7 @@ export async function autodiscoverRepositories( return config; } if (config.autodiscoverFilter) { - const matched = new Set<string>(); - for (const filter of config.autodiscoverFilter) { - const res = minimatch.match(discovered, filter); - for (const repository of res) { - matched.add(repository); - } - } - discovered = [...matched]; - + discovered = discovered.filter(minimatch.filter(config.autodiscoverFilter)); if (!discovered.length) { // Soft fail (no error thrown) if no accessible repositories match the filter logger.debug('None of the discovered repositories matched the filter'); diff --git a/lib/workers/global/config/parse/env.ts b/lib/workers/global/config/parse/env.ts index d747f113f3feb4ad7c94d2d0ddf196beef126e03..ca969854314faf99307f6c744b7dbb6c34f021f1 100644 --- a/lib/workers/global/config/parse/env.ts +++ b/lib/workers/global/config/parse/env.ts @@ -1,5 +1,4 @@ import is from '@sindresorhus/is'; -import { massageConfig } from '../../../../config/massage'; import { getOptions } from '../../../../config/options'; import type { AllConfig, RenovateOptions } from '../../../../config/types'; import { PlatformId } from '../../../../constants'; @@ -133,5 +132,5 @@ export function getConfig(inputEnv: NodeJS.ProcessEnv): AllConfig { unsupportedEnv.forEach((val) => delete env[val]); - return massageConfig(config); + return config; } diff --git a/lib/workers/global/config/parse/file.ts b/lib/workers/global/config/parse/file.ts index aa738acc72a7296ce7febe1f7b7e18d80e7e47d7..24a0e31df7d6c0adf61ebff5c9f814f6c1ea24ef 100644 --- a/lib/workers/global/config/parse/file.ts +++ b/lib/workers/global/config/parse/file.ts @@ -2,7 +2,6 @@ import is from 'is'; import { load } from 'js-yaml'; import JSON5 from 'json5'; import upath from 'upath'; -import { massageConfig } from '../../../../config/massage'; import { migrateConfig } from '../../../../config/migration'; import type { AllConfig, RenovateConfig } from '../../../../config/types'; import { logger } from '../../../../logger'; @@ -65,5 +64,5 @@ export async function getConfig(env: NodeJS.ProcessEnv): Promise<AllConfig> { ); config = migratedConfig; } - return massageConfig(config); + return config; }