kopia lustrzana https://github.com/badgen/badgen.net
live-fns: add RubyGems support (#79)
* feat: rubygems support * style: resolve spacing issuespull/82/head
rodzic
bb61879d9d
commit
d4e67ff629
|
@ -156,6 +156,15 @@ Available query params:
|
||||||
['github issues', '/packagist/ghi/monolog/monolog'],
|
['github issues', '/packagist/ghi/monolog/monolog'],
|
||||||
['language', '/packagist/lang/monolog/monolog'],
|
['language', '/packagist/lang/monolog/monolog'],
|
||||||
],
|
],
|
||||||
|
rubygems: [
|
||||||
|
['version (stable)', '/rubygems/v/rails'],
|
||||||
|
['version (pre)', '/rubygems/v/rails/pre'],
|
||||||
|
['version (latest)', '/rubygems/v/rails/latest'],
|
||||||
|
['total downloads', '/rubygems/dt/rails'],
|
||||||
|
['version downloads', '/rubygems/dv/rails'],
|
||||||
|
['name', '/rubygems/n/rails'],
|
||||||
|
['platform', '/rubygems/p/rails'],
|
||||||
|
],
|
||||||
/* CIs */
|
/* CIs */
|
||||||
travis: [
|
travis: [
|
||||||
['build', '/travis/babel/babel'],
|
['build', '/travis/babel/babel'],
|
||||||
|
|
|
@ -18,6 +18,7 @@ module.exports = {
|
||||||
'packagephobia': require('./packagephobia.js'),
|
'packagephobia': require('./packagephobia.js'),
|
||||||
'packagist': require('./packagist.js'),
|
'packagist': require('./packagist.js'),
|
||||||
'pypi': require('./pypi.js'),
|
'pypi': require('./pypi.js'),
|
||||||
|
'rubygems': require('./rubygems.js'),
|
||||||
'runkit': require('./runkit.js'),
|
'runkit': require('./runkit.js'),
|
||||||
'travis': require('./travis.js'),
|
'travis': require('./travis.js'),
|
||||||
'uptime-robot': require('./uptime-robot.js')
|
'uptime-robot': require('./uptime-robot.js')
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
const millify = require('millify')
|
||||||
|
|
||||||
|
const axios = require('../axios.js')
|
||||||
|
const semColor = require('../utils/sem-color.js')
|
||||||
|
|
||||||
|
const preConditions = ['.rc', '.beta', '-rc', '-beta']
|
||||||
|
|
||||||
|
const pre = versions => versions.filter(v => {
|
||||||
|
for (let condition of preConditions) {
|
||||||
|
if (!v.includes(condition)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
|
||||||
|
const stable = versions => versions.filter(v => {
|
||||||
|
for (let condition of preConditions) {
|
||||||
|
if (v.includes(condition)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
|
||||||
|
const latest = versions => versions.length > 0 && versions.slice(-1)[0]
|
||||||
|
|
||||||
|
const request = async endpoint => {
|
||||||
|
return axios.get(`https://rubygems.org/api/v1/${endpoint}.json`).then(res => res.data)
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = async function (topic, gem, channel = 'stable') {
|
||||||
|
let response
|
||||||
|
|
||||||
|
if (topic !== 'v') {
|
||||||
|
response = await request(`gems/${gem}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (topic) {
|
||||||
|
case 'v':
|
||||||
|
response = await request(`versions/${gem}`)
|
||||||
|
|
||||||
|
const versions = Object
|
||||||
|
.values(response)
|
||||||
|
.map(value => value.number)
|
||||||
|
.reverse()
|
||||||
|
|
||||||
|
let version = ''
|
||||||
|
|
||||||
|
switch (channel) {
|
||||||
|
case 'latest':
|
||||||
|
version = latest(versions)
|
||||||
|
break
|
||||||
|
case 'pre':
|
||||||
|
version = latest(pre(versions))
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
version = latest(stable(versions))
|
||||||
|
}
|
||||||
|
|
||||||
|
version = version || latest(versions)
|
||||||
|
|
||||||
|
return {
|
||||||
|
subject: 'rubygems',
|
||||||
|
status: version || 'unknown',
|
||||||
|
color: semColor(version)
|
||||||
|
}
|
||||||
|
case 'dt':
|
||||||
|
return {
|
||||||
|
subject: 'downloads',
|
||||||
|
status: millify(response.downloads),
|
||||||
|
color: 'green'
|
||||||
|
}
|
||||||
|
case 'dv':
|
||||||
|
return {
|
||||||
|
subject: 'downloads',
|
||||||
|
status: millify(response.version_downloads) + '/version',
|
||||||
|
color: 'green'
|
||||||
|
}
|
||||||
|
case 'n':
|
||||||
|
return {
|
||||||
|
subject: 'rubygems',
|
||||||
|
status: response.name,
|
||||||
|
color: 'green'
|
||||||
|
}
|
||||||
|
case 'p':
|
||||||
|
return {
|
||||||
|
subject: 'platform',
|
||||||
|
status: response.platform,
|
||||||
|
color: 'green'
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return {
|
||||||
|
subject: 'rubygems',
|
||||||
|
status: 'unknown',
|
||||||
|
color: 'grey'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Ładowanie…
Reference in New Issue