From 3756f2aec32f8cfa56ac12c91c5c23570a41cb11 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Fri, 5 Feb 2021 10:49:34 +0100 Subject: [PATCH] refactor: GlobalConfig type --- lib/config/cli.ts | 3 ++- lib/config/common.ts | 25 ++++++++++++++++--------- lib/config/defaults.ts | 6 +++--- lib/config/env.ts | 6 +++--- lib/config/file.ts | 6 +++--- lib/config/index.ts | 8 ++++---- lib/config/presets/index.ts | 8 ++++---- lib/util/cache/package/index.ts | 6 +++--- lib/workers/global/autodiscover.ts | 6 +++--- lib/workers/global/index.ts | 3 ++- 10 files changed, 43 insertions(+), 34 deletions(-) diff --git a/lib/config/cli.ts b/lib/config/cli.ts index ed499ba809..e7e64a036a 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 c6f03095dd..b23a0f3342 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 aa10fefbef..5b84b28767 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 1c0073ca4b..ddaec11ef7 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 4e245a9882..32d55d247c 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 8c8eae307a..f94f23c5bb 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 fb07aa8d9e..92d4c04550 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 4735f5e977..1300325c3e 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 019a3a85c5..396f32b9e2 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 2bbea30c1e..e9075469fd 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(); -- GitLab