kopia lustrzana https://github.com/badgen/badgen.net
live-fns: add hackage #92
rodzic
b622854ead
commit
f634dac440
|
@ -177,12 +177,17 @@ Available query params:
|
|||
['name', '/rubygems/n/rails'],
|
||||
['platform', '/rubygems/p/rails'],
|
||||
],
|
||||
'apm': [
|
||||
apm: [
|
||||
['version', '/apm/v/linter'],
|
||||
['license', '/apm/license/linter'],
|
||||
['downloads', '/apm/dl/linter'],
|
||||
['stars', '/apm/stars/linter'],
|
||||
],
|
||||
hackage: [
|
||||
['version', '/hackage/v/abt'],
|
||||
['version', '/hackage/v/Cabal'],
|
||||
['license', '/hackage/license/Cabal']
|
||||
],
|
||||
/* CIs */
|
||||
travis: [
|
||||
['build', '/travis/babel/babel'],
|
||||
|
|
|
@ -12,6 +12,7 @@ module.exports = {
|
|||
'david': require('./david.js'),
|
||||
'docker': require('./docker.js'),
|
||||
'github': require('./github.js'),
|
||||
'hackage': require('./hackage.js'),
|
||||
'homebrew': require('./homebrew.js'),
|
||||
'npm': require('./npm.js'),
|
||||
'nuget': require('./nuget.js'),
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
const axios = require('../axios.js')
|
||||
const semColor = require('../utils/sem-color.js')
|
||||
|
||||
module.exports = async function (topic, pkg) {
|
||||
const endpoint = `https://hackage.haskell.org/package/${pkg}/${pkg}.cabal`
|
||||
|
||||
const cabal = await axios.get(endpoint).then(res => res.data)
|
||||
const { version, license } = parseCabalFile(cabal)
|
||||
|
||||
switch (topic) {
|
||||
case 'v':
|
||||
return {
|
||||
subject: 'cabal',
|
||||
status: 'v' + version,
|
||||
color: semColor(version)
|
||||
}
|
||||
case 'license':
|
||||
return {
|
||||
subject: 'license',
|
||||
status: license,
|
||||
color: 'blue'
|
||||
}
|
||||
default:
|
||||
return {
|
||||
status: 'unknown topic'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Naive implementation (only parse meta blocks)
|
||||
function parseCabalFile (raw) {
|
||||
return raw.match(/[\w-]+:.+\S+$/gm).reduce((accu, line) => {
|
||||
const [key, value] = line.split(':')
|
||||
accu[key] = value.trim()
|
||||
return accu
|
||||
}, {})
|
||||
}
|
Ładowanie…
Reference in New Issue