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
	
	 Jacob Müller
						Jacob Müller