From 461cbc75518946fe6c7612122f9ccb2e8202e583 Mon Sep 17 00:00:00 2001 From: Jason Bedard <jason+github@jbedard.ca> Date: Sun, 19 Jun 2022 02:33:03 -0400 Subject: [PATCH] feat(bazelisk): add support for bazelisk bazelversion files (#16114) --- lib/modules/manager/api.ts | 2 + lib/modules/manager/bazelisk/extract.spec.ts | 53 ++++++++++++++++++++ lib/modules/manager/bazelisk/extract.ts | 12 +++++ lib/modules/manager/bazelisk/index.ts | 10 ++++ lib/modules/manager/bazelisk/readme.md | 1 + 5 files changed, 78 insertions(+) create mode 100644 lib/modules/manager/bazelisk/extract.spec.ts create mode 100644 lib/modules/manager/bazelisk/extract.ts create mode 100644 lib/modules/manager/bazelisk/index.ts create mode 100644 lib/modules/manager/bazelisk/readme.md diff --git a/lib/modules/manager/api.ts b/lib/modules/manager/api.ts index ebe04c9b60..59f8d9c223 100644 --- a/lib/modules/manager/api.ts +++ b/lib/modules/manager/api.ts @@ -5,6 +5,7 @@ import * as azurePipelines from './azure-pipelines'; import * as batect from './batect'; import * as batectWrapper from './batect-wrapper'; import * as bazel from './bazel'; +import * as bazelisk from './bazelisk'; import * as bitbucketPipelines from './bitbucket-pipelines'; import * as buildkite from './buildkite'; import * as bundler from './bundler'; @@ -79,6 +80,7 @@ api.set('azure-pipelines', azurePipelines); api.set('batect', batect); api.set('batect-wrapper', batectWrapper); api.set('bazel', bazel); +api.set('bazelisk', bazelisk); api.set('bitbucket-pipelines', bitbucketPipelines); api.set('buildkite', buildkite); api.set('bundler', bundler); diff --git a/lib/modules/manager/bazelisk/extract.spec.ts b/lib/modules/manager/bazelisk/extract.spec.ts new file mode 100644 index 0000000000..dde5e2aa84 --- /dev/null +++ b/lib/modules/manager/bazelisk/extract.spec.ts @@ -0,0 +1,53 @@ +import { extractPackageFile } from '.'; + +describe('modules/manager/bazelisk/extract', () => { + describe('extractPackageFile()', () => { + it('returns a result', () => { + const res = extractPackageFile('5.2.0\n'); + expect(res.deps).toEqual([ + { + currentValue: '5.2.0', + datasource: 'github-releases', + depName: 'bazel', + packageName: 'bazelbuild/bazel', + }, + ]); + }); + + it('supports ranges', () => { + const res = extractPackageFile('5.2\n'); + expect(res.deps).toEqual([ + { + currentValue: '5.2', + datasource: 'github-releases', + depName: 'bazel', + packageName: 'bazelbuild/bazel', + }, + ]); + }); + + it('skips non ranges', () => { + const res = extractPackageFile('latestn'); + expect(res.deps).toEqual([ + { + currentValue: 'latestn', + datasource: 'github-releases', + depName: 'bazel', + packageName: 'bazelbuild/bazel', + }, + ]); + }); + + it('ignores comments past the first line', () => { + const res = extractPackageFile('5.2.0\n# comment1\n\n# comment2'); + expect(res.deps).toEqual([ + { + currentValue: '5.2.0', + datasource: 'github-releases', + depName: 'bazel', + packageName: 'bazelbuild/bazel', + }, + ]); + }); + }); +}); diff --git a/lib/modules/manager/bazelisk/extract.ts b/lib/modules/manager/bazelisk/extract.ts new file mode 100644 index 0000000000..a4376a5769 --- /dev/null +++ b/lib/modules/manager/bazelisk/extract.ts @@ -0,0 +1,12 @@ +import { GithubReleasesDatasource } from '../../datasource/github-releases'; +import type { PackageDependency, PackageFile } from '../types'; + +export function extractPackageFile(content: string): PackageFile { + const dep: PackageDependency = { + depName: 'bazel', + currentValue: content.split('\n', 2)[0].trim(), + datasource: GithubReleasesDatasource.id, + packageName: 'bazelbuild/bazel', + }; + return { deps: [dep] }; +} diff --git a/lib/modules/manager/bazelisk/index.ts b/lib/modules/manager/bazelisk/index.ts new file mode 100644 index 0000000000..345989e1b4 --- /dev/null +++ b/lib/modules/manager/bazelisk/index.ts @@ -0,0 +1,10 @@ +import { GithubReleasesDatasource } from '../../datasource/github-releases'; + +export { extractPackageFile } from './extract'; + +export const defaultConfig = { + fileMatch: ['(^|\\/)\\.bazelversion$'], + pinDigests: false, +}; + +export const supportedDatasources = [GithubReleasesDatasource.id]; diff --git a/lib/modules/manager/bazelisk/readme.md b/lib/modules/manager/bazelisk/readme.md new file mode 100644 index 0000000000..cb720c0992 --- /dev/null +++ b/lib/modules/manager/bazelisk/readme.md @@ -0,0 +1 @@ +Simply keeps the `.bazelversion` file updated. -- GitLab