diff --git a/services/clojars/clojars-version.service.js b/services/clojars/clojars-version.service.js index 2b030a09da..61133a604a 100644 --- a/services/clojars/clojars-version.service.js +++ b/services/clojars/clojars-version.service.js @@ -34,6 +34,10 @@ class ClojarsVersionService extends BaseClojarsService { static defaultBadgeData = { label: 'clojars' } static render({ clojar, version }) { + // clojars format is non standard to fit community style + // dont use renderVersionBadge + // see also https://github.com/badges/shields/pull/431 + // commit d0414c9 return { message: `[${clojar} "${version}"]`, color: versionColor(version), diff --git a/services/color-formatters.js b/services/color-formatters.js index f43b8a3f93..968aa2b2f9 100644 --- a/services/color-formatters.js +++ b/services/color-formatters.js @@ -23,7 +23,10 @@ function version(version) { if (first === 'v') { first = version[1] } - if (first === '0' || /alpha|beta|snapshot|dev|pre|rc/i.test(version)) { + if ( + first === '0' || + /alpha|beta|snapshot|dev|pre|rc|scm|cvs/i.test(version) + ) { return 'orange' } else { return 'blue' diff --git a/services/color-formatters.spec.js b/services/color-formatters.spec.js index 39348a4288..6921b0d908 100644 --- a/services/color-formatters.spec.js +++ b/services/color-formatters.spec.js @@ -105,6 +105,8 @@ describe('Color formatters', function () { given('1.0.1-dev'), given('2.1.6-prerelease'), given('2.1.6-RC1'), + given('cvs-1'), + given('scm-2'), ]).expect('orange') expect(() => version(null)).to.throw( diff --git a/services/feedz/feedz.service.js b/services/feedz/feedz.service.js index a24ad20ac2..2973b4bd3b 100644 --- a/services/feedz/feedz.service.js +++ b/services/feedz/feedz.service.js @@ -1,11 +1,11 @@ import Joi from 'joi' import { BaseJsonService, NotFound, pathParams } from '../index.js' import { - renderVersionBadge, searchServiceUrl, stripBuildMetadata, selectVersion, } from '../nuget/nuget-helpers.js' +import { renderVersionBadge } from '../version.js' const singlePageSchema = Joi.object({ '@id': Joi.string().required(), @@ -64,10 +64,6 @@ class FeedzVersionService extends BaseJsonService { label: 'feedz', } - static render(props) { - return renderVersionBadge(props) - } - apiUrl({ organization, repository }) { return `https://f.feedz.io/${organization}/${repository}/nuget` } @@ -122,9 +118,9 @@ class FeedzVersionService extends BaseJsonService { const json = await this.fetch({ baseUrl, packageName }) const fetchedJson = await this.fetchItems({ json }) const version = this.transform({ json: fetchedJson, includePrereleases }) - return this.constructor.render({ + return renderVersionBadge({ version, - feed: FeedzVersionService.defaultBadgeData.label, + defaultLabel: FeedzVersionService.defaultBadgeData.label, }) } } diff --git a/services/feedz/feedz.tester.js b/services/feedz/feedz.tester.js index 79ecaedb0c..d240b8b237 100644 --- a/services/feedz/feedz.tester.js +++ b/services/feedz/feedz.tester.js @@ -24,14 +24,6 @@ t.create('version (valid)') color: 'blue', }) -t.create('version (yellow badge)') - .get('/feedz/v/shieldstests/public/Shields.TestPreOnly.json') - .expectBadge({ - label: 'feedz', - message: 'v0.1.0-pre', - color: 'yellow', - }) - t.create('version (orange badge)') .get('/feedz/v/shieldstests/public/Shields.NoV1.json') .expectBadge({ @@ -77,14 +69,6 @@ t.create('version (pre) (valid)') color: 'blue', }) -t.create('version (pre) (yellow badge)') - .get('/feedz/vpre/shieldstests/public/Shields.TestPreOnly.json') - .expectBadge({ - label: 'feedz', - message: 'v0.1.0-pre', - color: 'yellow', - }) - t.create('version (pre) (orange badge)') .get('/feedz/vpre/shieldstests/public/Shields.NoV1.json') .expectBadge({ diff --git a/services/gitlab/gitlab-tag.service.js b/services/gitlab/gitlab-tag.service.js index 43fbd0dc0d..e013fb7763 100644 --- a/services/gitlab/gitlab-tag.service.js +++ b/services/gitlab/gitlab-tag.service.js @@ -1,8 +1,6 @@ import Joi from 'joi' -import { version as versionColor } from '../color-formatters.js' import { optionalUrl } from '../validators.js' -import { latest } from '../version.js' -import { addv } from '../text-formatters.js' +import { latest, renderVersionBadge } from '../version.js' import { NotFound, pathParam, queryParam } from '../index.js' import { description, httpErrorsFor } from './gitlab-helper.js' import GitLabBase from './gitlab-base.js' @@ -63,13 +61,6 @@ export default class GitlabTag extends GitLabBase { static defaultBadgeData = { label: 'tag' } - static render({ version, sort }) { - return { - message: addv(version), - color: sort === 'semver' ? versionColor(version) : 'blue', - } - } - async fetch({ project, baseUrl }) { // https://docs.gitlab.com/ee/api/tags.html // N.B. the documentation has contradictory information about default sort order. @@ -114,6 +105,6 @@ export default class GitlabTag extends GitLabBase { sort, includePrereleases: pre !== undefined, }) - return this.constructor.render({ version, sort }) + return renderVersionBadge({ version }) } } diff --git a/services/gitlab/gitlab-tag.spec.js b/services/gitlab/gitlab-tag.spec.js index dddc97a7ce..b0c1da012b 100644 --- a/services/gitlab/gitlab-tag.spec.js +++ b/services/gitlab/gitlab-tag.spec.js @@ -39,6 +39,7 @@ describe('GitLabTag', function () { ).to.deep.equal({ message: 'v1.9', color: 'blue', + label: undefined, }) scope.done() diff --git a/services/luarocks/luarocks.service.js b/services/luarocks/luarocks.service.js index 6bad664e23..37b8c361ae 100644 --- a/services/luarocks/luarocks.service.js +++ b/services/luarocks/luarocks.service.js @@ -1,6 +1,6 @@ import Joi from 'joi' -import { addv } from '../text-formatters.js' import { BaseJsonService, NotFound, pathParams } from '../index.js' +import { renderVersionBadge } from '../version.js' import { latestVersion } from './luarocks-version-helpers.js' const schema = Joi.object({ @@ -42,25 +42,6 @@ export default class Luarocks extends BaseJsonService { label: 'luarocks', } - static render({ version }) { - // The badge colors are following the heuristic rule where `scm < dev < - // stable` (e.g., `scm-1` < `dev-1` < `0.1.0-1`). - let color - switch (version.slice(0, 3).toLowerCase()) { - case 'dev': - color = 'yellow' - break - case 'scm': - case 'cvs': - color = 'orange' - break - default: - color = 'brightgreen' - } - - return { message: addv(version), color } - } - async fetch({ user, moduleName }) { const { repository } = await this._requestJson({ url: `https://luarocks.org/manifests/${encodeURIComponent( @@ -91,6 +72,6 @@ export default class Luarocks extends BaseJsonService { const versions = Object.keys(moduleInfo) version = latestVersion(versions) } - return this.constructor.render({ version }) + return renderVersionBadge({ version }) } } diff --git a/services/luarocks/luarocks.spec.js b/services/luarocks/luarocks.spec.js deleted file mode 100644 index 811ab73ccf..0000000000 --- a/services/luarocks/luarocks.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -import { test, given } from 'sazerac' -import Luarocks from './luarocks.service.js' - -test(Luarocks.render, () => { - given({ version: 'dev-1' }).expect({ message: 'dev-1', color: 'yellow' }) - given({ version: 'scm-1' }).expect({ message: 'scm-1', color: 'orange' }) - given({ version: 'cvs-1' }).expect({ message: 'cvs-1', color: 'orange' }) - given({ version: '0.1-1' }).expect({ - message: 'v0.1-1', - color: 'brightgreen', - }) -}) diff --git a/services/nuget/nuget-helpers.js b/services/nuget/nuget-helpers.js index c3fa42b605..d24f59d310 100644 --- a/services/nuget/nuget-helpers.js +++ b/services/nuget/nuget-helpers.js @@ -1,25 +1,8 @@ import semver from 'semver' -import { metric, addv } from '../text-formatters.js' +import { metric } from '../text-formatters.js' import { downloadCount as downloadCountColor } from '../color-formatters.js' import { getCachedResource } from '../../core/base-service/resource-cache.js' -function renderVersionBadge({ version, feed }) { - let color - if (version.includes('-')) { - color = 'yellow' - } else if (version.startsWith('0')) { - color = 'orange' - } else { - color = 'blue' - } - - return { - message: addv(version), - color, - label: feed, - } -} - function renderDownloadBadge({ downloads }) { return { message: metric(downloads), @@ -100,7 +83,6 @@ function selectVersion(versions, includePrereleases) { } export { - renderVersionBadge, renderDownloadBadge, odataToObject, searchServiceUrl, diff --git a/services/nuget/nuget-helpers.spec.js b/services/nuget/nuget-helpers.spec.js index a5e316490d..9cc8ea5b4a 100644 --- a/services/nuget/nuget-helpers.spec.js +++ b/services/nuget/nuget-helpers.spec.js @@ -1,30 +1,11 @@ import { test, given } from 'sazerac' import { - renderVersionBadge, odataToObject, stripBuildMetadata, selectVersion, } from './nuget-helpers.js' describe('NuGet helpers', function () { - test(renderVersionBadge, () => { - given({ version: '1.2-beta' }).expect({ - label: undefined, - message: 'v1.2-beta', - color: 'yellow', - }) - given({ version: '0.35' }).expect({ - label: undefined, - message: 'v0.35', - color: 'orange', - }) - given({ version: '1.2.7' }).expect({ - label: undefined, - message: 'v1.2.7', - color: 'blue', - }) - }) - test(odataToObject, () => { given({ 'm:properties': { 'd:Version': '1.2.3' } }).expect({ Version: '1.2.3', diff --git a/services/nuget/nuget-v2-service-family.js b/services/nuget/nuget-v2-service-family.js index 2303c62502..eab42f5773 100644 --- a/services/nuget/nuget-v2-service-family.js +++ b/services/nuget/nuget-v2-service-family.js @@ -9,11 +9,8 @@ import { pathParam, queryParam, } from '../index.js' -import { - renderVersionBadge, - renderDownloadBadge, - odataToObject, -} from './nuget-helpers.js' +import { renderVersionBadge } from '../version.js' +import { renderDownloadBadge, odataToObject } from './nuget-helpers.js' function createFilter({ packageName, includePrereleases }) { const releaseTypeFilter = includePrereleases @@ -127,10 +124,6 @@ function createServiceFamily({ label: defaultLabel, } - static render(props) { - return renderVersionBadge(props) - } - async handle({ packageName }, queryParams) { const packageData = await fetch(this, { baseUrl: apiBaseUrl, @@ -138,7 +131,7 @@ function createServiceFamily({ includePrereleases: queryParams.include_prereleases !== undefined, }) const version = packageData.NormalizedVersion || `${packageData.Version}` - return this.constructor.render({ version }) + return renderVersionBadge({ version }) } } diff --git a/services/nuget/nuget-v3-service-family.js b/services/nuget/nuget-v3-service-family.js index a5c8fefd3c..1cc9f6dd92 100644 --- a/services/nuget/nuget-v3-service-family.js +++ b/services/nuget/nuget-v3-service-family.js @@ -1,8 +1,8 @@ import Joi from 'joi' import RouteBuilder from '../route-builder.js' import { BaseJsonService, NotFound } from '../index.js' +import { renderVersionBadge } from '../version.js' import { - renderVersionBadge, renderDownloadBadge, searchServiceUrl, stripBuildMetadata, @@ -127,10 +127,6 @@ function createServiceFamily({ label: defaultLabel, } - static render(props) { - return renderVersionBadge(props) - } - /* * Extract version information from the raw package info. */ @@ -158,7 +154,7 @@ function createServiceFamily({ }) const json = await fetch(this, { baseUrl, packageName }) const version = this.transform({ json, includePrereleases }) - return this.constructor.render({ version, feed }) + return renderVersionBadge({ version, defaultLabel: feed }) } } diff --git a/services/nuget/nuget.tester.js b/services/nuget/nuget.tester.js index db04852b1f..507b4e954e 100644 --- a/services/nuget/nuget.tester.js +++ b/services/nuget/nuget.tester.js @@ -6,7 +6,6 @@ import { } from '../test-validators.js' import { queryIndex, - nuGetV3VersionJsonWithDash, nuGetV3VersionJsonFirstCharZero, nuGetV3VersionJsonFirstCharNotZero, nuGetV3VersionJsonBuildMetadataWithDash, @@ -51,24 +50,6 @@ t.create('version (valid)') message: isVPlusDottedVersionNClauses, }) -t.create('version (yellow badge)') - .get('/v/Microsoft.AspNetCore.Mvc.json') - .intercept(nock => - nock('https://api.nuget.org').get('/v3/index.json').reply(200, queryIndex), - ) - .intercept(nock => - nock('https://api-v2v3search-0.nuget.org') - .get( - '/query?q=packageid%3Amicrosoft.aspnetcore.mvc&prerelease=true&semVerLevel=2', - ) - .reply(200, nuGetV3VersionJsonWithDash), - ) - .expectBadge({ - label: 'nuget', - message: 'v1.2-beta', - color: 'yellow', - }) - t.create('version (orange badge)') .get('/v/Microsoft.AspNetCore.Mvc.json') .intercept(nock => @@ -149,24 +130,6 @@ t.create('version (pre) (valid)') message: isVPlusDottedVersionNClausesWithOptionalSuffix, }) -t.create('version (pre) (yellow badge)') - .get('/vpre/Microsoft.AspNetCore.Mvc.json') - .intercept(nock => - nock('https://api.nuget.org').get('/v3/index.json').reply(200, queryIndex), - ) - .intercept(nock => - nock('https://api-v2v3search-0.nuget.org') - .get( - '/query?q=packageid%3Amicrosoft.aspnetcore.mvc&prerelease=true&semVerLevel=2', - ) - .reply(200, nuGetV3VersionJsonWithDash), - ) - .expectBadge({ - label: 'nuget', - message: 'v1.2-beta', - color: 'yellow', - }) - t.create('version (pre) (orange badge)') .get('/vpre/Microsoft.AspNetCore.Mvc.json') .intercept(nock =>