From ab778ebf1d8be7d328570d18fe7ae5c6c4b1ab7a Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Wed, 19 Jan 2022 09:06:21 +0100 Subject: [PATCH] feat: supportedDatasources (#13621) Co-authored-by: Michael Kriese <michael.kriese@visualon.de> Co-authored-by: Jamie Magee <jamie.magee@gmail.com> --- lib/manager/ansible-galaxy/extract.spec.ts | 2 +- lib/manager/ansible-galaxy/extract.ts | 2 +- lib/manager/ansible-galaxy/index.ts | 12 +++++++++-- lib/manager/ansible/extract.spec.ts | 2 +- lib/manager/ansible/extract.ts | 4 +--- lib/manager/ansible/index.ts | 9 ++++---- lib/manager/argocd/index.ts | 4 ++++ lib/manager/azure-pipelines/index.ts | 3 +++ lib/manager/batect-wrapper/index.ts | 3 +++ lib/manager/batect/index.ts | 3 +++ lib/manager/bazel/index.ts | 11 ++++++++++ lib/manager/bitbucket-pipelines/index.ts | 3 +++ lib/manager/buildkite/index.ts | 3 +++ lib/manager/bundler/index.ts | 3 +++ lib/manager/cake/index.ts | 2 ++ lib/manager/cargo/index.ts | 3 +++ lib/manager/cdnurl/index.ts | 3 +++ lib/manager/circleci/index.ts | 4 ++++ lib/manager/cloudbuild/index.ts | 3 +++ lib/manager/cocoapods/index.ts | 11 ++++++++++ lib/manager/composer/index.ts | 7 ++++++ lib/manager/deps-edn/index.ts | 3 +++ lib/manager/docker-compose/index.ts | 3 +++ lib/manager/dockerfile/index.ts | 3 +++ lib/manager/droneci/index.ts | 3 +++ lib/manager/git-submodules/index.ts | 3 +++ lib/manager/github-actions/index.ts | 10 +++++++-- lib/manager/gitlabci-include/index.ts | 3 +++ lib/manager/gitlabci/index.ts | 3 +++ lib/manager/gomod/index.ts | 3 +++ lib/manager/gradle-wrapper/index.ts | 3 +++ lib/manager/gradle/index.ts | 3 +++ lib/manager/helm-requirements/index.ts | 3 +++ lib/manager/helm-values/index.ts | 3 +++ lib/manager/helmfile/index.ts | 3 +++ lib/manager/helmsman/index.ts | 3 +++ lib/manager/helmv3/index.ts | 4 ++++ lib/manager/homebrew/index.ts | 3 +++ lib/manager/html/index.ts | 3 +++ lib/manager/index.spec.ts | 25 ++++++++++++++++++++++ lib/manager/jenkins/index.ts | 3 +++ lib/manager/jsonnet-bundler/index.ts | 2 ++ lib/manager/kubernetes/index.ts | 3 +++ lib/manager/kustomize/index.ts | 11 ++++++++++ lib/manager/leiningen/index.ts | 3 +++ lib/manager/maven/index.ts | 3 +++ lib/manager/meteor/index.ts | 3 +++ lib/manager/mix/index.ts | 3 +++ lib/manager/nodenv/index.ts | 3 +++ lib/manager/npm/index.ts | 4 ++++ lib/manager/nuget/index.ts | 3 +++ lib/manager/nvm/index.ts | 3 +++ lib/manager/pip-compile/index.ts | 3 +++ lib/manager/pip_requirements/index.ts | 3 +++ lib/manager/pip_setup/index.ts | 3 +++ lib/manager/pipenv/index.ts | 3 +++ lib/manager/poetry/index.ts | 3 +++ lib/manager/pre-commit/index.ts | 4 ++++ lib/manager/pub/index.ts | 3 +++ lib/manager/pyenv/index.ts | 3 +++ lib/manager/regex/index.ts | 2 ++ lib/manager/regex/readme.md | 3 ++- lib/manager/ruby-version/index.ts | 3 +++ lib/manager/sbt/index.ts | 9 ++++++++ lib/manager/setup-cfg/index.ts | 3 +++ lib/manager/swift/index.ts | 3 +++ lib/manager/terraform-version/index.ts | 3 +++ lib/manager/terraform/index.ts | 15 +++++++++++++ lib/manager/terragrunt-version/index.ts | 3 +++ lib/manager/terragrunt/index.ts | 9 ++++++++ lib/manager/travis/index.ts | 3 +++ lib/manager/types.ts | 2 ++ tools/docs/manager.ts | 11 ++++++++-- 73 files changed, 305 insertions(+), 17 deletions(-) diff --git a/lib/manager/ansible-galaxy/extract.spec.ts b/lib/manager/ansible-galaxy/extract.spec.ts index 1e2b80d0a6..c445492aa2 100644 --- a/lib/manager/ansible-galaxy/extract.spec.ts +++ b/lib/manager/ansible-galaxy/extract.spec.ts @@ -1,5 +1,5 @@ import { loadFixture } from '../../../test/util'; -import extractPackageFile, { getSliceEndNumber } from './extract'; +import { extractPackageFile, getSliceEndNumber } from './extract'; const yamlFile1 = loadFixture('requirements01.yml'); const yamlFile2 = loadFixture('requirements02.yml'); diff --git a/lib/manager/ansible-galaxy/extract.ts b/lib/manager/ansible-galaxy/extract.ts index b1ac37cc44..8ce428608f 100644 --- a/lib/manager/ansible-galaxy/extract.ts +++ b/lib/manager/ansible-galaxy/extract.ts @@ -22,7 +22,7 @@ export function getSliceEndNumber( return nearestEnd; } -export default function extractPackageFile( +export function extractPackageFile( content: string, fileName: string ): PackageFile | null { diff --git a/lib/manager/ansible-galaxy/index.ts b/lib/manager/ansible-galaxy/index.ts index ffde8df477..fc92ebe669 100644 --- a/lib/manager/ansible-galaxy/index.ts +++ b/lib/manager/ansible-galaxy/index.ts @@ -1,7 +1,15 @@ -import extractPackageFile from './extract'; +import { GalaxyCollectionDatasource } from '../../datasource/galaxy-collection'; +import { GitTagsDatasource } from '../../datasource/git-tags'; +import * as datasourceGithubTags from '../../datasource/github-tags'; -export { extractPackageFile }; +export { extractPackageFile } from './extract'; export const defaultConfig = { fileMatch: ['(^|/)requirements\\.ya?ml$', '(^|/)galaxy\\.ya?ml$'], }; + +export const supportedDatasources = [ + GalaxyCollectionDatasource.id, + GitTagsDatasource.id, + datasourceGithubTags.id, +]; diff --git a/lib/manager/ansible/extract.spec.ts b/lib/manager/ansible/extract.spec.ts index f7217a3500..aedbcc2c1e 100644 --- a/lib/manager/ansible/extract.spec.ts +++ b/lib/manager/ansible/extract.spec.ts @@ -1,5 +1,5 @@ import { loadFixture } from '../../../test/util'; -import extractPackageFile from './extract'; +import { extractPackageFile } from './extract'; const yamlFile1 = loadFixture('main1.yaml'); const yamlFile2 = loadFixture('main2.yaml'); diff --git a/lib/manager/ansible/extract.ts b/lib/manager/ansible/extract.ts index 4ee13ef36f..740921fbc6 100644 --- a/lib/manager/ansible/extract.ts +++ b/lib/manager/ansible/extract.ts @@ -4,9 +4,7 @@ import * as dockerVersioning from '../../versioning/docker'; import { getDep } from '../dockerfile/extract'; import type { PackageDependency, PackageFile } from '../types'; -export default function extractPackageFile( - content: string -): PackageFile | null { +export function extractPackageFile(content: string): PackageFile | null { logger.trace('ansible.extractPackageFile()'); let deps: PackageDependency[] = []; const re = regEx(/^\s*image:\s*'?"?([^\s'"]+)'?"?\s*$/); diff --git a/lib/manager/ansible/index.ts b/lib/manager/ansible/index.ts index 0af8b33e33..cbe22b4501 100644 --- a/lib/manager/ansible/index.ts +++ b/lib/manager/ansible/index.ts @@ -1,10 +1,11 @@ import { ProgrammingLanguage } from '../../constants'; -import extractPackageFile from './extract'; +import * as datasourceDocker from '../../datasource/docker'; +export { extractPackageFile } from './extract'; -const language = ProgrammingLanguage.Docker; - -export { extractPackageFile, language }; +export const language = ProgrammingLanguage.Docker; export const defaultConfig = { fileMatch: ['(^|/)tasks/[^/]+\\.ya?ml$'], }; + +export const supportedDatasources = [datasourceDocker.id]; diff --git a/lib/manager/argocd/index.ts b/lib/manager/argocd/index.ts index 1012c71468..a02db98b72 100644 --- a/lib/manager/argocd/index.ts +++ b/lib/manager/argocd/index.ts @@ -1,5 +1,9 @@ +import { GitTagsDatasource } from '../../datasource/git-tags'; +import { HelmDatasource } from '../../datasource/helm'; export { extractPackageFile } from './extract'; export const defaultConfig = { fileMatch: [], }; + +export const supportedDatasources = [GitTagsDatasource.id, HelmDatasource.id]; diff --git a/lib/manager/azure-pipelines/index.ts b/lib/manager/azure-pipelines/index.ts index adbfba940a..bf14289b54 100644 --- a/lib/manager/azure-pipelines/index.ts +++ b/lib/manager/azure-pipelines/index.ts @@ -1,5 +1,8 @@ +import { GitTagsDatasource } from '../../datasource/git-tags'; export { extractPackageFile } from './extract'; export const defaultConfig = { fileMatch: ['azure.*pipelines?.*\\.ya?ml$'], }; + +export const supportedDatasources = [GitTagsDatasource.id]; diff --git a/lib/manager/batect-wrapper/index.ts b/lib/manager/batect-wrapper/index.ts index 3c3359a888..dcaa1c1e63 100644 --- a/lib/manager/batect-wrapper/index.ts +++ b/lib/manager/batect-wrapper/index.ts @@ -1,3 +1,4 @@ +import { id as githubReleaseDatasource } from '../../datasource/github-releases'; import { id as versioning } from '../../versioning/semver'; export { extractPackageFile } from './extract'; @@ -7,3 +8,5 @@ export const defaultConfig = { fileMatch: ['(^|/)batect$'], versioning, }; + +export const supportedDatasources = [githubReleaseDatasource]; diff --git a/lib/manager/batect/index.ts b/lib/manager/batect/index.ts index 708f939219..b8fd77a5e8 100644 --- a/lib/manager/batect/index.ts +++ b/lib/manager/batect/index.ts @@ -1,3 +1,4 @@ +import { GitTagsDatasource } from '../../datasource/git-tags'; import { extractAllPackageFiles, extractPackageFile } from './extract'; export { extractAllPackageFiles, extractPackageFile }; @@ -5,3 +6,5 @@ export { extractAllPackageFiles, extractPackageFile }; export const defaultConfig = { fileMatch: ['(^|/)batect(-bundle)?\\.yml$'], }; + +export const supportedDatasources = [GitTagsDatasource.id]; diff --git a/lib/manager/bazel/index.ts b/lib/manager/bazel/index.ts index 61b6798640..b487be7da6 100644 --- a/lib/manager/bazel/index.ts +++ b/lib/manager/bazel/index.ts @@ -1,3 +1,7 @@ +import * as datasourceDocker from '../../datasource/docker'; +import * as datasourceGithubReleases from '../../datasource/github-releases'; +import * as datasourceGithubTags from '../../datasource/github-tags'; +import * as datasourceGo from '../../datasource/go'; import { extractPackageFile } from './extract'; import { updateDependency } from './update'; @@ -6,3 +10,10 @@ export { extractPackageFile, updateDependency }; export const defaultConfig = { fileMatch: ['(^|/)WORKSPACE(|\\.bazel)$', '\\.bzl$'], }; + +export const supportedDatasources = [ + datasourceDocker.id, + datasourceGithubReleases.id, + datasourceGithubTags.id, + datasourceGo.id, +]; diff --git a/lib/manager/bitbucket-pipelines/index.ts b/lib/manager/bitbucket-pipelines/index.ts index acf2524bd4..a51d837bc5 100644 --- a/lib/manager/bitbucket-pipelines/index.ts +++ b/lib/manager/bitbucket-pipelines/index.ts @@ -1,3 +1,4 @@ +import * as datasourceDocker from '../../datasource/docker'; import { extractPackageFile } from './extract'; export { extractPackageFile }; @@ -5,3 +6,5 @@ export { extractPackageFile }; export const defaultConfig = { fileMatch: ['(^|/)\\.?bitbucket-pipelines\\.ya?ml$'], }; + +export const supportedDatasources = [datasourceDocker.id]; diff --git a/lib/manager/buildkite/index.ts b/lib/manager/buildkite/index.ts index d678d7fd3c..3350b60ce6 100644 --- a/lib/manager/buildkite/index.ts +++ b/lib/manager/buildkite/index.ts @@ -1,3 +1,4 @@ +import * as datasourceGithubTags from '../../datasource/github-tags'; import { extractPackageFile } from './extract'; export { extractPackageFile }; @@ -8,3 +9,5 @@ export const defaultConfig = { commitMessageExtra: 'to {{#if isMajor}}v{{{newMajor}}}{{else}}{{{newValue}}}{{/if}}', }; + +export const supportedDatasources = [datasourceGithubTags.id]; diff --git a/lib/manager/bundler/index.ts b/lib/manager/bundler/index.ts index 3ef026f8b7..310e0f63ec 100644 --- a/lib/manager/bundler/index.ts +++ b/lib/manager/bundler/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import { RubyGemsDatasource } from '../../datasource/rubygems'; import * as rubyVersioning from '../../versioning/ruby'; import { updateArtifacts } from './artifacts'; import { extractPackageFile } from './extract'; @@ -25,3 +26,5 @@ export const defaultConfig = { fileMatch: ['(^|/)Gemfile$'], versioning: rubyVersioning.id, }; + +export const supportedDatasources = [RubyGemsDatasource.id]; diff --git a/lib/manager/cake/index.ts b/lib/manager/cake/index.ts index 5d2a05166c..68e0d1d3dc 100644 --- a/lib/manager/cake/index.ts +++ b/lib/manager/cake/index.ts @@ -69,3 +69,5 @@ export function extractPackageFile(content: string): PackageFile { } return { deps }; } + +export const supportedDatasources = [datasource]; diff --git a/lib/manager/cargo/index.ts b/lib/manager/cargo/index.ts index 37f2b4bd7c..b308ca9227 100644 --- a/lib/manager/cargo/index.ts +++ b/lib/manager/cargo/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import { CrateDatasource } from '../../datasource/crate'; import * as cargoVersioning from '../../versioning/cargo'; import { updateArtifacts } from './artifacts'; import { extractPackageFile } from './extract'; @@ -14,3 +15,5 @@ export const defaultConfig = { versioning: cargoVersioning.id, rangeStrategy: 'bump', }; + +export const supportedDatasources = [CrateDatasource.id]; diff --git a/lib/manager/cdnurl/index.ts b/lib/manager/cdnurl/index.ts index edf2106e65..5480906fbf 100644 --- a/lib/manager/cdnurl/index.ts +++ b/lib/manager/cdnurl/index.ts @@ -1,3 +1,4 @@ +import { CdnJsDatasource } from '../../datasource/cdnjs'; import * as semverVersioning from '../../versioning/semver'; import { extractPackageFile } from './extract'; @@ -7,3 +8,5 @@ export const defaultConfig = { fileMatch: [], versioning: semverVersioning.id, }; + +export const supportedDatasources = [CdnJsDatasource.id]; diff --git a/lib/manager/circleci/index.ts b/lib/manager/circleci/index.ts index afef6591c1..705099e16d 100644 --- a/lib/manager/circleci/index.ts +++ b/lib/manager/circleci/index.ts @@ -1,3 +1,5 @@ +import * as datasourceDocker from '../../datasource/docker'; +import { OrbDatasource } from '../../datasource/orb'; import { extractPackageFile } from './extract'; export { extractPackageFile }; @@ -5,3 +7,5 @@ export { extractPackageFile }; export const defaultConfig = { fileMatch: ['(^|/).circleci/config.yml$'], }; + +export const supportedDatasources = [datasourceDocker.id, OrbDatasource.id]; diff --git a/lib/manager/cloudbuild/index.ts b/lib/manager/cloudbuild/index.ts index 3b96731222..cb4dc10014 100644 --- a/lib/manager/cloudbuild/index.ts +++ b/lib/manager/cloudbuild/index.ts @@ -1,3 +1,4 @@ +import * as datasourceDocker from '../../datasource/docker'; import { extractPackageFile } from './extract'; export { extractPackageFile }; @@ -5,3 +6,5 @@ export { extractPackageFile }; export const defaultConfig = { fileMatch: ['(^|/)cloudbuild.ya?ml'], }; + +export const supportedDatasources = [datasourceDocker.id]; diff --git a/lib/manager/cocoapods/index.ts b/lib/manager/cocoapods/index.ts index 783738d2bc..48284b915f 100644 --- a/lib/manager/cocoapods/index.ts +++ b/lib/manager/cocoapods/index.ts @@ -1,3 +1,7 @@ +import { GitTagsDatasource } from '../../datasource/git-tags'; +import * as datasourceGithubTags from '../../datasource/github-tags'; +import * as datasourceGitlabTags from '../../datasource/gitlab-tags'; +import * as datasourcePod from '../../datasource/pod'; import * as rubyVersioning from '../../versioning/ruby'; export { extractPackageFile } from './extract'; @@ -7,3 +11,10 @@ export const defaultConfig = { fileMatch: ['(^|/)Podfile$'], versioning: rubyVersioning.id, }; + +export const supportedDatasources = [ + GitTagsDatasource.id, + datasourceGithubTags.id, + datasourceGitlabTags.id, + datasourcePod.id, +]; diff --git a/lib/manager/composer/index.ts b/lib/manager/composer/index.ts index 2a6f551852..5295d55db7 100644 --- a/lib/manager/composer/index.ts +++ b/lib/manager/composer/index.ts @@ -1,4 +1,6 @@ import { ProgrammingLanguage } from '../../constants'; +import { GitTagsDatasource } from '../../datasource/git-tags'; +import * as datasourcePackagist from '../../datasource/packagist'; import { updateArtifacts } from './artifacts'; import { extractPackageFile } from './extract'; import { getRangeStrategy } from './range'; @@ -20,3 +22,8 @@ export const defaultConfig = { fileMatch: ['(^|/)([\\w-]*)composer.json$'], versioning: composerVersioningId, }; + +export const supportedDatasources = [ + GitTagsDatasource.id, + datasourcePackagist.id, +]; diff --git a/lib/manager/deps-edn/index.ts b/lib/manager/deps-edn/index.ts index 25df409449..599293213a 100644 --- a/lib/manager/deps-edn/index.ts +++ b/lib/manager/deps-edn/index.ts @@ -1,3 +1,4 @@ +import { ClojureDatasource } from '../../datasource/clojure'; import * as mavenVersioning from '../../versioning/maven'; import { extractPackageFile } from './extract'; @@ -7,3 +8,5 @@ export const defaultConfig = { fileMatch: ['(^|/)deps\\.edn$'], versioning: mavenVersioning.id, }; + +export const supportedDatasources = [ClojureDatasource.id]; diff --git a/lib/manager/docker-compose/index.ts b/lib/manager/docker-compose/index.ts index d89cad0cf0..d2314c5b64 100644 --- a/lib/manager/docker-compose/index.ts +++ b/lib/manager/docker-compose/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceDocker from '../../datasource/docker'; import { extractPackageFile } from './extract'; const language = ProgrammingLanguage.Docker; @@ -8,3 +9,5 @@ export { extractPackageFile, language }; export const defaultConfig = { fileMatch: ['(^|/)docker-compose[^/]*\\.ya?ml$'], }; + +export const supportedDatasources = [datasourceDocker.id]; diff --git a/lib/manager/dockerfile/index.ts b/lib/manager/dockerfile/index.ts index b9b8ed54f9..7ebec5c877 100644 --- a/lib/manager/dockerfile/index.ts +++ b/lib/manager/dockerfile/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceDocker from '../../datasource/docker'; import { extractPackageFile } from './extract'; const language = ProgrammingLanguage.Docker; @@ -8,3 +9,5 @@ export { extractPackageFile, language }; export const defaultConfig = { fileMatch: ['(^|/|\\.)Dockerfile$', '(^|/)Dockerfile\\.[^/]*$'], }; + +export const supportedDatasources = [datasourceDocker.id]; diff --git a/lib/manager/droneci/index.ts b/lib/manager/droneci/index.ts index 8bf495e68b..a46b91d3f3 100644 --- a/lib/manager/droneci/index.ts +++ b/lib/manager/droneci/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceDocker from '../../datasource/docker'; import { extractPackageFile } from './extract'; const language = ProgrammingLanguage.Docker; @@ -8,3 +9,5 @@ export { extractPackageFile, language }; export const defaultConfig = { fileMatch: ['(^|/).drone.yml$'], }; + +export const supportedDatasources = [datasourceDocker.id]; diff --git a/lib/manager/git-submodules/index.ts b/lib/manager/git-submodules/index.ts index 22dde889ee..a420292c7c 100644 --- a/lib/manager/git-submodules/index.ts +++ b/lib/manager/git-submodules/index.ts @@ -1,3 +1,4 @@ +import { GitRefsDatasource } from '../../datasource/git-refs'; import * as gitVersioning from '../../versioning/git'; export { default as extractPackageFile } from './extract'; @@ -9,3 +10,5 @@ export const defaultConfig = { versioning: gitVersioning.id, fileMatch: ['(^|/).gitmodules$'], }; + +export const supportedDatasources = [GitRefsDatasource.id]; diff --git a/lib/manager/github-actions/index.ts b/lib/manager/github-actions/index.ts index 7899690d2b..5d39f85406 100644 --- a/lib/manager/github-actions/index.ts +++ b/lib/manager/github-actions/index.ts @@ -1,6 +1,7 @@ -import { extractPackageFile } from './extract'; +import * as githubTagsDatasource from '../../datasource/github-tags'; +import * as dockerVersioning from '../../versioning/docker'; -export { extractPackageFile }; +export { extractPackageFile } from './extract'; export const defaultConfig = { fileMatch: [ @@ -8,3 +9,8 @@ export const defaultConfig = { '(^|\\/)action\\.ya?ml$', ], }; + +export const supportedDatasources = [ + githubTagsDatasource.id, + dockerVersioning.id, +]; diff --git a/lib/manager/gitlabci-include/index.ts b/lib/manager/gitlabci-include/index.ts index 9fa1f4d99f..77119f696a 100644 --- a/lib/manager/gitlabci-include/index.ts +++ b/lib/manager/gitlabci-include/index.ts @@ -1,3 +1,4 @@ +import * as datasourceGitlabTags from '../../datasource/gitlab-tags'; import { extractPackageFile } from './extract'; export { extractPackageFile }; @@ -5,3 +6,5 @@ export { extractPackageFile }; export const defaultConfig = { fileMatch: ['\\.gitlab-ci\\.yml$'], }; + +export const supportedDatasources = [datasourceGitlabTags.id]; diff --git a/lib/manager/gitlabci/index.ts b/lib/manager/gitlabci/index.ts index 44f7928318..802c5072bb 100644 --- a/lib/manager/gitlabci/index.ts +++ b/lib/manager/gitlabci/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceDocker from '../../datasource/docker'; import { extractAllPackageFiles, extractPackageFile } from './extract'; const language = ProgrammingLanguage.Docker; @@ -8,3 +9,5 @@ export { extractAllPackageFiles, extractPackageFile, language }; export const defaultConfig = { fileMatch: ['\\.gitlab-ci\\.yml$'], }; + +export const supportedDatasources = [datasourceDocker.id]; diff --git a/lib/manager/gomod/index.ts b/lib/manager/gomod/index.ts index f5283a240d..979f955d89 100644 --- a/lib/manager/gomod/index.ts +++ b/lib/manager/gomod/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceGo from '../../datasource/go'; import { updateArtifacts } from './artifacts'; import { extractPackageFile } from './extract'; import { updateDependency } from './update'; @@ -9,3 +10,5 @@ export { extractPackageFile, updateDependency, updateArtifacts }; export const defaultConfig = { fileMatch: ['(^|/)go.mod$'], }; + +export const supportedDatasources = [datasourceGo.id]; diff --git a/lib/manager/gradle-wrapper/index.ts b/lib/manager/gradle-wrapper/index.ts index f65174938d..f3b90c2237 100644 --- a/lib/manager/gradle-wrapper/index.ts +++ b/lib/manager/gradle-wrapper/index.ts @@ -1,3 +1,4 @@ +import { GradleVersionDatasource } from '../../datasource/gradle-version'; import { id as versioning } from '../../versioning/gradle'; export { extractPackageFile } from './extract'; @@ -7,3 +8,5 @@ export const defaultConfig = { fileMatch: ['(^|/)gradle/wrapper/gradle-wrapper.properties$'], versioning, }; + +export const supportedDatasources = [GradleVersionDatasource.id]; diff --git a/lib/manager/gradle/index.ts b/lib/manager/gradle/index.ts index b3ff818c5e..2dd67902e1 100644 --- a/lib/manager/gradle/index.ts +++ b/lib/manager/gradle/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceMaven from '../../datasource/maven'; import * as gradleVersioning from '../../versioning/gradle'; import type { ExtractConfig, @@ -38,3 +39,5 @@ export const defaultConfig = { timeout: 600, versioning: gradleVersioning.id, }; + +export const supportedDatasources = [datasourceMaven.id]; diff --git a/lib/manager/helm-requirements/index.ts b/lib/manager/helm-requirements/index.ts index e8cf05e2bf..186ec412d9 100644 --- a/lib/manager/helm-requirements/index.ts +++ b/lib/manager/helm-requirements/index.ts @@ -1,3 +1,4 @@ +import { HelmDatasource } from '../../datasource/helm'; export { extractPackageFile } from './extract'; export const defaultConfig = { @@ -7,3 +8,5 @@ export const defaultConfig = { commitMessageTopic: 'helm chart {{depName}}', fileMatch: ['(^|/)requirements\\.yaml$'], }; + +export const supportedDatasources = [HelmDatasource.id]; diff --git a/lib/manager/helm-values/index.ts b/lib/manager/helm-values/index.ts index 1ef75d2873..2e26725500 100644 --- a/lib/manager/helm-values/index.ts +++ b/lib/manager/helm-values/index.ts @@ -1,3 +1,4 @@ +import * as datasourceDocker from '../../datasource/docker'; export { extractPackageFile } from './extract'; export const defaultConfig = { @@ -5,3 +6,5 @@ export const defaultConfig = { fileMatch: ['(^|/)values.yaml$'], pinDigests: false, }; + +export const supportedDatasources = [datasourceDocker.id]; diff --git a/lib/manager/helmfile/index.ts b/lib/manager/helmfile/index.ts index d8d3e54196..915cbcf5b0 100644 --- a/lib/manager/helmfile/index.ts +++ b/lib/manager/helmfile/index.ts @@ -1,3 +1,4 @@ +import { HelmDatasource } from '../../datasource/helm'; export { extractPackageFile } from './extract'; export const defaultConfig = { @@ -7,3 +8,5 @@ export const defaultConfig = { commitMessageTopic: 'helm chart {{depName}}', fileMatch: ['(^|/)helmfile.yaml$'], }; + +export const supportedDatasources = [HelmDatasource.id]; diff --git a/lib/manager/helmsman/index.ts b/lib/manager/helmsman/index.ts index 1012c71468..9f0cf9c133 100644 --- a/lib/manager/helmsman/index.ts +++ b/lib/manager/helmsman/index.ts @@ -1,5 +1,8 @@ +import { HelmDatasource } from '../../datasource/helm'; export { extractPackageFile } from './extract'; export const defaultConfig = { fileMatch: [], }; + +export const supportedDatasources = [HelmDatasource.id]; diff --git a/lib/manager/helmv3/index.ts b/lib/manager/helmv3/index.ts index 21a0ccd14f..de5feaa373 100644 --- a/lib/manager/helmv3/index.ts +++ b/lib/manager/helmv3/index.ts @@ -1,3 +1,5 @@ +import * as datasourceDocker from '../../datasource/docker'; +import { HelmDatasource } from '../../datasource/helm'; export { updateArtifacts } from './artifacts'; export { extractPackageFile } from './extract'; export { bumpPackageVersion } from './update'; @@ -11,3 +13,5 @@ export const defaultConfig = { commitMessageTopic: 'helm chart {{depName}}', fileMatch: ['(^|/)Chart.yaml$'], }; + +export const supportedDatasources = [datasourceDocker.id, HelmDatasource.id]; diff --git a/lib/manager/homebrew/index.ts b/lib/manager/homebrew/index.ts index b45e932cf7..f41a1a8406 100644 --- a/lib/manager/homebrew/index.ts +++ b/lib/manager/homebrew/index.ts @@ -1,3 +1,4 @@ +import * as datasourceGithubTags from '../../datasource/github-tags'; export { extractPackageFile } from './extract'; export { updateDependency } from './update'; @@ -5,3 +6,5 @@ export const defaultConfig = { commitMessageTopic: 'Homebrew Formula {{depName}}', fileMatch: ['^Formula/[^/]+[.]rb$'], }; + +export const supportedDatasources = [datasourceGithubTags.id]; diff --git a/lib/manager/html/index.ts b/lib/manager/html/index.ts index 5b19123f0f..c196d4af86 100644 --- a/lib/manager/html/index.ts +++ b/lib/manager/html/index.ts @@ -1,3 +1,4 @@ +import { CdnJsDatasource } from '../../datasource/cdnjs'; import * as semverVersioning from '../../versioning/semver'; import { extractPackageFile } from './extract'; @@ -11,3 +12,5 @@ export const defaultConfig = { }, pinDigests: false, }; + +export const supportedDatasources = [CdnJsDatasource.id]; diff --git a/lib/manager/index.spec.ts b/lib/manager/index.spec.ts index 53da1cc527..009979be19 100644 --- a/lib/manager/index.spec.ts +++ b/lib/manager/index.spec.ts @@ -1,10 +1,28 @@ +import { getDatasourceList } from '../datasource'; import { loadModules } from '../util/modules'; import type { ManagerApi } from './types'; import * as manager from '.'; jest.mock('../util/fs'); +const datasources = getDatasourceList(); + describe('manager/index', () => { + describe('supportedDatasources', () => { + for (const m of manager.getManagerList()) { + if (m === 'regex') { + // regex supports any + continue; + } + const supportedDatasources = manager.get(m, 'supportedDatasources'); + it(`has valid supportedDatasources for ${m}`, () => { + expect(supportedDatasources).toBeNonEmptyArray(); + supportedDatasources.every((d) => { + expect(datasources.includes(d)).toBeTrue(); + }); + }); + } + }); describe('get()', () => { it('gets something', () => { expect(manager.get('dockerfile', 'extractPackageFile')).not.toBeNull(); @@ -55,6 +73,7 @@ describe('manager/index', () => { it('returns null', async () => { manager.getManagers().set('dummy', { defaultConfig: {}, + supportedDatasources: [], }); expect( await manager.extractAllPackageFiles('unknown', {} as any, []) @@ -66,6 +85,7 @@ describe('manager/index', () => { it('returns non-null', async () => { manager.getManagers().set('dummy', { defaultConfig: {}, + supportedDatasources: [], extractAllPackageFiles: () => Promise.resolve([]), }); expect( @@ -81,6 +101,7 @@ describe('manager/index', () => { it('returns null', () => { manager.getManagers().set('dummy', { defaultConfig: {}, + supportedDatasources: [], }); expect(manager.extractPackageFile('unknown', null)).toBeNull(); expect(manager.extractPackageFile('dummy', null)).toBeNull(); @@ -88,6 +109,7 @@ describe('manager/index', () => { it('returns non-null', () => { manager.getManagers().set('dummy', { defaultConfig: {}, + supportedDatasources: [], extractPackageFile: () => Promise.resolve({ deps: [] }), }); @@ -102,6 +124,7 @@ describe('manager/index', () => { it('returns null', () => { manager.getManagers().set('dummy', { defaultConfig: {}, + supportedDatasources: [], }); expect( manager.getRangeStrategy({ manager: 'unknown', rangeStrategy: 'auto' }) @@ -110,6 +133,7 @@ describe('manager/index', () => { it('returns non-null', () => { manager.getManagers().set('dummy', { defaultConfig: {}, + supportedDatasources: [], getRangeStrategy: () => 'replace', }); expect( @@ -118,6 +142,7 @@ describe('manager/index', () => { manager.getManagers().set('dummy', { defaultConfig: {}, + supportedDatasources: [], }); expect( manager.getRangeStrategy({ manager: 'dummy', rangeStrategy: 'auto' }) diff --git a/lib/manager/jenkins/index.ts b/lib/manager/jenkins/index.ts index 6b8b845d29..afe5c64994 100644 --- a/lib/manager/jenkins/index.ts +++ b/lib/manager/jenkins/index.ts @@ -1,5 +1,8 @@ +import { JenkinsPluginsDatasource } from '../../datasource/jenkins-plugins'; export { extractPackageFile } from './extract'; export const defaultConfig = { fileMatch: ['(^|/)plugins\\.(txt|ya?ml)$'], }; + +export const supportedDatasources = [JenkinsPluginsDatasource.id]; diff --git a/lib/manager/jsonnet-bundler/index.ts b/lib/manager/jsonnet-bundler/index.ts index aa3fd5480c..df3ddd9a4d 100644 --- a/lib/manager/jsonnet-bundler/index.ts +++ b/lib/manager/jsonnet-bundler/index.ts @@ -8,3 +8,5 @@ export const defaultConfig = { fileMatch: ['(^|/)jsonnetfile.json$'], datasource: GitTagsDatasource.id, }; + +export const supportedDatasources = [GitTagsDatasource.id]; diff --git a/lib/manager/kubernetes/index.ts b/lib/manager/kubernetes/index.ts index bc2ce7d3bb..053562ef18 100644 --- a/lib/manager/kubernetes/index.ts +++ b/lib/manager/kubernetes/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceDocker from '../../datasource/docker'; export { extractPackageFile } from './extract'; @@ -7,3 +8,5 @@ export const language = ProgrammingLanguage.Docker; export const defaultConfig = { fileMatch: [], }; + +export const supportedDatasources = [datasourceDocker.id]; diff --git a/lib/manager/kustomize/index.ts b/lib/manager/kustomize/index.ts index d28c8186e0..c3ac88cd6e 100644 --- a/lib/manager/kustomize/index.ts +++ b/lib/manager/kustomize/index.ts @@ -1,6 +1,17 @@ +import * as datasourceDocker from '../../datasource/docker'; +import { GitTagsDatasource } from '../../datasource/git-tags'; +import * as datasourceGitHubTags from '../../datasource/github-tags'; +import { HelmDatasource } from '../../datasource/helm'; export { extractPackageFile } from './extract'; export const defaultConfig = { fileMatch: ['(^|/)kustomization\\.yaml'], pinDigests: false, }; + +export const supportedDatasources = [ + datasourceDocker.id, + GitTagsDatasource.id, + datasourceGitHubTags.id, + HelmDatasource.id, +]; diff --git a/lib/manager/leiningen/index.ts b/lib/manager/leiningen/index.ts index f501592d2c..831fa32857 100644 --- a/lib/manager/leiningen/index.ts +++ b/lib/manager/leiningen/index.ts @@ -1,3 +1,4 @@ +import { ClojureDatasource } from '../../datasource/clojure'; import * as mavenVersioning from '../../versioning/maven'; export { extractPackageFile } from './extract'; @@ -6,3 +7,5 @@ export const defaultConfig = { fileMatch: ['(^|/)project\\.clj$'], versioning: mavenVersioning.id, }; + +export const supportedDatasources = [ClojureDatasource.id]; diff --git a/lib/manager/maven/index.ts b/lib/manager/maven/index.ts index 3c6c02bfe1..b53ff32133 100644 --- a/lib/manager/maven/index.ts +++ b/lib/manager/maven/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceMaven from '../../datasource/maven'; import * as mavenVersioning from '../../versioning/maven'; export { extractAllPackageFiles } from './extract'; @@ -10,3 +11,5 @@ export const defaultConfig = { fileMatch: ['\\.pom\\.xml$', '(^|/)pom\\.xml$'], versioning: mavenVersioning.id, }; + +export const supportedDatasources = [datasourceMaven.id]; diff --git a/lib/manager/meteor/index.ts b/lib/manager/meteor/index.ts index 81f312736e..63a1000f81 100644 --- a/lib/manager/meteor/index.ts +++ b/lib/manager/meteor/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import { id as npmId } from '../../datasource/npm'; export { extractPackageFile } from './extract'; @@ -7,3 +8,5 @@ export const language = ProgrammingLanguage.JavaScript; export const defaultConfig = { fileMatch: ['(^|/)package.js$'], }; + +export const supportedDatasources = [npmId]; diff --git a/lib/manager/mix/index.ts b/lib/manager/mix/index.ts index ca250c6fe9..fc2ce8347a 100644 --- a/lib/manager/mix/index.ts +++ b/lib/manager/mix/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import { HexDatasource } from '../../datasource/hex'; import * as hexVersioning from '../../versioning/hex'; export { extractPackageFile } from './extract'; @@ -10,3 +11,5 @@ export const defaultConfig = { fileMatch: ['(^|/)mix\\.exs$'], versioning: hexVersioning.id, }; + +export const supportedDatasources = [HexDatasource.id]; diff --git a/lib/manager/nodenv/index.ts b/lib/manager/nodenv/index.ts index d25368b739..cf206a758f 100644 --- a/lib/manager/nodenv/index.ts +++ b/lib/manager/nodenv/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceGithubTags from '../../datasource/github-tags'; import * as nodeVersioning from '../../versioning/node'; export { extractPackageFile } from './extract'; @@ -9,3 +10,5 @@ export const defaultConfig = { fileMatch: ['(^|/).node-version$'], versioning: nodeVersioning.id, }; + +export const supportedDatasources = [datasourceGithubTags.id]; diff --git a/lib/manager/npm/index.ts b/lib/manager/npm/index.ts index 35286fb455..0d5bdbf49d 100644 --- a/lib/manager/npm/index.ts +++ b/lib/manager/npm/index.ts @@ -1,4 +1,6 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceGithubTags from '../../datasource/github-tags'; +import { id as npmId } from '../../datasource/npm'; import * as npmVersioning from '../../versioning/npm'; export { detectGlobalConfig } from './detect'; @@ -28,3 +30,5 @@ export const defaultConfig = { "[{{#if displayFrom}}`{{{displayFrom}}}` -> {{else}}{{#if currentValue}}`{{{currentValue}}}` -> {{/if}}{{/if}}{{#if displayTo}}`{{{displayTo}}}`{{else}}`{{{newValue}}}`{{/if}}]({{#if depName}}https://renovatebot.com/diffs/npm/{{replace '/' '%2f' depName}}/{{{currentVersion}}}/{{{newVersion}}}{{/if}})", }, }; + +export const supportedDatasources = [datasourceGithubTags.id, npmId]; diff --git a/lib/manager/nuget/index.ts b/lib/manager/nuget/index.ts index 35f8756468..0fbdfe63c4 100644 --- a/lib/manager/nuget/index.ts +++ b/lib/manager/nuget/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceNuget from '../../datasource/nuget'; export { extractPackageFile } from './extract'; export { updateArtifacts } from './artifacts'; @@ -13,3 +14,5 @@ export const defaultConfig = { '(^|\\/)global\\.json$', ], }; + +export const supportedDatasources = [datasourceNuget.id]; diff --git a/lib/manager/nvm/index.ts b/lib/manager/nvm/index.ts index 2bdae05167..337f088cac 100644 --- a/lib/manager/nvm/index.ts +++ b/lib/manager/nvm/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceGithubTags from '../../datasource/github-tags'; import * as nodeVersioning from '../../versioning/node'; export { extractPackageFile } from './extract'; @@ -10,3 +11,5 @@ export const defaultConfig = { versioning: nodeVersioning.id, pinDigests: false, }; + +export const supportedDatasources = [datasourceGithubTags.id]; diff --git a/lib/manager/pip-compile/index.ts b/lib/manager/pip-compile/index.ts index 99266a9dbe..0e9c061353 100644 --- a/lib/manager/pip-compile/index.ts +++ b/lib/manager/pip-compile/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import { PypiDatasource } from '../../datasource/pypi'; export { extractPackageFile } from '../pip_requirements/extract'; export { updateArtifacts } from './artifacts'; @@ -6,6 +7,8 @@ export { updateArtifacts } from './artifacts'; export const language = ProgrammingLanguage.Python; export const supportsLockFileMaintenance = true; +export const supportedDatasources = [PypiDatasource.id]; + export const defaultConfig = { fileMatch: [], lockFileMaintenance: { diff --git a/lib/manager/pip_requirements/index.ts b/lib/manager/pip_requirements/index.ts index 351c36b7d7..a2bf950ff2 100644 --- a/lib/manager/pip_requirements/index.ts +++ b/lib/manager/pip_requirements/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import { PypiDatasource } from '../../datasource/pypi'; export { updateArtifacts } from './artifacts'; export { extractPackageFile } from './extract'; @@ -9,3 +10,5 @@ export const language = ProgrammingLanguage.Python; export const defaultConfig = { fileMatch: ['(^|/)([\\w-]*)requirements\\.(txt|pip)$'], }; + +export const supportedDatasources = [PypiDatasource.id]; diff --git a/lib/manager/pip_setup/index.ts b/lib/manager/pip_setup/index.ts index 643123288b..9219cd5026 100644 --- a/lib/manager/pip_setup/index.ts +++ b/lib/manager/pip_setup/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import { PypiDatasource } from '../../datasource/pypi'; export { extractPackageFile } from './extract'; @@ -7,3 +8,5 @@ export const language = ProgrammingLanguage.Python; export const defaultConfig = { fileMatch: ['(^|/)setup.py$'], }; + +export const supportedDatasources = [PypiDatasource.id]; diff --git a/lib/manager/pipenv/index.ts b/lib/manager/pipenv/index.ts index 3f4726a362..acb2766bc3 100644 --- a/lib/manager/pipenv/index.ts +++ b/lib/manager/pipenv/index.ts @@ -1,4 +1,5 @@ import { ProgrammingLanguage } from '../../constants'; +import { PypiDatasource } from '../../datasource/pypi'; export { extractPackageFile } from './extract'; export { updateArtifacts } from './artifacts'; @@ -6,6 +7,8 @@ export { updateArtifacts } from './artifacts'; export const language = ProgrammingLanguage.Python; export const supportsLockFileMaintenance = true; +export const supportedDatasources = [PypiDatasource.id]; + export const defaultConfig = { fileMatch: ['(^|/)Pipfile$'], }; diff --git a/lib/manager/poetry/index.ts b/lib/manager/poetry/index.ts index 9ce8080082..3440d2cbaa 100644 --- a/lib/manager/poetry/index.ts +++ b/lib/manager/poetry/index.ts @@ -1,8 +1,11 @@ import { ProgrammingLanguage } from '../../constants'; +import { PypiDatasource } from '../../datasource/pypi'; export { extractPackageFile } from './extract'; export { updateArtifacts } from './artifacts'; +export const supportedDatasources = [PypiDatasource.id]; + export const language = ProgrammingLanguage.Python; export const supportsLockFileMaintenance = true; diff --git a/lib/manager/pre-commit/index.ts b/lib/manager/pre-commit/index.ts index f8d1af6668..e596a40816 100644 --- a/lib/manager/pre-commit/index.ts +++ b/lib/manager/pre-commit/index.ts @@ -1,5 +1,9 @@ +import { id as githubTagsId } from '../../datasource/github-tags'; +import { id as gitlabTagsId } from '../../datasource/gitlab-tags'; export { extractPackageFile } from './extract'; +export const supportedDatasources = [githubTagsId, gitlabTagsId]; + export const defaultConfig = { commitMessageTopic: 'pre-commit hook {{depName}}', enabled: false, diff --git a/lib/manager/pub/index.ts b/lib/manager/pub/index.ts index dcdceecd7f..1fde801f57 100644 --- a/lib/manager/pub/index.ts +++ b/lib/manager/pub/index.ts @@ -1,7 +1,10 @@ +import { DartDatasource } from '../../datasource/dart'; import * as npmVersioning from '../../versioning/npm'; export { extractPackageFile } from './extract'; +export const supportedDatasources = [DartDatasource.id]; + export const defaultConfig = { fileMatch: ['(^|/)pubspec\\.ya?ml$'], versioning: npmVersioning.id, diff --git a/lib/manager/pyenv/index.ts b/lib/manager/pyenv/index.ts index a569478bcb..3be9c1f583 100644 --- a/lib/manager/pyenv/index.ts +++ b/lib/manager/pyenv/index.ts @@ -1,10 +1,13 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceDocker from '../../datasource/docker'; import * as dockerVersioning from '../../versioning/docker'; export { extractPackageFile } from './extract'; export const language = ProgrammingLanguage.Python; +export const supportedDatasources = [datasourceDocker.id]; + export const defaultConfig = { fileMatch: ['(^|/).python-version$'], versioning: dockerVersioning.id, diff --git a/lib/manager/regex/index.ts b/lib/manager/regex/index.ts index 7557012ad6..0856607cff 100644 --- a/lib/manager/regex/index.ts +++ b/lib/manager/regex/index.ts @@ -11,6 +11,8 @@ export const defaultConfig = { pinDigests: false, }; +export const supportedDatasources = ['*']; + export function extractPackageFile( content: string, packageFile: string, diff --git a/lib/manager/regex/readme.md b/lib/manager/regex/readme.md index 71d5337bb0..75becb1c6f 100644 --- a/lib/manager/regex/readme.md +++ b/lib/manager/regex/readme.md @@ -3,7 +3,8 @@ The `regex` manager is designed to allow users to manually configure Renovate fo This manager is unique in Renovate in that: - It is configurable via regex named capture groups -- Through the use of the `regexManagers` config, multiple "regex managers" can be created for the same repository. +- Through the use of the `regexManagers` config, multiple "regex managers" can be created for the same repository +- It can extract any `datasource` ### Required Fields diff --git a/lib/manager/ruby-version/index.ts b/lib/manager/ruby-version/index.ts index dd4c721415..757ef8d800 100644 --- a/lib/manager/ruby-version/index.ts +++ b/lib/manager/ruby-version/index.ts @@ -1,8 +1,11 @@ import { ProgrammingLanguage } from '../../constants'; +import { RubyVersionDatasource } from '../../datasource/ruby-version'; import * as rubyVersioning from '../../versioning/ruby'; export { extractPackageFile } from './extract'; +export const supportedDatasources = [RubyVersionDatasource.id]; + export const language = ProgrammingLanguage.Ruby; export const defaultConfig = { diff --git a/lib/manager/sbt/index.ts b/lib/manager/sbt/index.ts index 017a1a8acb..e281179a86 100644 --- a/lib/manager/sbt/index.ts +++ b/lib/manager/sbt/index.ts @@ -1,8 +1,17 @@ +import * as datasourceMaven from '../../datasource/maven'; +import * as datasourceSbtPackage from '../../datasource/sbt-package'; +import * as datasourceSbtPlugin from '../../datasource/sbt-plugin'; import * as ivyVersioning from '../../versioning/ivy'; export { extractPackageFile } from './extract'; export { bumpPackageVersion } from './update'; +export const supportedDatasources = [ + datasourceMaven.id, + datasourceSbtPackage.id, + datasourceSbtPlugin.id, +]; + export const defaultConfig = { fileMatch: ['\\.sbt$', 'project/[^/]*.scala$'], versioning: ivyVersioning.id, diff --git a/lib/manager/setup-cfg/index.ts b/lib/manager/setup-cfg/index.ts index 270df5da4d..d954804eb5 100644 --- a/lib/manager/setup-cfg/index.ts +++ b/lib/manager/setup-cfg/index.ts @@ -1,9 +1,12 @@ import { ProgrammingLanguage } from '../../constants'; +import { PypiDatasource } from '../../datasource/pypi'; import { id as versioning } from '../../versioning/pep440'; export { extractPackageFile } from './extract'; export { getRangeStrategy } from './range'; +export const supportedDatasources = [PypiDatasource.id]; + export const language = ProgrammingLanguage.Python; export const defaultConfig = { diff --git a/lib/manager/swift/index.ts b/lib/manager/swift/index.ts index e9102b4cf2..4d5967e2f5 100644 --- a/lib/manager/swift/index.ts +++ b/lib/manager/swift/index.ts @@ -1,7 +1,10 @@ +import { GitTagsDatasource } from '../../datasource/git-tags'; import * as swiftVersioning from '../../versioning/swift'; export { extractPackageFile } from './extract'; +export const supportedDatasources = [GitTagsDatasource.id]; + export const defaultConfig = { fileMatch: ['(^|/)Package\\.swift'], versioning: swiftVersioning.id, diff --git a/lib/manager/terraform-version/index.ts b/lib/manager/terraform-version/index.ts index 9a55bdbd5c..718e39968c 100644 --- a/lib/manager/terraform-version/index.ts +++ b/lib/manager/terraform-version/index.ts @@ -1,7 +1,10 @@ +import * as datasourceGitHubRelease from '../../datasource/github-releases'; import * as hashicorpVersioning from '../../versioning/hashicorp'; export { extractPackageFile } from './extract'; +export const supportedDatasources = [datasourceGitHubRelease.id]; + export const defaultConfig = { fileMatch: ['(^|/)\\.terraform-version$'], versioning: hashicorpVersioning.id, diff --git a/lib/manager/terraform/index.ts b/lib/manager/terraform/index.ts index 17107d2b17..cea16def59 100644 --- a/lib/manager/terraform/index.ts +++ b/lib/manager/terraform/index.ts @@ -1,8 +1,23 @@ +import { BitBucketTagsDatasource } from '../../datasource/bitbucket-tags'; +import { GitTagsDatasource } from '../../datasource/git-tags'; +import * as datasourceGithubTags from '../../datasource/github-tags'; +import { HelmDatasource } from '../../datasource/helm'; +import { TerraformModuleDatasource } from '../../datasource/terraform-module'; +import { TerraformProviderDatasource } from '../../datasource/terraform-provider'; import * as hashicorpVersioning from '../../versioning/hashicorp'; export { updateArtifacts } from './lockfile'; export { extractPackageFile } from './extract'; +export const supportedDatasources = [ + BitBucketTagsDatasource.id, + GitTagsDatasource.id, + datasourceGithubTags.id, + HelmDatasource.id, + TerraformModuleDatasource.id, + TerraformProviderDatasource.id, +]; + export const supportsLockFileMaintenance = true; export const defaultConfig = { commitMessageTopic: diff --git a/lib/manager/terragrunt-version/index.ts b/lib/manager/terragrunt-version/index.ts index fe24c1f17b..1b6aa3b029 100644 --- a/lib/manager/terragrunt-version/index.ts +++ b/lib/manager/terragrunt-version/index.ts @@ -1,7 +1,10 @@ +import * as datasourceGitHubRelease from '../../datasource/github-releases'; import * as hashicorpVersioning from '../../versioning/hashicorp'; export { extractPackageFile } from './extract'; +export const supportedDatasources = [datasourceGitHubRelease.id]; + export const defaultConfig = { fileMatch: ['(^|/)\\.terragrunt-version$'], versioning: hashicorpVersioning.id, diff --git a/lib/manager/terragrunt/index.ts b/lib/manager/terragrunt/index.ts index 61960a825b..ac5b5a0628 100644 --- a/lib/manager/terragrunt/index.ts +++ b/lib/manager/terragrunt/index.ts @@ -1,7 +1,16 @@ +import { GitTagsDatasource } from '../../datasource/git-tags'; +import * as datasourceGithubTags from '../../datasource/github-tags'; +import { TerraformModuleDatasource } from '../../datasource/terraform-module'; import * as hashicorpVersioning from '../../versioning/hashicorp'; export { extractPackageFile } from './extract'; +export const supportedDatasources = [ + GitTagsDatasource.id, + datasourceGithubTags.id, + TerraformModuleDatasource.id, +]; + export const defaultConfig = { commitMessageTopic: 'Terragrunt dependency {{depName}}', fileMatch: ['(^|/)terragrunt\\.hcl$'], diff --git a/lib/manager/travis/index.ts b/lib/manager/travis/index.ts index 14e453374c..ee13640188 100644 --- a/lib/manager/travis/index.ts +++ b/lib/manager/travis/index.ts @@ -1,10 +1,13 @@ import { ProgrammingLanguage } from '../../constants'; +import * as datasourceGithubTags from '../../datasource/github-tags'; import * as nodeVersioning from '../../versioning/node'; export { extractPackageFile } from './extract'; export const language = ProgrammingLanguage.NodeJS; +export const supportedDatasources = [datasourceGithubTags.id]; + export const defaultConfig = { fileMatch: ['^.travis.yml$'], major: { diff --git a/lib/manager/types.ts b/lib/manager/types.ts index 6bfecd4489..0ce2162f26 100644 --- a/lib/manager/types.ts +++ b/lib/manager/types.ts @@ -246,6 +246,8 @@ export interface ManagerApi extends ModuleApi { language?: ProgrammingLanguage; supportsLockFileMaintenance?: boolean; + supportedDatasources: string[]; + bumpPackageVersion?( content: string, currentValue: string, diff --git a/tools/docs/manager.ts b/tools/docs/manager.ts index bf3bbd4323..b4eb71109f 100644 --- a/tools/docs/manager.ts +++ b/tools/docs/manager.ts @@ -21,7 +21,7 @@ export async function generateManagers(dist: string): Promise<void> { const language = definition.language || 'other'; allLanguages[language] = allLanguages[language] || []; allLanguages[language].push(manager); - const { defaultConfig } = definition; + const { defaultConfig, supportedDatasources } = definition; const { fileMatch } = defaultConfig as RenovateConfig; const displayName = getDisplayName(manager, definition); let md = `--- @@ -56,8 +56,15 @@ sidebar_label: ${displayName} } } md += `For details on how to extend a manager's \`fileMatch\` value, please follow [this link](/modules/manager/#file-matching).\n\n`; + md += '## Supported datasources\n\n'; + const escapedDatasources = (supportedDatasources || []) + .map( + (datasource) => + `[\`${datasource}\`](../datasource/#${datasource}-datasource)` + ) + .join(', '); + md += `This manager supports extracting the following datasources: ${escapedDatasources}.\n\n`; } - const managerReadmeContent = await readFile( `lib/manager/${manager}/readme.md` ); -- GitLab