1
0
mirror of https://github.com/badges/shields.git synced 2025-11-09 12:40:59 +03:00

More example urls and static examples [apm waffle] (#2478)

This commit is contained in:
Paul Melnikow
2018-12-11 16:31:01 -05:00
committed by GitHub
parent d74568b9c9
commit 88c8b0ee3e
27 changed files with 289 additions and 82 deletions

View File

@@ -8,7 +8,9 @@ const BaseJsonService = require('../base-json')
const { InvalidResponse } = require('../errors')
const { nonNegativeInteger } = require('../validators')
const apmSchema = Joi.object({
const keywords = ['atom']
const schema = Joi.object({
downloads: nonNegativeInteger,
releases: Joi.object({
latest: Joi.string().required(),
@@ -19,10 +21,10 @@ const apmSchema = Joi.object({
})
class BaseAPMService extends BaseJsonService {
async fetch({ repo }) {
async fetch({ packageName }) {
return this._requestJson({
schema: apmSchema,
url: `https://atom.io/api/packages/${repo}`,
schema,
url: `https://atom.io/api/packages/${packageName}`,
errorMessages: { 404: 'package not found' },
})
}
@@ -37,8 +39,8 @@ class APMDownloads extends BaseAPMService {
return { message: metric(downloads), color: 'green' }
}
async handle({ repo }) {
const json = await this.fetch({ repo })
async handle({ packageName }) {
const json = await this.fetch({ packageName })
return this.constructor.render({ downloads: json.downloads })
}
@@ -53,17 +55,17 @@ class APMDownloads extends BaseAPMService {
static get route() {
return {
base: 'apm/dm',
pattern: ':repo',
pattern: ':packageName',
}
}
static get examples() {
return [
{
exampleUrl: 'vim-mode',
pattern: ':package',
title: 'APM',
namedParams: { packageName: 'vim-mode' },
staticExample: this.render({ downloads: '60043' }),
keywords: ['atom'],
keywords,
},
]
}
@@ -74,8 +76,8 @@ class APMVersion extends BaseAPMService {
return renderVersionBadge({ version })
}
async handle({ repo }) {
const json = await this.fetch({ repo })
async handle({ packageName }) {
const json = await this.fetch({ packageName })
const version = json.releases.latest
if (!version)
@@ -92,18 +94,17 @@ class APMVersion extends BaseAPMService {
static get route() {
return {
base: 'apm/v',
format: '(.+)',
capture: ['repo'],
pattern: ':packageName',
}
}
static get examples() {
return [
{
exampleUrl: 'vim-mode',
pattern: ':package',
title: 'APM',
namedParams: { packageName: 'vim-mode' },
staticExample: this.render({ version: '0.6.0' }),
keywords: ['atom'],
keywords,
},
]
}
@@ -114,8 +115,8 @@ class APMLicense extends BaseAPMService {
return renderLicenseBadge({ license })
}
async handle({ repo }) {
const json = await this.fetch({ repo })
async handle({ packageName }) {
const json = await this.fetch({ packageName })
const license = json.metadata.license
if (!license)
@@ -136,18 +137,17 @@ class APMLicense extends BaseAPMService {
static get route() {
return {
base: 'apm/l',
format: '(.+)',
capture: ['repo'],
pattern: ':packageName',
}
}
static get examples() {
return [
{
exampleUrl: 'vim-mode',
pattern: ':package',
title: 'APM',
namedParams: { packageName: 'vim-mode' },
staticExample: this.render({ license: 'MIT' }),
keywords: ['atom'],
keywords,
},
]
}

View File

@@ -12,6 +12,7 @@ module.exports = class BowerLicense extends LegacyService {
static get route() {
return {
base: 'bower/l',
pattern: ':packageName',
}
}
@@ -19,7 +20,8 @@ module.exports = class BowerLicense extends LegacyService {
return [
{
title: 'Bower',
previewUrl: 'bootstrap',
namedParams: { packageName: 'bootstrap' },
staticPreview: { label: 'license', message: 'MIT', color: 'blue' },
},
]
}

View File

@@ -10,6 +10,7 @@ module.exports = class CocoapodsLicense extends LegacyService {
static get route() {
return {
base: 'cocoapods/l',
pattern: ':packageName',
}
}
@@ -17,7 +18,8 @@ module.exports = class CocoapodsLicense extends LegacyService {
return [
{
title: 'Cocoapods',
previewUrl: 'AFNetworking',
namedParams: { packageName: 'AFNetworking' },
staticPreview: { label: 'license', message: 'MIT', color: '000' },
},
]
}

View File

@@ -10,6 +10,7 @@ module.exports = class CocoapodsPlatform extends LegacyService {
static get route() {
return {
base: 'cocoapods/p',
pattern: ':packageName',
}
}
@@ -17,7 +18,12 @@ module.exports = class CocoapodsPlatform extends LegacyService {
return [
{
title: 'Cocoapods',
previewUrl: 'AFNetworking',
namedParams: { packageName: 'AFNetworking' },
staticPreview: {
label: 'platform',
message: 'ios | osx | watchos | tvos',
color: 'lightgrey',
},
},
]
}

View File

@@ -10,6 +10,7 @@ module.exports = class CpanLicense extends LegacyService {
static get route() {
return {
base: 'cpan/l',
pattern: ':packageName',
}
}
@@ -17,7 +18,8 @@ module.exports = class CpanLicense extends LegacyService {
return [
{
title: 'CPAN',
previewUrl: 'Config-Augeas',
namedParams: { packageName: 'Config-Augeas' },
staticPreview: { label: 'CPAN', message: 'lgpl_2_1', color: 'blue' },
keywords: ['perl'],
},
]

View File

@@ -16,6 +16,7 @@ class CranLicense extends LegacyService {
static get route() {
return {
base: 'cran/l',
pattern: ':packageName',
}
}
@@ -23,7 +24,12 @@ class CranLicense extends LegacyService {
return [
{
title: 'CRAN/METACRAN',
previewUrl: 'devtools',
namedParams: { packageName: 'devtools' },
staticPreview: {
label: 'license',
message: 'GPL (>= 2)',
color: 'blue',
},
keywords: ['R'],
},
]

View File

@@ -17,6 +17,7 @@ class DubVersion extends LegacyService {
static get route() {
return {
base: 'dub/v',
pattern: ':packageName',
}
}
@@ -24,8 +25,8 @@ class DubVersion extends LegacyService {
return [
{
title: 'DUB',
previewUrl: 'vibe-d',
keywords: ['dub'],
namedParams: { packageName: 'vibe-d' },
staticPreview: { label: 'version', message: 'v0.8.4', color: 'orange' },
},
]
}
@@ -41,6 +42,7 @@ class DubLicense extends LegacyService {
static get route() {
return {
base: 'dub/l',
pattern: ':packageName',
}
}
@@ -48,8 +50,8 @@ class DubLicense extends LegacyService {
return [
{
title: 'DUB',
previewUrl: 'vibe-d',
keywords: ['dub'],
namedParams: { packageName: 'vibe-d' },
staticPreview: { label: 'license', message: 'MIT', color: 'blue' },
},
]
}

View File

@@ -26,7 +26,13 @@ module.exports = class GithubCommitActivity extends LegacyService {
return [
{
title: 'GitHub commit activity the past week, 4 weeks, year',
previewUrl: 'y/eslint/eslint',
pattern: 'y/:user/:repo',
namedParams: { user: 'eslint', repo: 'eslint' },
staticPreview: {
label: 'commit activity',
message: '457/year',
color: 'blue',
},
keywords: ['GitHub', 'commit', 'commits', 'activity'],
documentation,
},

View File

@@ -22,8 +22,18 @@ module.exports = class GithubCommitStatus extends LegacyService {
return [
{
title: 'GitHub commit merge status',
previewUrl:
'badges/shields/master/5d4ab86b1b5ddfb3c4a70a70bd19932c52603b8c',
pattern: ':user/:repo/:branch/:commit',
namedParams: {
user: 'badges',
repo: 'shields',
branch: 'master',
commit: '5d4ab86b1b5ddfb3c4a70a70bd19932c52603b8c',
},
staticPreview: {
label: 'commits since 3.4.7',
message: '4225',
color: 'blue',
},
keywords: ['GitHub', 'commit', 'branch', 'merge'],
documentation,
},

View File

@@ -8,6 +8,8 @@ const {
} = require('../../lib/badge-data')
const { documentation } = require('./github-helpers')
const keywords = ['GitHub', 'commit']
module.exports = class GithubCommitsSince extends LegacyService {
static get category() {
return 'activity'
@@ -16,6 +18,7 @@ module.exports = class GithubCommitsSince extends LegacyService {
static get route() {
return {
base: 'github/commits-since',
pattern: ':user/:repo/:version',
}
}
@@ -23,14 +26,32 @@ module.exports = class GithubCommitsSince extends LegacyService {
return [
{
title: 'GitHub commits',
previewUrl: 'SubtitleEdit/subtitleedit/3.4.7',
keywords: ['GitHub', 'commit'],
namedParams: {
user: 'SubtitleEdit',
repo: 'subtitleedit',
version: '3.4.7',
},
staticPreview: {
label: 'commits since 3.4.7',
message: '4225',
color: 'blue',
},
keywords,
documentation,
},
{
title: 'GitHub commits (since latest release)',
previewUrl: 'SubtitleEdit/subtitleedit/latest',
keywords: ['GitHub', 'commit'],
namedParams: {
user: 'SubtitleEdit',
repo: 'subtitleedit',
version: 'latest',
},
staticPreview: {
label: 'commits since 3.5.7',
message: '157',
color: 'blue',
},
keywords,
documentation,
},
]

View File

@@ -26,7 +26,16 @@ module.exports = class GithubContributors extends LegacyService {
return [
{
title: 'GitHub contributors',
previewUrl: 'contributors/cdnjs/cdnjs',
pattern: 'contributors/:user/:repo',
namedParams: {
user: 'cdnjs',
repo: 'cdnjs',
},
staticPreview: {
label: 'contributors',
message: '397',
color: 'blue',
},
keywords: ['GitHub', 'contributor'],
documentation,
},

View File

@@ -26,38 +26,93 @@ module.exports = class GithubDownloads extends LegacyService {
return [
{
title: 'GitHub All Releases',
previewUrl: 'downloads/atom/atom/total',
keywords: ['github'],
pattern: 'downloads/:user/:repo/total',
namedParams: {
user: 'atom',
repo: 'atom',
},
staticPreview: {
label: 'downloads',
message: '857k total',
color: 'brightgreen',
},
documentation,
},
{
title: 'GitHub Releases',
previewUrl: 'downloads/atom/atom/latest/total',
keywords: ['github'],
pattern: 'downloads/:user/:repo/:tag/total',
namedParams: {
user: 'atom',
repo: 'atom',
tag: 'latest',
},
staticPreview: {
label: 'downloads',
message: '27k',
color: 'brightgreen',
},
documentation,
},
{
title: 'GitHub Pre-Releases',
previewUrl: 'downloads-pre/atom/atom/latest/total',
keywords: ['github'],
pattern: 'downloads-pre/:user/:repo/:tag/total',
namedParams: {
user: 'atom',
repo: 'atom',
tag: 'latest',
},
staticPreview: {
label: 'downloads',
message: '2k',
color: 'brightgreen',
},
documentation,
},
{
title: 'GitHub Releases (by Release)',
previewUrl: 'downloads/atom/atom/v0.190.0/total',
keywords: ['github'],
pattern: 'downloads/:user/:repo/:tag/total',
namedParams: {
user: 'atom',
repo: 'atom',
tag: 'v0.190.0',
},
staticPreview: {
label: 'downloads',
message: '490k v0.190.0',
color: 'brightgreen',
},
documentation,
},
{
title: 'GitHub Releases (by Asset)',
previewUrl: 'downloads/atom/atom/latest/atom-amd64.deb',
keywords: ['github'],
pattern: 'downloads/:user/:repo/:tag/:path*',
namedParams: {
user: 'atom',
repo: 'atom',
tag: 'latest',
path: 'atom-amd64.deb',
},
staticPreview: {
label: 'downloads',
message: '3k [atom-amd64.deb]',
color: 'brightgreen',
},
documentation,
},
{
title: 'GitHub Pre-Releases (by Asset)',
previewUrl: 'downloads-pre/atom/atom/latest/atom-amd64.deb',
keywords: ['github'],
pattern: 'downloads-pre/:user/:repo/:tag/:path*',
namedParams: {
user: 'atom',
repo: 'atom',
tag: 'latest',
path: 'atom-amd64.deb',
},
staticPreview: {
label: 'downloads',
message: '237 [atom-amd64.deb]',
color: 'brightgreen',
},
documentation,
},
]

View File

@@ -25,7 +25,17 @@ module.exports = class GithubFollowers extends LegacyService {
return [
{
title: 'GitHub followers',
pattern: ':user',
previewUrl: 'espadrine',
// https://github.com/badges/shields/issues/2479
// namedParams: {
// user: 'espadrine',
// },
// staticPreview: {
// label: 'Follow',
// message: '150',
// style: 'social',
// },
queryParams: { style: 'social', label: 'Follow' },
documentation,
},

View File

@@ -20,6 +20,7 @@ module.exports = class GithubLicense extends LegacyService {
static get route() {
return {
base: 'github/license',
pattern: ':user/:repo',
}
}
@@ -27,7 +28,12 @@ module.exports = class GithubLicense extends LegacyService {
return [
{
title: 'GitHub',
previewUrl: 'mashape/apistatus',
namedParams: { user: 'mashape', repo: 'apistatus' },
staticExample: {
label: 'license',
message: 'MIT',
color: 'green',
},
keywords: ['GitHub', 'license'],
documentation,
},

View File

@@ -19,7 +19,17 @@ module.exports = class JiraIssue extends LegacyService {
return [
{
title: 'JIRA issue',
previewUrl: 'https/issues.apache.org/jira/KAFKA-2896',
pattern: ':protocol/:hostAndPath+/:issueKey',
namedParams: {
protocol: 'https',
hostAndPath: 'issues.apache.org/jira',
issueKey: 'KAFKA-2896',
},
staticPreview: {
label: 'kafka-2896',
message: 'Resolved',
color: 'green',
},
},
]
}

View File

@@ -27,7 +27,17 @@ module.exports = class JiraSprint extends LegacyService {
return [
{
title: 'JIRA sprint completion',
previewUrl: 'https/jira.spring.io/94',
pattern: ':protocol/:host/:sprintId',
namedParams: {
protocol: 'https',
host: 'jira.spring.io',
sprintId: '94',
},
staticPreview: {
label: 'completion',
message: '96%',
color: 'orange',
},
documentation,
},
]

View File

@@ -16,16 +16,18 @@ module.exports = class NpmLicense extends NpmBase {
static get examples() {
return [
{
exampleUrl: 'express',
pattern: ':package',
title: 'NPM',
pattern: ':packageName',
namedParams: { packageName: 'express' },
staticExample: this.render({ licenses: ['MIT'] }),
keywords: ['node'],
},
{
exampleUrl: 'express',
pattern: ':package',
staticExample: this.render({ licenses: ['MIT'] }),
title: 'NPM',
pattern: ':packageName',
namedParams: { packageName: 'express' },
queryParams: { registry_uri: 'https://registry.npmjs.com' },
staticExample: this.render({ licenses: ['MIT'] }),
keywords: ['node'],
},
]

View File

@@ -22,7 +22,11 @@ module.exports = class NpmTypeDefinitions extends NpmBase {
return [
{
title: 'npm type definitions',
previewUrl: 'chalk',
pattern: ':packageName',
namedParams: { packageName: 'chalk' },
staticPreview: this.render({
supportedLanguages: ['TypeScript', 'Flow'],
}),
keywords: ['node', 'typescript', 'flow'],
},
]

View File

@@ -11,6 +11,7 @@ module.exports = class PackagistLicense extends LegacyService {
static get route() {
return {
base: 'packagist/l',
pattern: ':user/:repo',
}
}
@@ -18,7 +19,12 @@ module.exports = class PackagistLicense extends LegacyService {
return [
{
title: 'Packagist',
previewUrl: 'doctrine/orm',
namedParams: { user: 'doctrine', repo: 'orm' },
staticPreview: {
label: 'license',
message: 'MIT',
color: 'blue',
},
keywords: ['PHP'],
},
]

View File

@@ -5,6 +5,8 @@ const { makeBadgeData: getBadgeData } = require('../../lib/badge-data')
const { checkErrorResponse } = require('../../lib/error-helper')
const { omitv } = require('../../lib/text-formatters')
const keywords = ['php', 'runtime']
module.exports = class PhpeyeHhvm extends LegacyService {
static get category() {
return 'platform-support'
@@ -20,11 +22,29 @@ module.exports = class PhpeyeHhvm extends LegacyService {
return [
{
title: 'HHVM',
previewUrl: 'symfony/symfony',
pattern: ':user/:packageName',
namedParams: { user: 'symfony', packageName: 'symfony' },
staticPreview: {
label: 'hhvm',
message: 'not tested',
color: 'red',
},
keywords,
},
{
title: 'HHVM (branch)',
previewUrl: 'symfony/symfony/master',
pattern: ':user/:packageName/:branch',
namedParams: {
user: 'symfony',
packageName: 'symfony',
branch: 'master',
},
staticPreview: {
label: 'hhvm',
message: 'not tested',
color: 'red',
},
keywords,
},
]
}

View File

@@ -20,7 +20,9 @@ module.exports = class PypiDjangoVersions extends PypiBase {
return [
{
title: 'PyPI - Django Version',
previewUrl: 'djangorestframework',
pattern: ':packageName',
namedParams: { packageName: 'djangorestframework' },
staticPreview: this.render({ versions: ['1.11', '2.0', '2.1'] }),
keywords: ['python', 'django'],
},
]

View File

@@ -20,7 +20,9 @@ module.exports = class PypiImplementation extends PypiBase {
return [
{
title: 'PyPI - Implementation',
previewUrl: 'Django',
pattern: ':packageName',
namedParams: { packageName: 'Django' },
staticPreview: this.render({ implementations: ['cpython'] }),
keywords: ['python'],
},
]

View File

@@ -17,7 +17,9 @@ module.exports = class PypiLicense extends PypiBase {
return [
{
title: 'PyPI - License',
previewUrl: 'Django',
pattern: ':packageName',
namedParams: { packageName: 'Django' },
staticPreview: { label: 'license', message: 'BSD', color: 'lightgrey' },
keywords: ['python'],
},
]

View File

@@ -20,7 +20,9 @@ module.exports = class PypiPythonVersions extends PypiBase {
return [
{
title: 'PyPI - Python Version',
previewUrl: 'Django',
pattern: ':packageName',
namedParams: { packageName: 'Django' },
staticPreview: this.render({ versions: ['3.5', '3.6', '3.7'] }),
keywords: ['python'],
},
]

View File

@@ -20,7 +20,9 @@ module.exports = class PypiWheel extends PypiBase {
return [
{
title: 'PyPI - Wheel',
previewUrl: 'Django',
pattern: ':packageName',
namedParams: { packageName: 'Django' },
staticPreview: this.render({ hasWheel: true }),
keywords: ['python'],
},
]

View File

@@ -15,7 +15,7 @@ module.exports = class Waffle extends LegacyService {
static get route() {
return {
base: 'waffle',
base: 'waffle/label',
}
}
@@ -23,7 +23,17 @@ module.exports = class Waffle extends LegacyService {
return [
{
title: 'Waffle.io',
previewUrl: 'label/evancohen/smart-mirror/status%3A%20in%20progress',
pattern: ':user/:repo/:query',
namedParams: {
user: 'evancohen',
repo: 'smart-mirror',
query: 'status: in progress',
},
staticPreview: {
label: 'status: in progress',
message: '2',
color: '000',
},
},
]
}

View File

@@ -1,11 +1,9 @@
'use strict'
const Joi = require('joi')
const ServiceTester = require('../service-tester')
const { invalidJSON } = require('../response-fixtures')
const t = new ServiceTester({ id: 'waffle', title: 'Waffle.io' })
module.exports = t
const t = (module.exports = require('../create-service-tester')())
const fakeData = [
{
@@ -34,7 +32,7 @@ const fakeData = [
t.create(
'label should be `bug` & value should be exactly 5 as supplied in `fakeData`. e.g: bug|5'
)
.get('/label/userName/repoName/bug.json?style=_shields_test')
.get('/userName/repoName/bug.json?style=_shields_test')
.intercept(nock =>
nock('https://api.waffle.io/')
.get('/userName/repoName/columns?with=count')
@@ -47,7 +45,7 @@ t.create(
})
t.create('label should be `Mybug` & value should be formated. e.g: Mybug|25')
.get('/label/ritwickdey/vscode-live-server/bug.json?label=Mybug')
.get('/ritwickdey/vscode-live-server/bug.json?label=Mybug')
.expectJSONTypes(
Joi.object().keys({
name: 'Mybug',
@@ -58,7 +56,7 @@ t.create('label should be `Mybug` & value should be formated. e.g: Mybug|25')
)
t.create('label (repo not found)')
.get('/label/not-a-user/not-a-repo/bug.json')
.get('/not-a-user/not-a-repo/bug.json')
.expectJSON({
name: 'waffle',
value: 'not found',
@@ -66,7 +64,7 @@ t.create('label (repo not found)')
t.create('label (label not found)')
.get(
'/label/ritwickdey/vscode-live-server/not-a-real-label.json?style=_shields_test'
'/ritwickdey/vscode-live-server/not-a-real-label.json?style=_shields_test'
)
.expectJSON({
name: 'not-a-real-label',
@@ -75,7 +73,7 @@ t.create('label (label not found)')
})
t.create('label (empty response)')
.get('/label/userName/repoName/bug.json')
.get('/userName/repoName/bug.json')
.intercept(nock =>
nock('https://api.waffle.io/')
.get('/userName/repoName/columns?with=count')
@@ -87,12 +85,12 @@ t.create('label (empty response)')
})
t.create('label (connection error)')
.get('/label/ritwickdey/vscode-live-server/bug.json')
.get('/ritwickdey/vscode-live-server/bug.json')
.networkOff()
.expectJSON({ name: 'waffle', value: 'inaccessible' })
t.create('label (unexpected response)')
.get('/label/userName/repoName/bug.json')
.get('/userName/repoName/bug.json')
.intercept(nock =>
nock('https://api.waffle.io/')
.get('/userName/repoName/columns?with=count')