From 4eae5083108c768b57df421bfdbde720afd87597 Mon Sep 17 00:00:00 2001 From: Jos Craw Date: Fri, 3 Mar 2023 08:15:37 +1300 Subject: [PATCH] feat: changed to provide entire linguist-js options object Signed-off-by: Jos Craw --- .changeset/pink-dolls-unite.md | 2 +- plugins/linguist-backend/README.md | 9 ++++++--- plugins/linguist-backend/api-report.md | 4 ++-- .../linguist-backend/src/api/LinguistBackendApi.ts | 8 ++++---- plugins/linguist-backend/src/service/router.ts | 14 ++++++++++---- 5 files changed, 23 insertions(+), 14 deletions(-) diff --git a/.changeset/pink-dolls-unite.md b/.changeset/pink-dolls-unite.md index d3c489cd2b..aca62166b4 100644 --- a/.changeset/pink-dolls-unite.md +++ b/.changeset/pink-dolls-unite.md @@ -2,4 +2,4 @@ '@backstage/plugin-linguist-backend': patch --- -Added support for offline language data +Added support for linguist-js options. diff --git a/plugins/linguist-backend/README.md b/plugins/linguist-backend/README.md index 981cebc19e..46c067fb5a 100644 --- a/plugins/linguist-backend/README.md +++ b/plugins/linguist-backend/README.md @@ -85,12 +85,15 @@ return createRouter({ schedule: schedule, age: { days: 30 } }, { ...env }); With the `age` setup like this if the language breakdown is older than 15 days it will get regenerated. It's recommended that if you choose to use this configuration to set it to a large value - 30, 90, or 180 - as this data generally does not change drastically. -## Offline +## Linguist JS options -The default setup will pull the language data from GitHub, by setting `offline` to `true` a packaged offline version of this data is used instead. +The default setup will use the default [linguist-js](https://www.npmjs.com/package/linguist-js) options, a full list of the available options can be found [here](https://www.npmjs.com/package/linguist-js#API). ```ts -return createRouter({ schedule: schedule, offline: true }, { ...env }); +return createRouter( + { schedule: schedule, linguistJsOptions: { offline: true } }, + { ...env }, +); ``` ## Use Source Location diff --git a/plugins/linguist-backend/api-report.md b/plugins/linguist-backend/api-report.md index c1486ab3ae..8ac8b83dcd 100644 --- a/plugins/linguist-backend/api-report.md +++ b/plugins/linguist-backend/api-report.md @@ -35,7 +35,7 @@ export class LinguistBackendApi { batchSize?: number, useSourceLocation?: boolean, kind?: string[], - offline?: boolean, + linguistJsOptions?: Record, ); // (undocumented) getEntityLanguages(entityRef: string): Promise; @@ -83,7 +83,7 @@ export interface PluginOptions { // (undocumented) kind?: string[]; // (undocumented) - offline?: boolean; + linguistJsOptions?: Record; // (undocumented) schedule?: TaskScheduleDefinition; // (undocumented) diff --git a/plugins/linguist-backend/src/api/LinguistBackendApi.ts b/plugins/linguist-backend/src/api/LinguistBackendApi.ts index f58b913c2d..e0a3133255 100644 --- a/plugins/linguist-backend/src/api/LinguistBackendApi.ts +++ b/plugins/linguist-backend/src/api/LinguistBackendApi.ts @@ -57,7 +57,7 @@ export class LinguistBackendApi { private readonly batchSize?: number; private readonly useSourceLocation?: boolean; private readonly kind: string[]; - private readonly offline?: boolean; + private readonly linguistJsOptions?: Record; public constructor( logger: Logger, store: LinguistBackendStore, @@ -68,7 +68,7 @@ export class LinguistBackendApi { batchSize?: number, useSourceLocation?: boolean, kind?: string[], - offline?: boolean, + linguistJsOptions?: Record, ) { this.logger = logger; this.store = store; @@ -80,7 +80,7 @@ export class LinguistBackendApi { this.age = age; this.useSourceLocation = useSourceLocation; this.kind = kindOrDefault(kind); - this.offline = offline; + this.linguistJsOptions = linguistJsOptions; } public async getEntityLanguages(entityRef: string): Promise { @@ -193,7 +193,7 @@ export class LinguistBackendApi { const readTreeResponse = await this.urlReader.readTree(url); const dir = await readTreeResponse.dir(); - const results = await linguist(dir, { offline: this.offline }); + const results = await linguist(dir, this.linguistJsOptions); try { const totalBytes = results.languages.bytes; diff --git a/plugins/linguist-backend/src/service/router.ts b/plugins/linguist-backend/src/service/router.ts index 4a279aba7d..d10f185261 100644 --- a/plugins/linguist-backend/src/service/router.ts +++ b/plugins/linguist-backend/src/service/router.ts @@ -38,7 +38,7 @@ export interface PluginOptions { age?: HumanDuration; batchSize?: number; useSourceLocation?: boolean; - offline?: boolean; + linguistJsOptions?: Record; kind?: string[]; } @@ -58,8 +58,14 @@ export async function createRouter( pluginOptions: PluginOptions, routerOptions: RouterOptions, ): Promise { - const { schedule, age, batchSize, useSourceLocation, kind, offline } = - pluginOptions; + const { + schedule, + age, + batchSize, + useSourceLocation, + kind, + linguistJsOptions, + } = pluginOptions; const { logger, reader, database, discovery, scheduler, tokenManager } = routerOptions; @@ -80,7 +86,7 @@ export async function createRouter( batchSize, useSourceLocation, kind, - offline, + linguistJsOptions, ); if (scheduler && schedule) {