From 5e36dc0a8f93e9d05220813839e2d27fae69f551 Mon Sep 17 00:00:00 2001 From: chris48s Date: Sat, 13 Jul 2024 14:04:22 +0100 Subject: [PATCH] deprecate [tokei] service (#9581) --- services/tokei/tokei.service.js | 95 ++++----------------------------- services/tokei/tokei.tester.js | 23 +------- 2 files changed, 13 insertions(+), 105 deletions(-) diff --git a/services/tokei/tokei.service.js b/services/tokei/tokei.service.js index e714c611e4b21..cff5049b9b052 100644 --- a/services/tokei/tokei.service.js +++ b/services/tokei/tokei.service.js @@ -1,84 +1,11 @@ -import Joi from 'joi' -import { metric } from '../text-formatters.js' -import { nonNegativeInteger } from '../validators.js' -import { BaseJsonService, pathParams } from '../index.js' - -const schema = Joi.object({ - lines: nonNegativeInteger, -}).required() - -const description = ` -The \`provider\` is the domain name of git host. -If no TLD is provided, \`.com\` will be added. -For example, setting \`gitlab\` or \`bitbucket.org\` as the -provider also works. - -Tokei will automatically count all files with a recognized extension. It will -automatically ignore files and folders in \`.ignore\` files. If you -want to ignore files or folders specifically for tokei, add them to the -\`.tokeignore\` in the root of your repository. See -[https://github.com/XAMPPRocky/tokei#excluding-folders](https://github.com/XAMPPRocky/tokei#excluding-folders) -for more info. -` - -export default class Tokei extends BaseJsonService { - static category = 'size' - - static route = { base: 'tokei/lines', pattern: ':provider/:user/:repo' } - - static openApi = { - '/tokei/lines/{provider}/{user}/{repo}': { - get: { - summary: 'Lines of code', - description, - parameters: pathParams( - { - name: 'provider', - example: 'github', - }, - { - name: 'user', - example: 'badges', - }, - { - name: 'repo', - example: 'shields', - }, - ), - }, - }, - } - - static defaultBadgeData = { - label: 'total lines', - color: 'blue', - } - - static render({ lines }) { - return { message: metric(lines) } - } - - async fetch({ provider, user, repo }) { - // This request uses the tokei-rs (https://github.com/XAMPPRocky/tokei_rs) API. - // - // By default, the API returns an svg, but when the Accept HTTP header is set to - // `application/json`, it sends json data. The `_requestJson` method - // automatically sets the Accept Header to what we need, so we don't need to - // specify it here. - // - // This behaviour of the API is "documented" here: - // https://github.com/XAMPPRocky/tokei_rs/issues/8#issuecomment-475071147 - return this._requestJson({ - schema, - url: `https://tokei.rs/b1/${provider}/${user}/${repo}`, - httpErrors: { - 400: 'repo not found', - }, - }) - } - - async handle({ provider, user, repo }) { - const { lines } = await this.fetch({ provider, user, repo }) - return this.constructor.render({ lines }) - } -} +import { deprecatedService } from '../index.js' + +export const Tokei = deprecatedService({ + category: 'size', + route: { + base: 'tokei/lines', + pattern: ':various*', + }, + label: 'tokei', + dateAdded: new Date('2023-09-17'), +}) diff --git a/services/tokei/tokei.tester.js b/services/tokei/tokei.tester.js index 5c4bb6adbf64f..faf157b0a5cbb 100644 --- a/services/tokei/tokei.tester.js +++ b/services/tokei/tokei.tester.js @@ -1,30 +1,11 @@ import { ServiceTester } from '../tester.js' -import { isMetric } from '../test-validators.js' export const t = new ServiceTester({ id: 'tokei', title: 'Tokei LOC Tests' }) t.create('GitHub LOC') .get('/lines/github/badges/shields.json') - .expectBadge({ label: 'total lines', message: isMetric }) - -t.create('GitLab LOC') - .get('/lines/gitlab/shields-ops-group/tag-test.json') - .timeout(15000) - .expectBadge({ label: 'total lines', message: isMetric }) - -t.create('GitHub LOC (with .com)') - .get('/lines/github.com/badges/shields.json') - .expectBadge({ label: 'total lines', message: isMetric }) - -t.create('GitLab LOC (with .com)') - .get('/lines/gitlab.com/shields-ops-group/tag-test.json') - .timeout(15000) - .expectBadge({ label: 'total lines', message: isMetric }) + .expectBadge({ label: 'tokei', message: 'no longer available' }) t.create('BitBucket LOC') .get('/lines/bitbucket.org/MonliH/tokei-shields-test.json') - .expectBadge({ label: 'total lines', message: isMetric }) - -t.create('Invalid Provider') - .get('/lines/example/tezos/tezos.json') - .expectBadge({ label: 'total lines', message: 'repo not found' }) + .expectBadge({ label: 'tokei', message: 'no longer available' })