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'],
|
['name', '/rubygems/n/rails'],
|
||||||
['platform', '/rubygems/p/rails'],
|
['platform', '/rubygems/p/rails'],
|
||||||
],
|
],
|
||||||
'apm': [
|
apm: [
|
||||||
['version', '/apm/v/linter'],
|
['version', '/apm/v/linter'],
|
||||||
['license', '/apm/license/linter'],
|
['license', '/apm/license/linter'],
|
||||||
['downloads', '/apm/dl/linter'],
|
['downloads', '/apm/dl/linter'],
|
||||||
['stars', '/apm/stars/linter'],
|
['stars', '/apm/stars/linter'],
|
||||||
],
|
],
|
||||||
|
hackage: [
|
||||||
|
['version', '/hackage/v/abt'],
|
||||||
|
['version', '/hackage/v/Cabal'],
|
||||||
|
['license', '/hackage/license/Cabal']
|
||||||
|
],
|
||||||
/* CIs */
|
/* CIs */
|
||||||
travis: [
|
travis: [
|
||||||
['build', '/travis/babel/babel'],
|
['build', '/travis/babel/babel'],
|
||||||
|
|
|
@ -12,6 +12,7 @@ module.exports = {
|
||||||
'david': require('./david.js'),
|
'david': require('./david.js'),
|
||||||
'docker': require('./docker.js'),
|
'docker': require('./docker.js'),
|
||||||
'github': require('./github.js'),
|
'github': require('./github.js'),
|
||||||
|
'hackage': require('./hackage.js'),
|
||||||
'homebrew': require('./homebrew.js'),
|
'homebrew': require('./homebrew.js'),
|
||||||
'npm': require('./npm.js'),
|
'npm': require('./npm.js'),
|
||||||
'nuget': require('./nuget.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