From 3f55c30137cd1911a176e97acf6db400e52e3027 Mon Sep 17 00:00:00 2001 From: Fox George Penguin <5038030+olstenlarck@users.noreply.github.com> Date: Fri, 20 Jul 2018 17:29:45 +0300 Subject: [PATCH] feat: start github live badges (#15) * feat: start github live badges Signed-off-by: Charlike Mike Reagent * fix: sort keys Signed-off-by: Charlike Mike Reagent * fix: remove sort-keys rule Signed-off-by: Charlike Mike Reagent * fix: address comments - orange color on prerelease Signed-off-by: Charlike Mike Reagent --- libs/live-fns/_index.js | 3 ++- libs/live-fns/github.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 libs/live-fns/github.js diff --git a/libs/live-fns/_index.js b/libs/live-fns/_index.js index 6fab629..cfa6a25 100644 --- a/libs/live-fns/_index.js +++ b/libs/live-fns/_index.js @@ -1,10 +1,11 @@ module.exports = { - 'codecov': require('./codecov.js'), 'appveyor': require('./appveyor.js'), 'chrome-web-store': require('./chrome-web-store.js'), 'circleci': require('./circleci.js'), + 'codecov': require('./codecov.js'), 'crates': require('./crates.js'), 'david': require('./david.js'), + 'github': require('./github.js'), 'homebrew': require('./homebrew.js'), 'npm': require('./npm.js'), 'travis': require('./travis.js') diff --git a/libs/live-fns/github.js b/libs/live-fns/github.js new file mode 100644 index 0000000..2892640 --- /dev/null +++ b/libs/live-fns/github.js @@ -0,0 +1,31 @@ +const axios = require('../axios.js') + +// https://developer.github.com/v3/repos/ + +module.exports = async function (method, ...args) { + switch (method) { + case 'release': + return release('release', args) + case 'tag': + return release('tag', args) + default: + return { + subject: 'github', + status: 'unknown', + color: 'grey' + } + } +} + +async function release (topic, args) { + const endpoint = `https://api.github.com/repos/${args.join('/')}/${topic}s` + const meta = await axios.get(endpoint).then(res => res.data) + + const [first] = meta + + return { + subject: topic, + status: first.name || first.tag_name || 'unknown', + color: first.prerelease === true ? 'orange' : 'blue' + } +}