diff --git a/action.yml b/action.yml index aa41ec0..8aeab67 100644 --- a/action.yml +++ b/action.yml @@ -4,6 +4,10 @@ branding: icon: align-justify color: yellow inputs: + compact-by-topic: + description: 'Generate another page with output compacted by github topics' + default: 'false' + required: false api-token: description: 'Personal API Token' required: true diff --git a/package-lock.json b/package-lock.json index c42fc8a..bf72494 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@actions/core": "^1.9.0", "@actions/exec": "^1.1.1", "ejs": "^3.1.8", - "gh-star-fetch": "^1.3.0", + "gh-star-fetch": "^1.5.0", "got": "^11.8.1", "remark": "^14.0.2", "remark-toc": "^8.0.1" @@ -3977,9 +3977,9 @@ } }, "node_modules/gh-star-fetch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/gh-star-fetch/-/gh-star-fetch-1.3.0.tgz", - "integrity": "sha512-Y+KXjioTWHGwoUI4domY86VmGXmTxfTPX05e1Uc+tGjuf0dL9tTwOlgmilEQluJ5o6sZIjxspy2ctZAP844N1Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/gh-star-fetch/-/gh-star-fetch-1.5.0.tgz", + "integrity": "sha512-sydnncz2w+r7d2aNXU/o6QeuDzY3ZHSqlNBCbTVoD39LegjW7wGKSkCndycjfXJEfu0ZqUg6lYGaWsPpXmvL5Q==", "dependencies": { "got": "^11.8.3", "parse-link-header": "^2.0.0" @@ -14515,9 +14515,9 @@ } }, "gh-star-fetch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/gh-star-fetch/-/gh-star-fetch-1.3.0.tgz", - "integrity": "sha512-Y+KXjioTWHGwoUI4domY86VmGXmTxfTPX05e1Uc+tGjuf0dL9tTwOlgmilEQluJ5o6sZIjxspy2ctZAP844N1Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/gh-star-fetch/-/gh-star-fetch-1.5.0.tgz", + "integrity": "sha512-sydnncz2w+r7d2aNXU/o6QeuDzY3ZHSqlNBCbTVoD39LegjW7wGKSkCndycjfXJEfu0ZqUg6lYGaWsPpXmvL5Q==", "requires": { "got": "^11.8.3", "parse-link-header": "^2.0.0" diff --git a/package.json b/package.json index 27835ff..5b5a861 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@actions/core": "^1.9.0", "@actions/exec": "^1.1.1", "ejs": "^3.1.8", - "gh-star-fetch": "^1.3.0", + "gh-star-fetch": "^1.5.0", "got": "^11.8.1", "remark": "^14.0.2", "remark-toc": "^8.0.1" diff --git a/src/index.ts b/src/index.ts index 23fbe91..f4249ea 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,11 @@ import path from 'path'; import * as core from '@actions/core'; import { readFile } from 'fs/promises'; -import ghStarFetch from 'gh-star-fetch'; +import ghStarFetch, { + Options, + compactByLanguage, + compactByTopic, +} from 'gh-star-fetch'; import { renderer, @@ -27,32 +31,56 @@ export async function main() { core.info("Couldn't find template file, using default"); } - const sortedByLanguages = await ghStarFetch({ + const opts: Partial = { accessToken: core.getInput('api-token', { required: true }), - compactByLanguage: true, - }); + }; - const rendered = await renderer( + const results = await ghStarFetch(opts); + + const files = []; + + const compactedByLanguage = compactByLanguage(results); + const byLanguage = await renderer( { username: REPO_USERNAME, - stars: Object.entries(sortedByLanguages), + stars: Object.entries(compactedByLanguage), updatedAt: Date.now(), }, template ); - const markdown: string = await generateMd(rendered); - - await git.pushNewFiles([ + files.push( { filename: MARKDOWN_FILENAME, - data: markdown, + data: await generateMd(byLanguage), }, { filename: 'data.json', - data: JSON.stringify(sortedByLanguages, null, 2), - }, - ]); + data: JSON.stringify(compactedByLanguage, null, 2), + } + ); + + const shouldCompactByTopic = + !!core.getInput('compact-by-topic') || + core.getInput('compact-by-topic') === 'true'; + + if (shouldCompactByTopic) { + const compactedByTopic = compactByTopic(results); + const byTopic = await renderer( + { + username: REPO_USERNAME, + stars: Object.entries(compactedByTopic), + updatedAt: Date.now(), + }, + template + ); + files.push({ + filename: 'TOPICS.md', + data: await generateMd(byTopic), + }); + } + + await git.pushNewFiles(files); } export async function run(): Promise {