add [homebrew] cask service (#4228)

* add homebrew cask service

* rename formula to cask
This commit is contained in:
Przemo Nowaczyk
2019-10-25 00:39:25 +02:00
committed by repo-ranger[bot]
parent b7f3f175a5
commit 3544ea03f8
2 changed files with 72 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
'use strict'
const Joi = require('@hapi/joi')
const { renderVersionBadge } = require('../version')
const { BaseJsonService } = require('..')
const schema = Joi.object({
version: Joi.string().required(),
}).required()
module.exports = class HomebrewCask extends BaseJsonService {
static get category() {
return 'version'
}
static get route() {
return {
base: 'homebrew/cask/v',
pattern: ':cask',
}
}
static get examples() {
return [
{
title: 'homebrew cask',
namedParams: { cask: 'iterm2' },
staticPreview: renderVersionBadge({ version: 'v3.2.5' }),
},
]
}
static get defaultBadgeData() {
return { label: 'homebrew cask' }
}
async fetch({ cask }) {
return this._requestJson({
schema,
url: `https://formulae.brew.sh/api/cask/${cask}.json`,
})
}
async handle({ cask }) {
const data = await this.fetch({ cask })
return renderVersionBadge({ version: data.version })
}
}

View File

@@ -0,0 +1,24 @@
'use strict'
const { isVPlusTripleDottedVersion } = require('../test-validators')
const t = (module.exports = require('../tester').createServiceTester())
t.create('homebrew cask (valid)')
.get('/iterm2.json')
.expectBadge({
label: 'homebrew cask',
message: isVPlusTripleDottedVersion,
})
t.create('homebrew cask (valid)')
.get('/iterm2.json')
.intercept(nock =>
nock('https://formulae.brew.sh')
.get('/api/cask/iterm2.json')
.reply(200, { version: '3.3.6' })
)
.expectBadge({ label: 'homebrew cask', message: 'v3.3.6' })
t.create('homebrew cask (not found)')
.get('/not-a-package.json')
.expectBadge({ label: 'homebrew cask', message: 'not found' })