diff --git a/lib/config/cli.ts b/lib/config/cli.ts index ed499ba809b79bccc451a2bda2384fceb6aab5a4..e7e64a036a4169688d68744322a242bb039c6269 100644 --- a/lib/config/cli.ts +++ b/lib/config/cli.ts @@ -1,5 +1,6 @@ import { Command } from 'commander'; import { version } from '../../package.json'; +import { GlobalConfig } from './common'; import { RenovateOptions, getOptions } from './definitions'; export function getCliName(option: Partial<RenovateOptions>): string { @@ -14,7 +15,7 @@ export interface RenovateCliConfig extends Record<string, any> { repositories?: string[]; } -export function getConfig(input: string[]): RenovateCliConfig { +export function getConfig(input: string[]): GlobalConfig { // massage migrated configuration keys const argv = input .map((a) => diff --git a/lib/config/common.ts b/lib/config/common.ts index c6f03095ddf5c967a6d1393f78dc06e90081c777..b23a0f3342d04398f1fd29f114504be741bc9269 100644 --- a/lib/config/common.ts +++ b/lib/config/common.ts @@ -63,6 +63,19 @@ export interface RenovateSharedConfig { unicodeEmoji?: boolean; } +// Config options used only within the global worker +export interface GlobalAdminConfig { + autodiscover?: boolean; + autodiscoverFilter?: string; + logFile?: string; + logFileLevel?: LogLevel; + logLevel?: LogLevel; + redisUrl?: string; + repositories?: RenovateRepository[]; + trustLevel?: 'low' | 'high'; +} + +// Config options used within the repository worker, but non-user configurable export interface RepoAdminConfig { allowPostUpgradeCommandTemplating?: boolean; allowedPostUpgradeCommands?: string[]; @@ -71,9 +84,6 @@ export interface RepoAdminConfig { } export interface RenovateAdminConfig { - autodiscover?: boolean; - autodiscoverFilter?: string; - baseDir?: string; cacheDir?: string; configWarningReuseIssue?: boolean; @@ -85,9 +95,7 @@ export interface RenovateAdminConfig { endpoint?: string; localDir?: string; - logFile?: string; - logFileLevel?: LogLevel; - logLevel?: LogLevel; + logContext?: string; onboarding?: boolean; @@ -101,10 +109,7 @@ export interface RenovateAdminConfig { postUpdateOptions?: string[]; privateKey?: string | Buffer; privateKeyPath?: string; - repositories?: RenovateRepository[]; requireConfig?: boolean; - trustLevel?: 'low' | 'high'; - redisUrl?: string; gitPrivateKey?: string; } @@ -184,6 +189,8 @@ export interface RenovateConfig fetchReleaseNotes?: boolean; } +export interface GlobalConfig extends RenovateConfig, GlobalAdminConfig {} + export interface AssigneesAndReviewersConfig { assigneesFromCodeOwners?: boolean; assignees?: string[]; diff --git a/lib/config/defaults.ts b/lib/config/defaults.ts index aa10fefbef09abb4bbbd5e4c9178c3462a8b344b..5b84b28767fd126550f9b7768b78961b364405be 100644 --- a/lib/config/defaults.ts +++ b/lib/config/defaults.ts @@ -1,4 +1,4 @@ -import { RenovateConfig } from './common'; +import { GlobalConfig } from './common'; import { RenovateOptions, getOptions } from './definitions'; const defaultValues = { @@ -14,9 +14,9 @@ export function getDefault(option: RenovateOptions): any { : option.default; } -export function getConfig(): RenovateConfig { +export function getConfig(): GlobalConfig { const options = getOptions(); - const config: RenovateConfig = {}; + const config: GlobalConfig = {}; options.forEach((option) => { if (!option.parent) { config[option.name] = getDefault(option); diff --git a/lib/config/env.ts b/lib/config/env.ts index 1c0073ca4ba87a80b42d1b90a67108c67031ee7d..ddaec11ef7f2873fc627db4d3baf8d0747770d7c 100644 --- a/lib/config/env.ts +++ b/lib/config/env.ts @@ -3,7 +3,7 @@ import is from '@sindresorhus/is'; import { PLATFORM_TYPE_GITHUB } from '../constants/platforms'; import * as datasourceDocker from '../datasource/docker'; import { logger } from '../logger'; -import { RenovateConfig } from './common'; +import { GlobalConfig } from './common'; import { RenovateOptions, getOptions } from './definitions'; export function getEnvName(option: Partial<RenovateOptions>): string { @@ -17,10 +17,10 @@ export function getEnvName(option: Partial<RenovateOptions>): string { return `RENOVATE_${nameWithUnderscores.toUpperCase()}`; } -export function getConfig(env: NodeJS.ProcessEnv): RenovateConfig { +export function getConfig(env: NodeJS.ProcessEnv): GlobalConfig { const options = getOptions(); - const config: RenovateConfig = { hostRules: [] }; + const config: GlobalConfig = { hostRules: [] }; const coersions = { boolean: (val: string): boolean => val === 'true', diff --git a/lib/config/file.ts b/lib/config/file.ts index 4e245a9882a4b2a85d02200136326ac47f6ca0b5..32d55d247c67adaf4d021b6c414b904efed1b5e6 100644 --- a/lib/config/file.ts +++ b/lib/config/file.ts @@ -1,15 +1,15 @@ import upath from 'upath'; import { logger } from '../logger'; -import { RenovateConfig } from './common'; +import { GlobalConfig } from './common'; import { migrateConfig } from './migration'; -export function getConfig(env: NodeJS.ProcessEnv): RenovateConfig { +export function getConfig(env: NodeJS.ProcessEnv): GlobalConfig { let configFile = env.RENOVATE_CONFIG_FILE || 'config'; if (!upath.isAbsolute(configFile)) { configFile = `${process.cwd()}/${configFile}`; logger.debug('Checking for config file in ' + configFile); } - let config: RenovateConfig = {}; + let config: GlobalConfig = {}; try { // eslint-disable-next-line global-require,import/no-dynamic-require config = require(configFile); diff --git a/lib/config/index.ts b/lib/config/index.ts index 8c8eae307a8082af6c4668a2a7ced53b3df74fe3..f94f23c5bba62de65c69c63b3e742d7879b5b0f8 100644 --- a/lib/config/index.ts +++ b/lib/config/index.ts @@ -3,7 +3,7 @@ import { get, getLanguageList, getManagerList } from '../manager'; import { readFile } from '../util/fs'; import { ensureTrailingSlash } from '../util/url'; import * as cliParser from './cli'; -import { RenovateConfig, RenovateConfigStage } from './common'; +import { GlobalConfig, RenovateConfig, RenovateConfigStage } from './common'; import * as defaultsParser from './defaults'; import * as definitions from './definitions'; import * as envParser from './env'; @@ -44,7 +44,7 @@ export function getManagerConfig( export async function parseConfigs( env: NodeJS.ProcessEnv, argv: string[] -): Promise<RenovateConfig> { +): Promise<GlobalConfig> { logger.debug('Parsing configs'); // Get configs @@ -138,9 +138,9 @@ export async function parseConfigs( } export function filterConfig( - inputConfig: RenovateConfig, + inputConfig: GlobalConfig, targetStage: RenovateConfigStage -): RenovateConfig { +): GlobalConfig { logger.trace({ config: inputConfig }, `filterConfig('${targetStage}')`); const outputConfig: RenovateConfig = { ...inputConfig }; const stages = ['global', 'repository', 'package', 'branch', 'pr']; diff --git a/lib/config/presets/index.ts b/lib/config/presets/index.ts index fb07aa8d9eb89b76b0fa5946843262e72d8971ac..92d4c04550443d5daf6be4b0ad8cc64b45965118 100644 --- a/lib/config/presets/index.ts +++ b/lib/config/presets/index.ts @@ -6,7 +6,7 @@ import { import { logger } from '../../logger'; import { ExternalHostError } from '../../types/errors/external-host-error'; import { regEx } from '../../util/regex'; -import { RenovateConfig } from '../common'; +import { GlobalConfig, RenovateConfig } from '../common'; import * as massage from '../massage'; import * as migration from '../migration'; import { mergeChildConfig } from '../utils'; @@ -185,11 +185,11 @@ export async function getPreset( } export async function resolveConfigPresets( - inputConfig: RenovateConfig, + inputConfig: GlobalConfig, baseConfig?: RenovateConfig, ignorePresets?: string[], existingPresets: string[] = [] -): Promise<RenovateConfig> { +): Promise<GlobalConfig> { if (!ignorePresets || ignorePresets.length === 0) { ignorePresets = inputConfig.ignorePresets || []; // eslint-disable-line } @@ -197,7 +197,7 @@ export async function resolveConfigPresets( { config: inputConfig, existingPresets }, 'resolveConfigPresets' ); - let config: RenovateConfig = {}; + let config: GlobalConfig = {}; // First, merge all the preset configs from left to right if (inputConfig.extends?.length) { for (const preset of inputConfig.extends) { diff --git a/lib/util/cache/package/index.ts b/lib/util/cache/package/index.ts index 4735f5e977467cb0b081722d629757bbb27a5035..1300325c3ee5b7c1272400c7b5d05c5a7c774463 100644 --- a/lib/util/cache/package/index.ts +++ b/lib/util/cache/package/index.ts @@ -1,4 +1,4 @@ -import { RenovateConfig } from '../../../config/common'; +import { GlobalConfig } from '../../../config/common'; import * as memCache from '../memory'; import { PackageCache } from './common'; import * as fileCache from './file'; @@ -35,7 +35,7 @@ export function set( return cacheProxy.set(namespace, key, value, minutes); } -export function init(config: RenovateConfig): void { +export function init(config: GlobalConfig): void { if (config.redisUrl) { redisCache.init(config.redisUrl); cacheProxy = { @@ -51,7 +51,7 @@ export function init(config: RenovateConfig): void { } } -export function cleanup(config: RenovateConfig): void { +export function cleanup(config: GlobalConfig): void { if (config.redisUrl) { redisCache.end(); } diff --git a/lib/workers/global/autodiscover.ts b/lib/workers/global/autodiscover.ts index 019a3a85c57ad57a6ab7ec2f3f25c30e6af96589..396f32b9e2c19b730eb9b9af5f089f4728c6c73d 100644 --- a/lib/workers/global/autodiscover.ts +++ b/lib/workers/global/autodiscover.ts @@ -1,6 +1,6 @@ import is from '@sindresorhus/is'; import minimatch from 'minimatch'; -import { RenovateConfig } from '../../config'; +import { GlobalConfig } from '../../config'; import { logger } from '../../logger'; import { platform } from '../../platform'; @@ -10,8 +10,8 @@ function repoName(value: string | { repository: string }): string { } export async function autodiscoverRepositories( - config: RenovateConfig -): Promise<RenovateConfig> { + config: GlobalConfig +): Promise<GlobalConfig> { if (!config.autodiscover) { if (!config.repositories?.length) { logger.warn( diff --git a/lib/workers/global/index.ts b/lib/workers/global/index.ts index 2bbea30c1e2de760ddf0f608e1c66f9a5d448c2e..e9075469fd1368e35979d666ae695edd16aa325a 100644 --- a/lib/workers/global/index.ts +++ b/lib/workers/global/index.ts @@ -3,6 +3,7 @@ import { ERROR } from 'bunyan'; import fs from 'fs-extra'; import upath from 'upath'; import * as configParser from '../../config'; +import { GlobalConfig } from '../../config'; import { setAdminConfig } from '../../config/admin'; import { getAdminOptionNames } from '../../config/definitions'; import { getProblems, logger, setMeta } from '../../logger'; @@ -46,7 +47,7 @@ function haveReachedLimits(): boolean { } export async function start(): Promise<number> { - let config: RenovateConfig; + let config: GlobalConfig; try { // read global config from file, env and cli args config = await getGlobalConfig();