From f3c7362d7c76885a88c986a417e8084ee4d68e93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dario=20Vladovi=C4=87?= Date: Mon, 18 May 2020 06:47:07 +0200 Subject: [PATCH] badge: add scoop (#387) Co-authored-by: Amio --- api/scoop.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ libs/badge-list.ts | 1 + 2 files changed, 43 insertions(+) create mode 100644 api/scoop.ts diff --git a/api/scoop.ts b/api/scoop.ts new file mode 100644 index 0000000..ce17da4 --- /dev/null +++ b/api/scoop.ts @@ -0,0 +1,42 @@ +import got from '../libs/got' +import { version, versionColor } from '../libs/utils' +import { createBadgenHandler, PathArgs } from '../libs/create-badgen-handler' + +const SCOOP_MAIN_BUCKET_URL = 'https://github.com/ScoopInstaller/Main/raw/master/bucket/' +const SCOOP_EXTRAS_BUCKET_URL = 'https://github.com/lukesampson/scoop-extras/raw/master/bucket/' + +export default createBadgenHandler({ + title: 'Scoop', + examples: { + '/scoop/v/1password-cli': 'version', + '/scoop/v/adb': 'version', + '/scoop/license/caddy': 'license', + '/scoop/extras/v/age': 'version', + '/scoop/extras/v/codeblocks': 'version', + '/scoop/extras/license/deluge': 'license', + }, + handlers: { + '/scoop/:topic/:app': handler, + '/scoop/:bucket/:topic/:app': handler + } +}) + +async function handler ({ bucket = 'main', topic = 'v', app }: PathArgs) { + const prefixUrl = bucket === 'extras' ? SCOOP_EXTRAS_BUCKET_URL : SCOOP_MAIN_BUCKET_URL + const { license, version:ver } = await got(`${app}.json`, { prefixUrl }).json() + + switch (topic) { + case 'v': + return { + subject: bucket === 'extras' ? 'scoop-extras' : 'scoop', + status: version(ver), + color: versionColor(ver) + } + case 'license': + return { + subject: 'license', + status: license || 'unknown', + color: 'blue' + } + } +} diff --git a/libs/badge-list.ts b/libs/badge-list.ts index 7af9b43..84f6cac 100644 --- a/libs/badge-list.ts +++ b/libs/badge-list.ts @@ -28,6 +28,7 @@ export const liveBadgeList = [ 'cocoapods', 'haxelib', 'opam', + 'scoop', // CI 'travis', 'circleci',