Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions src/__tests__/unit/main.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
9 changes: 8 additions & 1 deletion src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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,
Expand Down
Loading