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 formatter
pull/99/head
Jacob Müller 2018-08-10 14:54:56 +02:00 zatwierdzone przez Amio /
rodzic d0c20b8f4e
commit c9148a4762
12 zmienionych plików z 48 dodań i 12 usunięć

Wyświetl plik

@ -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':

Wyświetl plik

@ -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)
}
}

Wyświetl plik

@ -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':

Wyświetl plik

@ -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':

Wyświetl plik

@ -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':

Wyświetl plik

@ -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:

Wyświetl plik

@ -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'
}
}

Wyświetl plik

@ -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:

Wyświetl plik

@ -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':

Wyświetl plik

@ -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':

Wyświetl plik

@ -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':

Wyświetl plik

@ -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}`
}