From 53034c1d7a5aaa73fbb38fd9da7253a5d6274fda Mon Sep 17 00:00:00 2001 From: jjijon7000 Date: Wed, 15 Jul 2026 15:40:07 -0700 Subject: [PATCH] change that introduces fix to issue 93 --- src/__tests__/unit/main.test.ts | 22 ++++++++++++++++++++++ src/main.ts | 9 ++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/__tests__/unit/main.test.ts b/src/__tests__/unit/main.test.ts index 475666be..4fc554d2 100644 --- a/src/__tests__/unit/main.test.ts +++ b/src/__tests__/unit/main.test.ts @@ -54,6 +54,28 @@ describe("getMetaData", () => { expect(result.feedbackMechanism).toContain("/issues"); }); + it("preserves existing languages over GitHub-detected languages", async () => { + const deps = createMockDeps(); + const helpers = createHelpers(deps); + + const existing = { + ...validCodeJSON, + languages: ["TypeScript", "Markdown"], + } as any; + const result = await getMetaData(helpers, deps, existing); + + expect(result.languages).toEqual(["TypeScript", "Markdown"]); + }); + + it("falls back to GitHub-detected languages when none exist", async () => { + const deps = createMockDeps(); + const helpers = createHelpers(deps); + + const result = await getMetaData(helpers, deps, null); + + expect(result.languages).toEqual(["TypeScript", "JavaScript"]); + }); + it("sets Archival status when isArchived", async () => { const deps = createMockDeps({ isArchived: true }); const helpers = createHelpers(deps); diff --git a/src/main.ts b/src/main.ts index 496e5729..8b9f87d2 100644 --- a/src/main.ts +++ b/src/main.ts @@ -112,6 +112,13 @@ async function getMetaData( ? partialCodeJSON.description : existingCodeJSON?.description || ""; + // preserve manually curated languages when they already exist in code.json, + // and only fall back to GitHub detected languages for new repositories. + const languages = + existingCodeJSON?.languages && existingCodeJSON.languages.length > 0 + ? existingCodeJSON.languages + : partialCodeJSON.languages; + // only update tags if we have new ones from GitHub Topics, otherwise keep existing const shouldUpdateTags = partialCodeJSON.tags && partialCodeJSON.tags.length > 0; @@ -155,7 +162,7 @@ async function getMetaData( repositoryURL: partialCodeJSON.repositoryURL, repositoryVisibility: partialCodeJSON.repositoryVisibility, laborHours: partialCodeJSON.laborHours, - languages: partialCodeJSON.languages, + languages: languages, reuseFrequency: { forks: partialCodeJSON.reuseFrequency?.forks ?? 0, clones: existingCodeJSON?.reuseFrequency?.clones ?? 0,