From ba96b700341e7a75d10beb700501fb02f4db9ec1 Mon Sep 17 00:00:00 2001 From: Michael Kriese <michael.kriese@visualon.de> Date: Mon, 18 Apr 2022 11:13:29 +0200 Subject: [PATCH] refactor(manager): more strict null checks (#15161) --- lib/modules/manager/buildkite/extract.ts | 17 +++++++++-------- lib/modules/manager/cargo/artifacts.ts | 2 +- lib/modules/manager/cocoapods/artifacts.ts | 2 +- lib/modules/manager/cocoapods/extract.ts | 6 +++--- lib/modules/manager/types.ts | 2 +- tsconfig.strict.json | 10 ---------- 6 files changed, 15 insertions(+), 24 deletions(-) diff --git a/lib/modules/manager/buildkite/extract.ts b/lib/modules/manager/buildkite/extract.ts index 5e3d7ec14f..ac345a369d 100644 --- a/lib/modules/manager/buildkite/extract.ts +++ b/lib/modules/manager/buildkite/extract.ts @@ -17,30 +17,31 @@ export function extractPackageFile(content: string): PackageFile | null { const pluginsSection = regEx( /^(?<pluginsIndent>\s*)(-?\s*)plugins:/ ).exec(line); - if (pluginsSection) { + if (pluginsSection?.groups) { logger.trace(`Matched plugins on line ${lineNumber}`); isPluginsSection = true; pluginsIndent = pluginsSection.groups.pluginsIndent; } else if (isPluginsSection) { logger.debug(`serviceImageLine: "${line}"`); - const { currentIndent } = regEx(/^(?<currentIndent>\s*)/).exec( - line - ).groups; + const { currentIndent } = regEx(/^(?<currentIndent>\s*)/).exec(line) + ?.groups ?? /* istanbul ignore next: should never happen */ { + currentIndent: '', + }; const depLineMatch = regEx( /^\s+(?:-\s+)?(?<depName>[^#]+)#(?<currentValue>[^:]+)/ ).exec(line); if (currentIndent.length <= pluginsIndent.length) { isPluginsSection = false; pluginsIndent = ''; - } else if (depLineMatch) { + } else if (depLineMatch?.groups) { const { depName, currentValue } = depLineMatch.groups; logger.trace('depLineMatch'); - let skipReason: SkipReason; - let repo: string; + let skipReason: SkipReason | undefined; + let repo: string | undefined; const gitPluginMatch = regEx( /(ssh:\/\/git@|https:\/\/)(?<registry>[^/]+)\/(?<gitPluginName>.*)/ ).exec(depName); - if (gitPluginMatch) { + if (gitPluginMatch?.groups) { logger.debug('Examining git plugin'); const { registry, gitPluginName } = gitPluginMatch.groups; const gitDepName = gitPluginName.replace(regEx('\\.git$'), ''); diff --git a/lib/modules/manager/cargo/artifacts.ts b/lib/modules/manager/cargo/artifacts.ts index 0a7b3015f8..a1a05c3ce3 100644 --- a/lib/modules/manager/cargo/artifacts.ts +++ b/lib/modules/manager/cargo/artifacts.ts @@ -57,7 +57,7 @@ export async function updateArtifacts({ const existingLockFileContent = lockFileName ? await readLocalFile(lockFileName) : null; - if (!existingLockFileContent) { + if (!existingLockFileContent || !lockFileName) { logger.debug('No Cargo.lock found'); return null; } diff --git a/lib/modules/manager/cocoapods/artifacts.ts b/lib/modules/manager/cocoapods/artifacts.ts index 9a2a60f0f2..e36240262f 100644 --- a/lib/modules/manager/cocoapods/artifacts.ts +++ b/lib/modules/manager/cocoapods/artifacts.ts @@ -21,7 +21,7 @@ function getPluginCommands(content: string): string[] { const lines: string[] = content.split(newlineRegex); lines.forEach((line) => { const match = pluginRegex.exec(line); - if (match) { + if (match?.groups) { const { plugin } = match.groups; result.add(`gem install ${quote(plugin)}`); } diff --git a/lib/modules/manager/cocoapods/extract.ts b/lib/modules/manager/cocoapods/extract.ts index eed1fb52ba..d392d7ede1 100644 --- a/lib/modules/manager/cocoapods/extract.ts +++ b/lib/modules/manager/cocoapods/extract.ts @@ -54,10 +54,10 @@ export function gitDep(parsedLine: ParsedLine): PackageDependency | null { const platformMatch = regEx( /[@/](?<platform>github|gitlab)\.com[:/](?<account>[^/]+)\/(?<repo>[^/]+)/ - ).exec(git); + ).exec(git ?? ''); - if (platformMatch) { - const { account, repo, platform } = platformMatch?.groups || {}; + if (platformMatch?.groups) { + const { account, repo, platform } = platformMatch.groups; if (account && repo) { const datasource = platform === 'github' diff --git a/lib/modules/manager/types.ts b/lib/modules/manager/types.ts index 1bece70c5c..260843c769 100644 --- a/lib/modules/manager/types.ts +++ b/lib/modules/manager/types.ts @@ -156,7 +156,7 @@ export interface PackageDependency<T = Record<string, any>> extends Package<T> { currentVersion?: string; lockedVersion?: string; propSource?: string; - registryUrls?: string[]; + registryUrls?: string[] | null; rangeStrategy?: RangeStrategy; skipReason?: SkipReason; sourceLine?: number; diff --git a/tsconfig.strict.json b/tsconfig.strict.json index ce4b7261c0..d3da5e166e 100644 --- a/tsconfig.strict.json +++ b/tsconfig.strict.json @@ -40,16 +40,6 @@ "lib/config/validation.ts", "lib/modules/datasource/github-releases/test/index.ts", "lib/modules/manager/api.ts", - "lib/modules/manager/buildkite/extract.ts", - "lib/modules/manager/buildkite/index.ts", - "lib/modules/manager/bundler/artifacts.ts", - "lib/modules/manager/bundler/index.ts", - "lib/modules/manager/bundler/extract.ts", - "lib/modules/manager/cargo/artifacts.ts", - "lib/modules/manager/cargo/index.ts", - "lib/modules/manager/cocoapods/artifacts.ts", - "lib/modules/manager/cocoapods/extract.ts", - "lib/modules/manager/cocoapods/index.ts", "lib/modules/manager/composer/artifacts.ts", "lib/modules/manager/composer/extract.ts", "lib/modules/manager/composer/index.ts", -- GitLab