From ae8fc88a6ca4161cec88f759a64aa9b8646739e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dario=20Vladovi=C4=87?= Date: Thu, 17 Dec 2020 03:19:50 +0000 Subject: [PATCH] feat: add MELPA service --- api/melpa.ts | 29 +++++++++++++++++++++++++++++ libs/badge-list.ts | 1 + 2 files changed, 30 insertions(+) create mode 100644 api/melpa.ts diff --git a/api/melpa.ts b/api/melpa.ts new file mode 100644 index 0000000..1e3ae66 --- /dev/null +++ b/api/melpa.ts @@ -0,0 +1,29 @@ +import got from '../libs/got' +import { version, versionColor } from '../libs/utils' +import { createBadgenHandler, PathArgs } from '../libs/create-badgen-handler' + +export default createBadgenHandler({ + title: 'MELPA', + examples: { + '/melpa/v/magit': 'version' + }, + handlers: { + '/melpa/:topic/:pkg': handler + } +}) + +async function handler ({ topic, pkg }: PathArgs) { + const badgeUrl = `https://melpa.org/packages/${pkg}-badge.svg` + const svg = await got(badgeUrl).text() + const title = svg.match(/([^<]+)<\//i)?.[1].trim() + const ver = title?.split(':')?.[1] + + switch (topic) { + case 'v': + return { + subject: 'melpa', + status: version(ver), + color: versionColor(ver) + } + } +} diff --git a/libs/badge-list.ts b/libs/badge-list.ts index f5613f6..1261311 100644 --- a/libs/badge-list.ts +++ b/libs/badge-list.ts @@ -25,6 +25,7 @@ export const liveBadgeList = [ 'apm', 'hackage', 'vs-marketplace', + 'melpa', 'maven', 'cocoapods', 'haxelib',