feat: deprecated /lgtm badges

pull/607/head
Amio 2023-06-19 15:51:39 +08:00 zatwierdzone przez Amio Jin
rodzic d9626275eb
commit 2d94a53fa4
7 zmienionych plików z 37 dodań i 108 usunięć

Wyświetl plik

@ -48,7 +48,6 @@ At the time of badgen.now.sh's reveal, it had only four live badges as demonstra
[![Contributors][contributors-src]][contributors-href]
[![Dependencies][dependencies-src]][dependencies-href]
[![Maintainability][maintainability-src]][maintainability-href]
[![Code Quality][codequality-src]][codequality-href]
[![Docker image][docker-src]][docker-href]
**start dev server**
@ -123,8 +122,6 @@ Support this project by donation, help Badgen continue and evolving!
[dependencies-href]: https://david-dm.org/badgen/badgen.net
[maintainability-src]: https://badgen.net/codeclimate/maintainability/badgen/badgen.net
[maintainability-href]: https://codeclimate.com/github/badgen/badgen.net
[codequality-src]: https://badgen.net/lgtm/grade/javascript/g/badgen/badgen.net
[codequality-href]: https://lgtm.com/projects/g/badgen/badgen.net/context:javascript
[contributors-src]: https://badgen.net/github/contributors/badgen/badgen.net
[contributors-href]: https://github.com/badgen/badgen.net/graphs/contributors
[docker-src]: https://badgen.net/badge/docker/amio%2Fbadgen?label&icon=docker

Wyświetl plik

@ -1,100 +0,0 @@
import millify from 'millify'
import got from '../libs/got'
import { createBadgenHandler, PathArgs } from '../libs/create-badgen-handler'
// https://lgtm.com/help/lgtm/api/api-v1
const LGTM_API_URL = 'https://lgtm.com/api/v1.0/'
const client = got.extend({ prefixUrl: LGTM_API_URL })
export default createBadgenHandler({
title: 'LGTM',
examples: {
'/lgtm/langs/g/apache/cloudstack/java': 'langs',
'/lgtm/alerts/g/apache/cloudstack': 'alerts',
'/lgtm/lines/g/apache/cloudstack/java': 'lines (java)',
'/lgtm/grade/g/apache/cloudstack/java': 'grade (java)',
'/lgtm/grade/g/apache/cloudstack': 'grade (auto)',
'/lgtm/grade/g/systemd/systemd': 'grade (auto)',
'/lgtm/grade/bitbucket/wegtam/bitbucket-youtrack-broker': 'grade (auto)',
'/lgtm/grade/gitlab/nekokatt/hikari': 'grade (auto)',
},
handlers: {
'/lgtm/:topic<alerts|grade|lines|langs>/:provider<g|github|bitbucket|gitlab>/:owner/:name/:lang?': handler,
'/lgtm/:topic<grade>/:lang/:provider<g|github|bitbucket|gitlab>/:owner/:name': handler, // deprecated
}
})
async function handler ({ topic, provider, owner, name, lang }: PathArgs) {
provider = {
github: 'g',
bitbucket: 'b',
gitlab: 'gl'
}[provider] || provider
// https://lgtm.com/help/lgtm/api/api-v1#LGTM-API-specification-Projects
const data = await client.get(`projects/${provider}/${owner}/${name}`).json<any>()
const { language, alerts, lines, grade } = detailsByLang(data, lang)
const langLabel = langLabelOverrides[language] || language
switch (topic) {
case 'alerts':
return {
subject: `alerts: ${langLabel}`,
status: millify(alerts),
color: alerts === 0 ? 'green' : 'yellow'
}
case 'grade':
return {
subject: `code quality: ${langLabel}`,
status: grade,
color: gradeColors[grade] || 'grey'
}
case 'lines':
const showLines = lang ? lines : data.languages.reduce((accu, curr) => {
return accu + curr.lines
}, 0)
return {
subject: lang ? `lines: ${langLabel}` : 'lines',
status: millify(showLines),
color: 'blue'
}
case 'langs':
const langs = data.languages
.sort((a, b) => b.lines - a.lines)
.map(x => langLabelOverrides[x.language] || x.language)
.join(' | ')
return {
subject: 'languages',
status: langs,
color: 'blue'
}
}
}
const detailsByLang = (data, lang) => {
const found = lang && data.languages.find(x => x.language === lang)
if (found) {
return found
} else {
// find main lang with most sloc
return data.languages.reduce((accu, curr) => {
return curr.lines > accu.lines ? curr : accu
})
}
}
const langLabelOverrides = {
cpp: 'c/c++',
csharp: 'c#',
javascript: 'js/ts'
}
const gradeColors = {
'A+': 'green',
'A': '9C0',
'B': 'A4A61D',
'C': 'yellow',
'D': 'orange'
}

Wyświetl plik

@ -48,7 +48,6 @@ export const liveBadgeList = [
'azure-pipelines',
// quality & metrics
'snyk',
'lgtm',
'deepscan',
'uptime-robot',
'badgesize',

Wyświetl plik

@ -53,6 +53,7 @@ const nextConfig = {
'/xo',
// discontinued
'/apm',
'/lgtm',
]
badgeApis.forEach(badge => {

Wyświetl plik

@ -4,6 +4,8 @@ const help = `
## Discontinued
Read all about GitHub [Sunsetting Atom](https://github.blog/2022-06-08-sunsetting-atom/).
For alternative service, you may use <a href="/ppm">/ppm</a> instead.
`
export default createBadgenHandler({

34
pages/api/lgtm.ts 100644
Wyświetl plik

@ -0,0 +1,34 @@
import { createBadgenHandler, PathArgs } from '../../libs/create-badgen-handler-next'
const help = `
## Discontinued
Read all about GitHub [The next step for LGTM.com: GitHub code scanning!](https://github.blog/2022-08-15-the-next-step-for-lgtm-com-github-code-scanning/).
`
export default createBadgenHandler({
title: 'LGTM',
examples: {
'/lgtm/langs/g/apache/cloudstack/java': 'langs',
'/lgtm/alerts/g/apache/cloudstack': 'alerts',
'/lgtm/lines/g/apache/cloudstack/java': 'lines (java)',
'/lgtm/grade/g/apache/cloudstack/java': 'grade (java)',
'/lgtm/grade/g/apache/cloudstack': 'grade (auto)',
'/lgtm/grade/g/systemd/systemd': 'grade (auto)',
'/lgtm/grade/bitbucket/wegtam/bitbucket-youtrack-broker': 'grade (auto)',
'/lgtm/grade/gitlab/nekokatt/hikari': 'grade (auto)',
},
handlers: {
'/lgtm/:topic<alerts|grade|lines|langs>/:provider<g|github|bitbucket|gitlab>/:owner/:name/:lang?': handler,
'/lgtm/:topic<grade>/:lang/:provider<g|github|bitbucket|gitlab>/:owner/:name': handler,
},
help: help
})
async function handler ({ topic, provider, owner, name, lang }: PathArgs): Promise<any> {
return {
subject: 'lgtm',
status: 'discontinued',
color: 'grey'
}
}

Wyświetl plik

@ -130,10 +130,6 @@
"source": "/keybase/:match*",
"destination": "https://v2022.badgen.net/keybase/:match*"
},
{
"source": "/lgtm/:match*",
"destination": "https://v2022.badgen.net/lgtm/:match*"
},
{
"source": "/liberapay/:match*",
"destination": "https://v2022.badgen.net/liberapay/:match*"