diff --git a/lib/manager/ansible-galaxy/extract.ts b/lib/manager/ansible-galaxy/extract.ts index 1cd3edf22bb076c5449de630516f9c26e487623b..d299cbf4c0c90f6a3d3d471f345691406f4d94c5 100644 --- a/lib/manager/ansible-galaxy/extract.ts +++ b/lib/manager/ansible-galaxy/extract.ts @@ -2,6 +2,7 @@ import { logger } from '../../logger'; import { PackageFile, PackageDependency } from '../common'; import * as datasourceGitTags from '../../datasource/git-tags'; import * as datasourceGalaxy from '../../datasource/galaxy'; +import { SkipReason } from '../../types'; function interpretLine( lineMatch: RegExpMatchArray, @@ -40,7 +41,7 @@ function interpretLine( function finalize(dependency: PackageDependency): boolean { const dep = dependency; if (dependency.managerData.version === null) { - dep.skipReason = 'no-version'; + dep.skipReason = SkipReason.NoVersion; return false; } @@ -58,7 +59,7 @@ function finalize(dependency: PackageDependency): boolean { dep.depName = dep.managerData.src; dep.lookupName = dep.managerData.src; } else { - dep.skipReason = 'no-source-match'; + dep.skipReason = SkipReason.NoSourceMatch; return false; } if (dep.managerData.name !== null) { diff --git a/lib/manager/bazel/extract.ts b/lib/manager/bazel/extract.ts index 1390bc9a24a931a13520d144bbd4606618a2d76b..e496bf0649aab3f34dfb66311d6618aaa3e4efac 100644 --- a/lib/manager/bazel/extract.ts +++ b/lib/manager/bazel/extract.ts @@ -8,6 +8,7 @@ import * as dockerVersioning from '../../versioning/docker'; import * as datasourceDocker from '../../datasource/docker'; import * as datasourceGo from '../../datasource/go'; import * as datasourceGithubReleases from '../../datasource/github-releases'; +import { SkipReason } from '../../types'; interface UrlParsedResult { repo: string; @@ -202,7 +203,7 @@ export function extractPackageFile(content: string): PackageFile | null { if (remoteMatch && remoteMatch[0].length === remote.length) { dep.lookupName = remote.replace('https://', ''); } else { - dep.skipReason = 'unsupported-remote'; + dep.skipReason = SkipReason.UnsupportedRemote; } } if (commit) { diff --git a/lib/manager/buildkite/extract.ts b/lib/manager/buildkite/extract.ts index 8b83061f17aa4c4d4f66aad950334100ddfb3a5e..8685446b41e0f50cd9623cc229ef7e60db9a1ef4 100644 --- a/lib/manager/buildkite/extract.ts +++ b/lib/manager/buildkite/extract.ts @@ -2,6 +2,7 @@ import { logger } from '../../logger'; import { isVersion } from '../../versioning/semver'; import { PackageFile, PackageDependency } from '../common'; import * as datasourceGithubTags from '../../datasource/github-tags'; +import { SkipReason } from '../../types'; export function extractPackageFile(content: string): PackageFile | null { const deps: PackageDependency[] = []; @@ -29,17 +30,17 @@ export function extractPackageFile(content: string): PackageFile | null { } else if (depLineMatch) { const { depName, currentValue } = depLineMatch.groups; logger.trace('depLineMatch'); - let skipReason: string; + let skipReason: SkipReason; let repo: string; if (depName.startsWith('https://') || depName.startsWith('git@')) { logger.debug({ dependency: depName }, 'Skipping git plugin'); - skipReason = 'git-plugin'; + skipReason = SkipReason.GitPlugin; } else if (!isVersion(currentValue)) { logger.debug( { currentValue }, 'Skipping non-pinned current version' ); - skipReason = 'invalid-version'; + skipReason = SkipReason.InvalidVersion; } else { const splitName = depName.split('/'); if (splitName.length === 1) { @@ -51,7 +52,7 @@ export function extractPackageFile(content: string): PackageFile | null { { dependency: depName }, 'Something is wrong with buildkite plugin name' ); - skipReason = 'unknown'; + skipReason = SkipReason.Unknown; } } const dep: PackageDependency = { diff --git a/lib/manager/bundler/extract.ts b/lib/manager/bundler/extract.ts index 1088d015221a82df04c7c2a319cf7712630ca67b..2b3938286d3ce714255d3d0330d6d3ff4cff16d2 100644 --- a/lib/manager/bundler/extract.ts +++ b/lib/manager/bundler/extract.ts @@ -4,6 +4,7 @@ import { platform } from '../../platform'; import { regEx } from '../../util/regex'; import { extractLockFileEntries } from './locked-version'; import * as datasourceRubygems from '../../datasource/rubygems'; +import { SkipReason } from '../../types'; export async function extractPackageFile( content: string, @@ -57,7 +58,7 @@ export async function extractPackageFile( .replace(regEx(gemDelimiter, 'g'), '') .trim(); } else { - dep.skipReason = 'no-version'; + dep.skipReason = SkipReason.NoVersion; } if (!dep.skipReason) { dep.datasource = datasourceRubygems.id; diff --git a/lib/manager/cargo/extract.ts b/lib/manager/cargo/extract.ts index a1b0904649bba0368ff7c389d8d2106b1ac9f5f2..353b803db55f636cfda55ac873253e6f17b6455e 100644 --- a/lib/manager/cargo/extract.ts +++ b/lib/manager/cargo/extract.ts @@ -3,6 +3,7 @@ import { logger } from '../../logger'; import { PackageDependency, PackageFile } from '../common'; import { CargoConfig, CargoSection } from './types'; import * as datasourceCrate from '../../datasource/crate'; +import { SkipReason } from '../../types'; function extractFromSection( parsedContent: CargoSection, @@ -15,7 +16,7 @@ function extractFromSection( return []; } Object.keys(sectionContent).forEach(depName => { - let skipReason: string; + let skipReason: SkipReason; let currentValue = sectionContent[depName]; let nestedVersion = false; if (typeof currentValue !== 'string') { @@ -26,20 +27,20 @@ function extractFromSection( currentValue = version; nestedVersion = true; if (path) { - skipReason = 'path-dependency'; + skipReason = SkipReason.PathDependency; } if (git) { - skipReason = 'git-dependency'; + skipReason = SkipReason.GitDependency; } } else if (path) { currentValue = ''; - skipReason = 'path-dependency'; + skipReason = SkipReason.PathDependency; } else if (git) { currentValue = ''; - skipReason = 'git-dependency'; + skipReason = SkipReason.GitDependency; } else { currentValue = ''; - skipReason = 'invalid-dependency-specification'; + skipReason = SkipReason.InvalidDependencySpecification; } } const dep: PackageDependency = { diff --git a/lib/manager/cocoapods/extract.ts b/lib/manager/cocoapods/extract.ts index 12730742064668ce863e38c0d7f2a5cbed9b6c0e..93ae76caee379c00145e6bd9cead9069675db492 100644 --- a/lib/manager/cocoapods/extract.ts +++ b/lib/manager/cocoapods/extract.ts @@ -2,6 +2,7 @@ import { logger } from '../../logger'; import { PackageDependency, PackageFile } from '../common'; import * as datasourcePod from '../../datasource/pod'; import * as datasourceGithubTags from '../../datasource/github-tags'; +import { SkipReason } from '../../types'; const regexMappings = [ /^\s*pod\s+(['"])(?<spec>[^'"/]+)(\/(?<subspec>[^'"]+))?\1/, @@ -96,7 +97,7 @@ export function extractPackageFile(content: string): PackageFile | null { let dep: PackageDependency = { depName, groupName, - skipReason: 'unknown-version', + skipReason: SkipReason.UnknownVersion, }; if (currentValue) { @@ -115,14 +116,14 @@ export function extractPackageFile(content: string): PackageFile | null { dep = { depName, groupName, - skipReason: 'git-dependency', + skipReason: SkipReason.GitDependency, }; } } else if (path) { dep = { depName, groupName, - skipReason: 'path-dependency', + skipReason: SkipReason.PathDependency, }; } diff --git a/lib/manager/common.ts b/lib/manager/common.ts index bcbab989b6a6b94060bf100dc5b550bd04871b94..2a81ecd28675c084fe96a43e57cd5f645a8b45e8 100644 --- a/lib/manager/common.ts +++ b/lib/manager/common.ts @@ -1,5 +1,5 @@ import { ReleaseType } from 'semver'; -import { RangeStrategy } from '../types'; +import { RangeStrategy, SkipReason } from '../types'; import { ValidationMessage, GlobalConfig, UpdateType } from '../config/common'; export type Result<T> = T | Promise<T>; @@ -149,7 +149,7 @@ export interface PackageDependency<T = Record<string, any>> extends Package<T> { propSource?: string; registryUrls?: string[]; rangeStrategy?: RangeStrategy; - skipReason?: string; + skipReason?: SkipReason; source?: string; sourceLine?: number; toVersion?: string; diff --git a/lib/manager/composer/extract.ts b/lib/manager/composer/extract.ts index b520f7cfe7e86b225694b0a2e97935ea7fbc65c6..5744369b89bfbba8f272785914a7a09b1838a8e9 100644 --- a/lib/manager/composer/extract.ts +++ b/lib/manager/composer/extract.ts @@ -3,7 +3,7 @@ import { logger } from '../../logger'; import { api as semverComposer } from '../../versioning/composer'; import { PackageFile, PackageDependency } from '../common'; import { platform } from '../../platform'; - +import { SkipReason } from '../../types'; import * as datasourceGitTags from '../../datasource/git-tags'; import * as datasourcePackagist from '../../datasource/packagist'; @@ -154,10 +154,10 @@ export async function extractPackageFile( dep.lookupName = lookupName; } if (!depName.includes('/')) { - dep.skipReason = 'unsupported'; + dep.skipReason = SkipReason.Unsupported; } if (currentValue === '*') { - dep.skipReason = 'any-version'; + dep.skipReason = SkipReason.AnyVersion; } if (lockParsed) { const lockedDep = lockParsed.packages.find( diff --git a/lib/manager/dockerfile/extract.ts b/lib/manager/dockerfile/extract.ts index 70e57fdd5d0fca834d8ae5d89e1048ff127e47cf..fae5f194f4d168d633615352124bf4e7a1eba88a 100644 --- a/lib/manager/dockerfile/extract.ts +++ b/lib/manager/dockerfile/extract.ts @@ -1,11 +1,12 @@ import { logger } from '../../logger'; import { PackageDependency, PackageFile } from '../common'; import * as datasourceDocker from '../../datasource/docker'; +import { SkipReason } from '../../types'; export function splitImageParts(currentFrom: string): PackageDependency { if (currentFrom.includes('$')) { return { - skipReason: 'contains-variable', + skipReason: SkipReason.ContainsVariable, }; } const [currentDepTag, currentDigest] = currentFrom.split('@'); diff --git a/lib/manager/gitlabci-include/extract.ts b/lib/manager/gitlabci-include/extract.ts index 7a7124689444510884850584d7fd4eae4d789748..83a5dcef7ab69a190abb5037cc0294ef15171003 100644 --- a/lib/manager/gitlabci-include/extract.ts +++ b/lib/manager/gitlabci-include/extract.ts @@ -3,6 +3,7 @@ import yaml from 'js-yaml'; import { logger } from '../../logger'; import { PackageDependency, ExtractConfig, PackageFile } from '../common'; import * as datasourceGitlabTags from '../../datasource/gitlab-tags'; +import { SkipReason } from '../../types'; function extractDepFromInclude(includeObj: { file: any; @@ -18,7 +19,7 @@ function extractDepFromInclude(includeObj: { depType: 'repository', }; if (!includeObj.ref) { - dep.skipReason = 'unknown-version'; + dep.skipReason = SkipReason.UnknownVersion; return dep; } dep.currentValue = includeObj.ref; diff --git a/lib/manager/gomod/extract.ts b/lib/manager/gomod/extract.ts index 0e45ac0ef6bd10db2b3da7a2ade92e63886390f2..839bfdb4f71e1e85155e7ddff27f8fccda2666d3 100644 --- a/lib/manager/gomod/extract.ts +++ b/lib/manager/gomod/extract.ts @@ -2,6 +2,7 @@ import { logger } from '../../logger'; import { isVersion } from '../../versioning/semver'; import { PackageDependency, PackageFile } from '../common'; import * as datasourceGo from '../../datasource/go'; +import { SkipReason } from '../../types'; function getDep( lineNumber: number, @@ -20,7 +21,7 @@ function getDep( currentValue, }; if (!isVersion(currentValue)) { - dep.skipReason = 'unsupported-version'; + dep.skipReason = SkipReason.UnsupportedVersion; } else { if (depName.startsWith('gopkg.in/')) { const [pkg] = depName.replace('gopkg.in/', '').split('.'); diff --git a/lib/manager/helm-requirements/extract.ts b/lib/manager/helm-requirements/extract.ts index e3a751bdfab4fb24f45964182fcac47cf3b88d1b..90b266bd3a3bd30ad9586367c21fde00ffb54e72 100644 --- a/lib/manager/helm-requirements/extract.ts +++ b/lib/manager/helm-requirements/extract.ts @@ -1,7 +1,7 @@ import is from '@sindresorhus/is'; import upath from 'upath'; import yaml from 'js-yaml'; - +import { SkipReason } from '../../types'; import { logger } from '../../logger'; import { PackageFile, PackageDependency, ExtractConfig } from '../common'; import { platform } from '../../platform'; @@ -59,20 +59,20 @@ export async function extractPackageFile( return res; } - res.skipReason = 'placeholder-url'; + res.skipReason = SkipReason.PlaceholderUrl; } else { try { const url = new URL(dep.repository); if (url.protocol === 'file:') { - res.skipReason = 'local-dependency'; + res.skipReason = SkipReason.LocalDependency; } } catch (err) { logger.debug({ err }, 'Error parsing url'); - res.skipReason = 'invalid-url'; + res.skipReason = SkipReason.InvalidUrl; } } } else { - res.skipReason = 'no-repository'; + res.skipReason = SkipReason.NoRepository; } return res; }); diff --git a/lib/manager/helmfile/extract.ts b/lib/manager/helmfile/extract.ts index 278af59c0e1516202c1d3595019e74e6aae27468..662a9647fbb04931e420acd29d0260a2400db20c 100644 --- a/lib/manager/helmfile/extract.ts +++ b/lib/manager/helmfile/extract.ts @@ -1,6 +1,6 @@ import is from '@sindresorhus/is'; import yaml from 'js-yaml'; - +import { SkipReason } from '../../types'; import { logger } from '../../logger'; import { PackageFile, PackageDependency, ExtractConfig } from '../common'; import * as datasourceHelm from '../../datasource/helm'; @@ -65,18 +65,18 @@ export function extractPackageFile( // If version is null is probably a local chart if (!res.currentValue) { - res.skipReason = 'local-chart'; + res.skipReason = SkipReason.LocalChart; } // By definition on helm the chart name should be lowecase letter + number + - // However helmfile support templating of that field if (!isValidChartName(res.depName)) { - res.skipReason = 'unsupported-chart-type'; + res.skipReason = SkipReason.UnsupportedChartType; } // Skip in case we cannot locate the registry if (is.emptyArray(res.registryUrls)) { - res.skipReason = 'unknown-registry'; + res.skipReason = SkipReason.UnknownRegistry; } return res; diff --git a/lib/manager/homebrew/extract.ts b/lib/manager/homebrew/extract.ts index 1abb7e44daf02a86d02a427eabcd5564d106746e..454ff063abf9a823e5f63b94f025c12e67190756 100644 --- a/lib/manager/homebrew/extract.ts +++ b/lib/manager/homebrew/extract.ts @@ -2,6 +2,7 @@ import { skip, isSpace, removeComments } from './util'; import { logger } from '../../logger'; import { PackageFile, PackageDependency } from '../common'; import * as datasourceGithubTags from '../../datasource/github-tags'; +import { SkipReason } from '../../types'; function parseSha256(idx: number, content: string): string | null { let i = idx; @@ -167,7 +168,7 @@ export function extractPackageFile(content: string): PackageFile | null { logger.debug('Invalid URL field'); } const urlPathResult = parseUrlPath(url); - let skipReason: string; + let skipReason: SkipReason; let currentValue: string = null; let ownerName: string = null; let repoName: string = null; @@ -177,12 +178,12 @@ export function extractPackageFile(content: string): PackageFile | null { repoName = urlPathResult.repoName; } else { logger.debug('Error: Unsupported URL field'); - skipReason = 'unsupported-url'; + skipReason = SkipReason.UnsupportedUrl; } const sha256 = extractSha256(cleanContent); if (!sha256 || sha256.length !== 64) { logger.debug('Error: Invalid sha256 field'); - skipReason = 'invalid-sha256'; + skipReason = SkipReason.InvalidSha256; } const dep: PackageDependency = { depName: `${ownerName}/${repoName}`, diff --git a/lib/manager/maven/extract.ts b/lib/manager/maven/extract.ts index 9cef6388d55ff642e84a0e6b24ec761e567de572..43893ba20673a473987b3a68cc7e86e13ebdd249 100644 --- a/lib/manager/maven/extract.ts +++ b/lib/manager/maven/extract.ts @@ -6,6 +6,7 @@ import { ExtractConfig, PackageFile, PackageDependency } from '../common'; import { platform } from '../../platform'; import * as datasourceMaven from '../../datasource/maven'; import { MAVEN_REPO } from '../../datasource/maven/common'; +import { SkipReason } from '../../types'; export function parsePom(raw: string): XmlDocument | null { let project: XmlDocument; @@ -125,9 +126,9 @@ function applyProps( } if (containsPlaceholder(depName)) { - result.skipReason = 'name-placeholder'; + result.skipReason = SkipReason.NamePlaceholder; } else if (containsPlaceholder(currentValue)) { - result.skipReason = 'version-placeholder'; + result.skipReason = SkipReason.VersionPlaceholder; } return result; diff --git a/lib/manager/mix/extract.ts b/lib/manager/mix/extract.ts index b592001307162d8f7f88a97f95364bd6667dc66a..0cb543e4fb527ab4a274ece4525f3161e57d0002 100644 --- a/lib/manager/mix/extract.ts +++ b/lib/manager/mix/extract.ts @@ -1,6 +1,7 @@ import { logger } from '../../logger'; import { PackageDependency, PackageFile } from '../common'; import * as datasourceHex from '../../datasource/hex'; +import { SkipReason } from '../../types'; const depSectionRegExp = /defp\s+deps.*do/g; const depMatchRegExp = /{:(\w+),\s*([^:"]+)?:?\s*"([^"]+)",?\s*(organization: "(.*)")?.*}/gm; @@ -45,7 +46,7 @@ export function extractPackageFile(content: string): PackageFile { } if (dep.datasource !== datasourceHex.id) { - dep.skipReason = 'non-hex depTypes'; + dep.skipReason = SkipReason.NonHexDeptypes; } // Find dep's line number diff --git a/lib/manager/npm/extract/index.ts b/lib/manager/npm/extract/index.ts index 6a239084dd503eebc26b5f8b076e9b6009ebe3aa..3bfb283c3449ddf9f8fb88d83c00b2b68cc4c440 100644 --- a/lib/manager/npm/extract/index.ts +++ b/lib/manager/npm/extract/index.ts @@ -4,7 +4,7 @@ import { join } from 'upath'; import validateNpmPackageName from 'validate-npm-package-name'; import is from '@sindresorhus/is'; import { logger } from '../../../logger'; - +import { SkipReason } from '../../../types'; import { getLockedVersions } from './locked-versions'; import { detectMonorepos } from './monorepo'; import { mightBeABrowserLibrary } from './type'; @@ -145,11 +145,11 @@ export async function extractPackageFile( ): PackageDependency { const dep: PackageDependency = {}; if (!validateNpmPackageName(depName).validForOldPackages) { - dep.skipReason = 'invalid-name'; + dep.skipReason = SkipReason.InvalidName; return dep; } if (typeof input !== 'string') { - dep.skipReason = 'invalid-value'; + dep.skipReason = SkipReason.InvalidValue; return dep; } dep.currentValue = input.trim(); @@ -165,10 +165,10 @@ export async function extractPackageFile( dep.datasource = datasourceNpm.id; dep.commitMessageTopic = 'npm'; } else { - dep.skipReason = 'unknown-engines'; + dep.skipReason = SkipReason.UnknownEngines; } if (!isValid(dep.currentValue)) { - dep.skipReason = 'unknown-version'; + dep.skipReason = SkipReason.UnknownVersion; } return dep; } @@ -183,10 +183,10 @@ export async function extractPackageFile( dep.datasource = datasourceNpm.id; dep.commitMessageTopic = 'Yarn'; } else { - dep.skipReason = 'unknown-volta'; + dep.skipReason = SkipReason.UnknownVolta; } if (!isValid(dep.currentValue)) { - dep.skipReason = 'unknown-version'; + dep.skipReason = SkipReason.UnknownVersion; } return dep; } @@ -205,23 +205,23 @@ export async function extractPackageFile( } } if (dep.currentValue.startsWith('file:')) { - dep.skipReason = 'file'; + dep.skipReason = SkipReason.File; hasFileRefs = true; return dep; } if (isValid(dep.currentValue)) { dep.datasource = datasourceNpm.id; if (dep.currentValue === '*') { - dep.skipReason = 'any-version'; + dep.skipReason = SkipReason.AnyVersion; } if (dep.currentValue === '') { - dep.skipReason = 'empty'; + dep.skipReason = SkipReason.Empty; } return dep; } const hashSplit = dep.currentValue.split('#'); if (hashSplit.length !== 2) { - dep.skipReason = 'unknown-version'; + dep.skipReason = SkipReason.UnknownVersion; return dep; } const [depNamePart, depRefPart] = hashSplit; @@ -232,7 +232,7 @@ export async function extractPackageFile( .replace(/\.git$/, ''); const githubRepoSplit = githubOwnerRepo.split('/'); if (githubRepoSplit.length !== 2) { - dep.skipReason = 'unknown-version'; + dep.skipReason = SkipReason.UnknownVersion; return dep; } const [githubOwner, githubRepo] = githubRepoSplit; @@ -241,7 +241,7 @@ export async function extractPackageFile( !githubValidRegex.test(githubOwner) || !githubValidRegex.test(githubRepo) ) { - dep.skipReason = 'unknown-version'; + dep.skipReason = SkipReason.UnknownVersion; return dep; } if (isVersion(depRefPart)) { @@ -260,7 +260,7 @@ export async function extractPackageFile( dep.datasource = datasourceGithubTags.id; dep.lookupName = githubOwnerRepo; } else { - dep.skipReason = 'unversioned-reference'; + dep.skipReason = SkipReason.UnversionedReference; return dep; } dep.githubRepo = githubOwnerRepo; diff --git a/lib/manager/nuget/__snapshots__/extract.spec.ts.snap b/lib/manager/nuget/__snapshots__/extract.spec.ts.snap index 4b965dc465c87b89498de8a953cdf8cf87659390..35604872ad0112dd3c41e51c09438418c0bc97b6 100644 --- a/lib/manager/nuget/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/nuget/__snapshots__/extract.spec.ts.snap @@ -109,7 +109,7 @@ Array [ "managerData": Object { "lineNumber": 23, }, - "skipReason": "not-version", + "skipReason": "not-a-version", }, Object { "currentValue": "1.2.3", diff --git a/lib/manager/nuget/extract.ts b/lib/manager/nuget/extract.ts index 4891ada92e70d8d6733e43d2021248492e87de18..beda76e4fb9adf65ea92a18a2421610843527693 100644 --- a/lib/manager/nuget/extract.ts +++ b/lib/manager/nuget/extract.ts @@ -3,6 +3,7 @@ import { get } from '../../versioning'; import { PackageDependency, ExtractConfig, PackageFile } from '../common'; import * as semverVersioning from '../../versioning/semver'; import * as datasourceNuget from '../../datasource/nuget'; +import { SkipReason } from '../../types'; export function extractPackageFile( content: string, @@ -41,7 +42,7 @@ export function extractPackageFile( datasource: datasourceNuget.id, }; if (!isVersion(currentValue)) { - dep.skipReason = 'not-version'; + dep.skipReason = SkipReason.NotAVersion; } deps.push(dep); } diff --git a/lib/manager/pip_requirements/extract.ts b/lib/manager/pip_requirements/extract.ts index eb8e7d95ccbc4b5361e17205d3aed1d5a5c97e5b..4274a71a28eb51b20a18c45a94ca7af382b2ac50 100644 --- a/lib/manager/pip_requirements/extract.ts +++ b/lib/manager/pip_requirements/extract.ts @@ -4,6 +4,7 @@ import { logger } from '../../logger'; import { isSkipComment } from '../../util/ignore'; import { ExtractConfig, PackageDependency, PackageFile } from '../common'; import * as datasourcePypi from '../../datasource/pypi'; +import { SkipReason } from '../../types'; export const packagePattern = '[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9._-]*[a-zA-Z0-9]'; @@ -53,7 +54,7 @@ export function extractPackageFile( let dep: PackageDependency = {}; const [line, comment] = rawline.split('#').map(part => part.trim()); if (isSkipComment(comment)) { - dep.skipReason = 'ignored'; + dep.skipReason = SkipReason.Ignored; } regex.lastIndex = 0; const matches = regex.exec(line); diff --git a/lib/manager/pip_setup/extract.ts b/lib/manager/pip_setup/extract.ts index fe7dab277c2354e9e0861db16effe843081e9bdc..47e4429bd25c371a2a10e1392ebb68fafaccd30c 100644 --- a/lib/manager/pip_setup/extract.ts +++ b/lib/manager/pip_setup/extract.ts @@ -6,6 +6,7 @@ import { dependencyPattern } from '../pip_requirements/extract'; import { ExtractConfig, PackageFile, PackageDependency } from '../common'; import * as datasourcePypi from '../../datasource/pypi'; import { BinarySource } from '../../util/exec/common'; +import { SkipReason } from '../../types'; export const pythonVersions = ['python', 'python3', 'python3.8']; let pythonAlias: string | null = null; @@ -127,7 +128,7 @@ export async function extractPackageFile( let dep: PackageDependency = {}; const [, comment] = rawline.split('#').map(part => part.trim()); if (isSkipComment(comment)) { - dep.skipReason = 'ignored'; + dep.skipReason = SkipReason.Ignored; } regex.lastIndex = 0; const matches = regex.exec(req); diff --git a/lib/manager/pipenv/extract.ts b/lib/manager/pipenv/extract.ts index 980e8d71733b667e0b1e806c1173472bb78ff97e..5f53f8b72cc5dc7a4cdbfbcf73819f6a76bbe471 100644 --- a/lib/manager/pipenv/extract.ts +++ b/lib/manager/pipenv/extract.ts @@ -4,6 +4,7 @@ import { RANGE_PATTERN } from '@renovate/pep440/lib/specifier'; import { logger } from '../../logger'; import { PackageFile, PackageDependency } from '../common'; import * as datasourcePypi from '../../datasource/pypi'; +import { SkipReason } from '../../types'; // based on https://www.python.org/dev/peps/pep-0508/#names const packageRegex = /^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$/i; @@ -49,23 +50,23 @@ function extractFromSection( const [depName, requirements] = x; let currentValue: string; let nestedVersion: boolean; - let skipReason: string; + let skipReason: SkipReason; if (requirements.git) { - skipReason = 'git-dependency'; + skipReason = SkipReason.GitDependency; } else if (requirements.file) { - skipReason = 'file-dependency'; + skipReason = SkipReason.FileDependency; } else if (requirements.path) { - skipReason = 'local-dependency'; + skipReason = SkipReason.LocalDependency; } else if (requirements.version) { currentValue = requirements.version; nestedVersion = true; } else if (is.object(requirements)) { - skipReason = 'any-version'; + skipReason = SkipReason.AnyVersion; } else { currentValue = requirements; } if (currentValue === '*') { - skipReason = 'any-version'; + skipReason = SkipReason.AnyVersion; } if (!skipReason) { const packageMatches = packageRegex.exec(depName); @@ -73,14 +74,14 @@ function extractFromSection( logger.debug( `Skipping dependency with malformed package name "${depName}".` ); - skipReason = 'invalid-name'; + skipReason = SkipReason.InvalidName; } const specifierMatches = specifierRegex.exec(currentValue); if (!specifierMatches) { logger.debug( `Skipping dependency with malformed version specifier "${currentValue}".` ); - skipReason = 'invalid-version'; + skipReason = SkipReason.InvalidVersion; } } const dep: PackageDependency = { diff --git a/lib/manager/poetry/extract.ts b/lib/manager/poetry/extract.ts index ff7e57c5e6788dd866c03df7baa3d7beda818223..ba4f945e878052cf977864a29e14f06ebfa8ccd4 100644 --- a/lib/manager/poetry/extract.ts +++ b/lib/manager/poetry/extract.ts @@ -4,6 +4,7 @@ import { logger } from '../../logger'; import { PackageFile, PackageDependency } from '../common'; import { PoetryFile, PoetrySection } from './types'; import * as datasourcePypi from '../../datasource/pypi'; +import { SkipReason } from '../../types'; function extractFromSection( parsedFile: PoetryFile, @@ -15,7 +16,7 @@ function extractFromSection( return []; } Object.keys(sectionContent).forEach(depName => { - let skipReason: string; + let skipReason: SkipReason; let currentValue = sectionContent[depName]; let nestedVersion = false; if (typeof currentValue !== 'string') { @@ -26,20 +27,20 @@ function extractFromSection( currentValue = version; nestedVersion = true; if (path) { - skipReason = 'path-dependency'; + skipReason = SkipReason.PathDependency; } if (git) { - skipReason = 'git-dependency'; + skipReason = SkipReason.GitDependency; } } else if (path) { currentValue = ''; - skipReason = 'path-dependency'; + skipReason = SkipReason.PathDependency; } else if (git) { currentValue = ''; - skipReason = 'git-dependency'; + skipReason = SkipReason.GitDependency; } else { currentValue = ''; - skipReason = 'multiple-constraint-dep'; + skipReason = SkipReason.MultipleConstraintDep; } } const dep: PackageDependency = { @@ -52,7 +53,7 @@ function extractFromSection( if (skipReason) { dep.skipReason = skipReason; } else if (!isValid(dep.currentValue)) { - dep.skipReason = 'unknown-version'; + dep.skipReason = SkipReason.UnknownVersion; } deps.push(dep); }); diff --git a/lib/manager/pub/extract.ts b/lib/manager/pub/extract.ts index 935c8345c53e98796208b49e6e7ed1f446be6a41..2f9332667c3c5a8c4562863727883367ec830cce 100644 --- a/lib/manager/pub/extract.ts +++ b/lib/manager/pub/extract.ts @@ -2,6 +2,7 @@ import { safeLoad } from 'js-yaml'; import { logger } from '../../logger'; import { PackageDependency, PackageFile } from '../common'; import * as datasourceDart from '../../datasource/dart'; +import { SkipReason } from '../../types'; function getDeps( depsObj: { [x: string]: any }, @@ -23,7 +24,7 @@ function getDeps( const dep: PackageDependency = { ...preset, depName, currentValue }; if (!currentValue) { - dep.skipReason = 'not-a-version'; + dep.skipReason = SkipReason.NotAVersion; } return [...acc, dep]; diff --git a/lib/manager/terraform/extract.ts b/lib/manager/terraform/extract.ts index a57c504a7fda23c3dba43032f63d9c7b2efbc353..adaa6cf62f262443f266271d1bb631120ac474a3 100644 --- a/lib/manager/terraform/extract.ts +++ b/lib/manager/terraform/extract.ts @@ -5,6 +5,7 @@ import * as datasourceGitTags from '../../datasource/git-tags'; import * as datasourceGithubTags from '../../datasource/github-tags'; import * as datasourceTerraformModule from '../../datasource/terraform-module'; import * as datasourceTerraformProvider from '../../datasource/terraform-provider'; +import { SkipReason } from '../../types'; export enum TerraformDependencyTypes { unknown = 'unknown', @@ -101,7 +102,7 @@ export function extractPackageFile(content: string): PackageFile | null { dep.lookupName = githubRefMatch[2]; dep.managerData.lineNumber = dep.sourceLine; if (!isVersion(dep.currentValue)) { - dep.skipReason = 'unsupported-version'; + dep.skipReason = SkipReason.UnsupportedVersion; } } else if (gitTagsRefMatch) { dep.depType = 'gitTags'; @@ -112,12 +113,12 @@ export function extractPackageFile(content: string): PackageFile | null { dep.lookupName = gitTagsRefMatch[1]; dep.managerData.lineNumber = dep.sourceLine; if (!isVersion(dep.currentValue)) { - dep.skipReason = 'unsupported-version'; + dep.skipReason = SkipReason.UnsupportedVersion; } } else if (dep.source) { const moduleParts = dep.source.split('//')[0].split('/'); if (moduleParts[0] === '..') { - dep.skipReason = 'local'; + dep.skipReason = SkipReason.Local; } else if (moduleParts.length >= 3) { dep.depType = 'terraform'; dep.depName = moduleParts.join('/'); @@ -127,7 +128,7 @@ export function extractPackageFile(content: string): PackageFile | null { } } else { logger.debug({ dep }, 'terraform dep has no source'); - dep.skipReason = 'no-source'; + dep.skipReason = SkipReason.NoSource; } } else if ( dep.managerData.terraformDependencyType === @@ -140,10 +141,10 @@ export function extractPackageFile(content: string): PackageFile | null { dep.datasource = datasourceTerraformProvider.id; if (dep.managerData.lineNumber) { if (!isValid(dep.currentValue)) { - dep.skipReason = 'unsupported-version'; + dep.skipReason = SkipReason.UnsupportedVersion; } } else if (!dep.skipReason) { - dep.skipReason = 'no-version'; + dep.skipReason = SkipReason.NoVersion; } } delete dep.sourceLine; diff --git a/lib/types/index.ts b/lib/types/index.ts index 95cfeb6540df3972082b69c746558f8cdad9ba91..fbc1cdb92d312aefe040d0f375a72ce36a2b4480 100644 --- a/lib/types/index.ts +++ b/lib/types/index.ts @@ -1,3 +1,4 @@ export * from './host-rules'; +export * from './skip-reason'; export * from './versioning'; export * from './branch-status'; diff --git a/lib/types/skip-reason.ts b/lib/types/skip-reason.ts new file mode 100644 index 0000000000000000000000000000000000000000..aab3912f5df8f5b644256fc7c8aa6b4de592c0b8 --- /dev/null +++ b/lib/types/skip-reason.ts @@ -0,0 +1,44 @@ +export enum SkipReason { + AnyVersion = 'any-version', + ContainsVariable = 'contains-variable', + Disabled = 'disabled', + Empty = 'empty', + FileDependency = 'file-dependency', + File = 'file', + GitDependency = 'git-dependency', + GitPlugin = 'git-plugin', + Ignored = 'ignored', + InternalPackage = 'internal-package', + InvalidDependencySpecification = 'invalid-dependency-specification', + InvalidName = 'invalid-name', + InvalidSha256 = 'invalid-sha256', + InvalidUrl = 'invalid-url', + InvalidValue = 'invalid-value', + InvalidVersion = 'invalid-version', + LocalChart = 'local-chart', + LocalDependency = 'local-dependency', + Local = 'local', + MultipleConstraintDep = 'multiple-constraint-dep', + NamePlaceholder = 'name-placeholder', + NoRepository = 'no-repository', + NoSourceMatch = 'no-source-match', + NoSource = 'no-source', + NoVersion = 'no-version', + NonHexDeptypes = 'non-hex depTypes', + NotAVersion = 'not-a-version', + PathDependency = 'path-dependency', + PlaceholderUrl = 'placeholder-url', + UnknownEngines = 'unknown-engines', + UnknownRegistry = 'unknown-registry', + UnknownVersion = 'unknown-version', + UnknownVolta = 'unknown-volta', + Unknown = 'unknown', + UnsupportedChartType = 'unsupported-chart-type', + UnsupportedRemote = 'unsupported-remote', + UnsupportedUrl = 'unsupported-url', + UnsupportedValue = 'unsupported-value', + UnsupportedVersion = 'unsupported-version', + Unsupported = 'unsupported', + UnversionedReference = 'unversioned-reference', + VersionPlaceholder = 'version-placeholder', +} diff --git a/lib/workers/repository/process/fetch.ts b/lib/workers/repository/process/fetch.ts index 58ffdc128f7acb575973709dba0a6f78f7cdf272..ef60ba0d23e5a11bbf5c459cf3dcaf2aa1144f6c 100644 --- a/lib/workers/repository/process/fetch.ts +++ b/lib/workers/repository/process/fetch.ts @@ -15,6 +15,7 @@ import { PackageDependency, PackageUpdateResult, } from '../../../manager/common'; +import { SkipReason } from '../../../types'; async function fetchDepUpdates( packageFileConfig: ManagerConfig & PackageFile, @@ -32,7 +33,7 @@ async function fetchDepUpdates( depConfig = applyPackageRules(depConfig); if (depConfig.ignoreDeps.includes(depName)) { logger.debug({ dependency: dep.depName }, 'Dependency is ignored'); - dep.skipReason = 'ignored'; + dep.skipReason = SkipReason.Ignored; } else if ( depConfig.internalPackages && depConfig.internalPackages.includes(depName) @@ -41,10 +42,10 @@ async function fetchDepUpdates( { dependency: dep.depName }, 'Dependency is ignored due to being internal' ); - dep.skipReason = 'internal-package'; + dep.skipReason = SkipReason.InternalPackage; } else if (depConfig.enabled === false) { logger.debug({ dependency: dep.depName }, 'Dependency is disabled'); - dep.skipReason = 'disabled'; + dep.skipReason = SkipReason.Disabled; } else { let lookupResults: UpdateResult | PackageUpdateResult[]; if (depConfig.datasource) { diff --git a/lib/workers/repository/process/lookup/index.ts b/lib/workers/repository/process/lookup/index.ts index db625850ac0e4476d87c070e62bb1b352584e460..fdc6c5652c3c8f108be84eb54797b90a637b6c0b 100644 --- a/lib/workers/repository/process/lookup/index.ts +++ b/lib/workers/repository/process/lookup/index.ts @@ -14,6 +14,7 @@ import { RangeConfig } from '../../../../manager/common'; import { RenovateConfig, UpdateType } from '../../../../config'; import { clone } from '../../../../util/clone'; import * as datasourceGitSubmodules from '../../../../datasource/git-submodules'; +import { SkipReason } from '../../../../types'; export interface LookupWarning { updateType: 'warning'; @@ -28,7 +29,7 @@ export interface UpdateResult { homepage?: string; deprecationMessage?: string; sourceUrl?: string; - skipReason?: string; + skipReason: SkipReason; releases: Release[]; updates: LookupUpdate[]; @@ -138,7 +139,7 @@ export async function lookupUpdates( const res: UpdateResult = { updates: [], warnings: [] } as any; const isValid = currentValue && version.isValid(currentValue); - if (!isValid) res.skipReason = 'invalid-value'; + if (!isValid) res.skipReason = SkipReason.InvalidValue; if (isValid) { const dependency = clone(await getPkgReleases(config)); @@ -344,11 +345,11 @@ export async function lookupUpdates( } res.updates = res.updates.concat(Object.values(buckets)); } else if (!currentValue) { - res.skipReason = 'unsupported-value'; + res.skipReason = SkipReason.UnsupportedValue; } else { logger.debug(`Dependency ${depName} has unsupported value ${currentValue}`); if (!config.pinDigests && !config.currentDigest) { - res.skipReason = 'unsupported-value'; + res.skipReason = SkipReason.UnsupportedValue; } else { delete res.skipReason; }