kopia lustrzana https://github.com/badgen/badgen.net
live-fns: fix up version prefixing (#98)
* live-fns: fix up version prefixing * Add version formatter util and use it for every version * Handle more edge cases in version formatterpull/99/head
rodzic
d0c20b8f4e
commit
c9148a4762
|
@ -3,6 +3,7 @@ const xml2js = require('xml2js')
|
|||
const millify = require('millify')
|
||||
const stars = require('../utils/stars.js')
|
||||
const semColor = require('../utils/sem-color.js')
|
||||
const v = require('../utils/version-formatter.js')
|
||||
|
||||
module.exports = async function (topic, ...args) {
|
||||
const endpoint = `https://services.addons.mozilla.org/en-US/firefox/api/1.5/addon/${args[0]}`
|
||||
|
@ -19,7 +20,7 @@ module.exports = async function (topic, ...args) {
|
|||
case 'v':
|
||||
return {
|
||||
subject: 'mozilla add-on',
|
||||
status: 'v' + addon.version,
|
||||
status: v(addon.version),
|
||||
color: semColor(addon.version)
|
||||
}
|
||||
case 'users':
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
const millify = require('millify')
|
||||
const axios = require('../axios.js')
|
||||
const semColor = require('../utils/sem-color.js')
|
||||
const v = require('../utils/version-formatter.js')
|
||||
|
||||
// https://atom.io/api/packages/*
|
||||
|
||||
|
@ -33,7 +34,7 @@ async function pkg (topic, args) {
|
|||
case 'version': {
|
||||
return {
|
||||
subject: `apm`,
|
||||
status: `v${meta.releases.latest}` || 'unknown',
|
||||
status: v(meta.releases.latest),
|
||||
color: semColor(meta.releases.latest)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
const webstore = require('chrome-webstore')
|
||||
const millify = require('millify')
|
||||
const stars = require('../utils/stars.js')
|
||||
const semColor = require('../utils/sem-color.js')
|
||||
const stars = require('../utils/stars.js')
|
||||
const v = require('../utils/version-formatter.js')
|
||||
|
||||
module.exports = async function (topic, ...args) {
|
||||
const meta = await webstore.detail({id: args[0]})
|
||||
|
@ -9,7 +10,7 @@ module.exports = async function (topic, ...args) {
|
|||
case 'v':
|
||||
return {
|
||||
subject: 'chrome web store',
|
||||
status: 'v' + meta.version,
|
||||
status: v(meta.version),
|
||||
color: semColor(meta.version)
|
||||
}
|
||||
case 'users':
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
const axios = require('../axios.js')
|
||||
const millify = require('millify')
|
||||
const semColor = require('../utils/sem-color.js')
|
||||
const v = require('../utils/version-formatter.js')
|
||||
|
||||
module.exports = async function (topic, pkg) {
|
||||
const endpoint = `https://crates.io/api/v1/crates/${pkg}`
|
||||
|
@ -10,7 +11,7 @@ module.exports = async function (topic, pkg) {
|
|||
case 'v':
|
||||
return {
|
||||
subject: 'crates.io',
|
||||
status: 'v' + crate.max_version,
|
||||
status: v(crate.max_version),
|
||||
color: semColor(crate.max_version)
|
||||
}
|
||||
case 'd':
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
const axios = require('../axios.js')
|
||||
const semColor = require('../utils/sem-color.js')
|
||||
const v = require('../utils/version-formatter.js')
|
||||
|
||||
module.exports = async function (topic, pkg) {
|
||||
const endpoint = `https://hackage.haskell.org/package/${pkg}/${pkg}.cabal`
|
||||
|
@ -11,7 +12,7 @@ module.exports = async function (topic, pkg) {
|
|||
case 'v':
|
||||
return {
|
||||
subject: 'hackage',
|
||||
status: 'v' + version,
|
||||
status: v(version),
|
||||
color: semColor(version)
|
||||
}
|
||||
case 'license':
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
const axios = require('../axios.js')
|
||||
const semColor = require('../utils/sem-color.js')
|
||||
const v = require('../utils/version-formatter.js')
|
||||
|
||||
module.exports = async function (topic, ...args) {
|
||||
const endpoint = `https://formulae.brew.sh/api/formula/${args[0]}.json`
|
||||
|
@ -9,7 +10,7 @@ module.exports = async function (topic, ...args) {
|
|||
case 'v':
|
||||
return {
|
||||
subject: 'homebrew',
|
||||
status: 'v' + versions.stable,
|
||||
status: v(versions.stable),
|
||||
color: semColor(versions.stable)
|
||||
}
|
||||
default:
|
||||
|
|
|
@ -2,6 +2,7 @@ const millify = require('millify')
|
|||
const cheerio = require('cheerio')
|
||||
const axios = require('../axios.js')
|
||||
const semColor = require('../utils/sem-color.js')
|
||||
const v = require('../utils/version-formatter.js')
|
||||
|
||||
// https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md
|
||||
// https://github.com/npm/registry/blob/master/docs/download-counts.md
|
||||
|
@ -55,7 +56,7 @@ async function pkg (topic, args) {
|
|||
case 'version': {
|
||||
return {
|
||||
subject: `npm${tag === 'latest' ? '' : '@' + tag}`,
|
||||
status: `v${meta.version}`,
|
||||
status: v(meta.version),
|
||||
color: tag === 'latest' ? semColor(meta.version) : 'cyan'
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
const axios = require('../axios.js')
|
||||
const semColor = require('../utils/sem-color.js')
|
||||
const v = require('../utils/version-formatter.js')
|
||||
|
||||
const pre = versions => versions.filter(v => v.includes('-'))
|
||||
const stable = versions => versions.filter(v => !v.includes('-'))
|
||||
|
@ -29,7 +30,7 @@ module.exports = async function (method, project, channel) {
|
|||
|
||||
return {
|
||||
subject: 'nuget',
|
||||
status: version ? `v${version}` : 'unknown',
|
||||
status: v(version),
|
||||
color: semColor(version)
|
||||
}
|
||||
default:
|
||||
|
|
|
@ -3,6 +3,7 @@ const millify = require('millify')
|
|||
const axios = require('../axios.js')
|
||||
const compareVersions = require('../utils/compare-versions.js')
|
||||
const semColor = require('../utils/sem-color.js')
|
||||
const v = require('../utils/version-formatter.js')
|
||||
|
||||
const pre = versions => versions.filter(v => v.includes('-') && v.indexOf('dev') !== 0)
|
||||
const stable = versions => versions.filter(v => !v.includes('-'))
|
||||
|
@ -35,7 +36,7 @@ module.exports = async function (topic, vendor, pkg, channel = 'stable') {
|
|||
|
||||
return {
|
||||
subject: 'packagist',
|
||||
status: version ? `v${version}` : 'unknown',
|
||||
status: v(version),
|
||||
color: semColor(version)
|
||||
}
|
||||
case 'dt':
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
const axios = require('../axios.js')
|
||||
const semColor = require('../utils/sem-color.js')
|
||||
const v = require('../utils/version-formatter.js')
|
||||
|
||||
module.exports = async function (topic, project) {
|
||||
const endpoint = `https://pypi.org/pypi/${project}/json`
|
||||
|
@ -9,7 +10,7 @@ module.exports = async function (topic, project) {
|
|||
case 'v':
|
||||
return {
|
||||
subject: 'pypi',
|
||||
status: 'v' + info.version,
|
||||
status: v(info.version),
|
||||
color: semColor(info.version)
|
||||
}
|
||||
case 'license':
|
||||
|
|
|
@ -2,6 +2,7 @@ const millify = require('millify')
|
|||
|
||||
const axios = require('../axios.js')
|
||||
const semColor = require('../utils/sem-color.js')
|
||||
const v = require('../utils/version-formatter.js')
|
||||
|
||||
const preConditions = ['.rc', '.beta', '-rc', '-beta']
|
||||
|
||||
|
@ -64,7 +65,7 @@ module.exports = async function (topic, gem, channel = 'stable') {
|
|||
|
||||
return {
|
||||
subject: 'rubygems',
|
||||
status: version ? `v${version}` : 'unknown',
|
||||
status: v(version),
|
||||
color: semColor(version)
|
||||
}
|
||||
case 'dt':
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
/**
|
||||
* Formats the given version.
|
||||
*
|
||||
* Examples
|
||||
* '1.2.3' => 'v1.2.3'
|
||||
* 'v1.2.3' => 'v1.2.3'
|
||||
* 'dev-master' => 'dev-master',
|
||||
* '' => 'unknown'
|
||||
* undefined => 'unknown'
|
||||
* 0 => 'v0'
|
||||
*/
|
||||
module.exports = (version) => {
|
||||
if (!version && version !== 0) {
|
||||
return 'unknown'
|
||||
}
|
||||
|
||||
version = String(version)
|
||||
|
||||
const firstChar = version.charAt(0)
|
||||
if (firstChar === 'v' || isNaN(parseInt(firstChar, 10))) {
|
||||
return version
|
||||
}
|
||||
|
||||
return `v${version}`
|
||||
}
|
Ładowanie…
Reference in New Issue