2019-05-13 12:42:43 +00:00
|
|
|
import got from '../libs/got'
|
2020-05-08 15:43:18 +00:00
|
|
|
import { millify, version, versionColor } from '../libs/utils'
|
2019-11-18 15:52:07 +00:00
|
|
|
import { createBadgenHandler, PathArgs } from '../libs/create-badgen-handler'
|
2019-05-13 12:42:43 +00:00
|
|
|
|
2020-05-20 08:11:51 +00:00
|
|
|
const HOMEBREW_API_URL = 'https://formulae.brew.sh/api/'
|
|
|
|
|
|
|
|
const client = got.extend({ prefixUrl: HOMEBREW_API_URL })
|
|
|
|
|
2019-11-18 15:52:07 +00:00
|
|
|
export default createBadgenHandler({
|
2019-05-26 04:40:32 +00:00
|
|
|
title: 'Homebrew',
|
2019-05-26 04:38:30 +00:00
|
|
|
examples: {
|
|
|
|
'/homebrew/v/fish': 'version',
|
2020-05-08 15:43:18 +00:00
|
|
|
'/homebrew/v/cake': 'version',
|
|
|
|
'/homebrew/dm/fish': 'monthly downloads',
|
|
|
|
'/homebrew/dy/fish': 'yearly downloads',
|
|
|
|
'/homebrew/cask/v/atom': 'version',
|
2020-12-19 04:07:53 +00:00
|
|
|
'/homebrew/cask/v/whichspace': 'version',
|
|
|
|
'/homebrew/cask/dm/atom': 'monthly downloads',
|
|
|
|
'/homebrew/cask/dy/atom': 'yearly downloads'
|
2019-11-18 15:52:07 +00:00
|
|
|
},
|
|
|
|
handlers: {
|
2020-05-08 15:43:18 +00:00
|
|
|
'/homebrew/:topic<v|dm|dy>/:pkg': handler,
|
|
|
|
'/homebrew/:type<formula|cask>/:topic<v|dm|dy>/:pkg': handler
|
2019-05-26 04:38:30 +00:00
|
|
|
}
|
2019-11-18 15:52:07 +00:00
|
|
|
})
|
2019-05-13 12:42:43 +00:00
|
|
|
|
2020-05-08 15:43:18 +00:00
|
|
|
async function handler ({ type = 'formula', topic, pkg }: PathArgs) {
|
|
|
|
const {
|
|
|
|
analytics,
|
|
|
|
versions,
|
|
|
|
version:ver = versions.stable
|
2020-05-20 08:11:51 +00:00
|
|
|
} = await client.get(`${type}/${pkg}.json`).json<any>()
|
2019-05-13 12:42:43 +00:00
|
|
|
|
2020-05-08 15:43:18 +00:00
|
|
|
switch (topic) {
|
|
|
|
case 'v':
|
|
|
|
return {
|
|
|
|
subject: type === 'cask' ? 'homebrew cask' : 'homebrew',
|
|
|
|
status: version(ver),
|
|
|
|
color: versionColor(ver)
|
|
|
|
}
|
|
|
|
case 'dm':
|
|
|
|
return {
|
|
|
|
subject: 'downloads',
|
|
|
|
status: millify(analytics.install['30d'][pkg]) + '/month',
|
|
|
|
color: 'green'
|
|
|
|
}
|
|
|
|
case 'dy':
|
|
|
|
return {
|
|
|
|
subject: 'downloads',
|
|
|
|
status: millify(analytics.install['365d'][pkg]) + '/year',
|
|
|
|
color: 'green'
|
|
|
|
}
|
2019-05-13 12:42:43 +00:00
|
|
|
}
|
|
|
|
}
|