feat: adds compacted by topics

This commit is contained in:
GitHub Actions
2022-07-06 10:11:14 +02:00
parent bf78ae9dce
commit 9dfa1f3dae
4 changed files with 53 additions and 21 deletions

View File

@@ -4,6 +4,10 @@ branding:
icon: align-justify icon: align-justify
color: yellow color: yellow
inputs: inputs:
compact-by-topic:
description: 'Generate another page with output compacted by github topics'
default: 'false'
required: false
api-token: api-token:
description: 'Personal API Token' description: 'Personal API Token'
required: true required: true

14
package-lock.json generated
View File

@@ -12,7 +12,7 @@
"@actions/core": "^1.8.2", "@actions/core": "^1.8.2",
"@actions/exec": "^1.1.1", "@actions/exec": "^1.1.1",
"ejs": "^3.1.8", "ejs": "^3.1.8",
"gh-star-fetch": "^1.3.0", "gh-star-fetch": "^1.5.0",
"got": "^11.8.1", "got": "^11.8.1",
"remark": "^14.0.2", "remark": "^14.0.2",
"remark-toc": "^8.0.1" "remark-toc": "^8.0.1"
@@ -3856,9 +3856,9 @@
} }
}, },
"node_modules/gh-star-fetch": { "node_modules/gh-star-fetch": {
"version": "1.3.0", "version": "1.5.0",
"resolved": "https://registry.npmjs.org/gh-star-fetch/-/gh-star-fetch-1.3.0.tgz", "resolved": "https://registry.npmjs.org/gh-star-fetch/-/gh-star-fetch-1.5.0.tgz",
"integrity": "sha512-Y+KXjioTWHGwoUI4domY86VmGXmTxfTPX05e1Uc+tGjuf0dL9tTwOlgmilEQluJ5o6sZIjxspy2ctZAP844N1Q==", "integrity": "sha512-sydnncz2w+r7d2aNXU/o6QeuDzY3ZHSqlNBCbTVoD39LegjW7wGKSkCndycjfXJEfu0ZqUg6lYGaWsPpXmvL5Q==",
"dependencies": { "dependencies": {
"got": "^11.8.3", "got": "^11.8.3",
"parse-link-header": "^2.0.0" "parse-link-header": "^2.0.0"
@@ -14325,9 +14325,9 @@
} }
}, },
"gh-star-fetch": { "gh-star-fetch": {
"version": "1.3.0", "version": "1.5.0",
"resolved": "https://registry.npmjs.org/gh-star-fetch/-/gh-star-fetch-1.3.0.tgz", "resolved": "https://registry.npmjs.org/gh-star-fetch/-/gh-star-fetch-1.5.0.tgz",
"integrity": "sha512-Y+KXjioTWHGwoUI4domY86VmGXmTxfTPX05e1Uc+tGjuf0dL9tTwOlgmilEQluJ5o6sZIjxspy2ctZAP844N1Q==", "integrity": "sha512-sydnncz2w+r7d2aNXU/o6QeuDzY3ZHSqlNBCbTVoD39LegjW7wGKSkCndycjfXJEfu0ZqUg6lYGaWsPpXmvL5Q==",
"requires": { "requires": {
"got": "^11.8.3", "got": "^11.8.3",
"parse-link-header": "^2.0.0" "parse-link-header": "^2.0.0"

View File

@@ -56,7 +56,7 @@
"@actions/core": "^1.8.2", "@actions/core": "^1.8.2",
"@actions/exec": "^1.1.1", "@actions/exec": "^1.1.1",
"ejs": "^3.1.8", "ejs": "^3.1.8",
"gh-star-fetch": "^1.3.0", "gh-star-fetch": "^1.5.0",
"got": "^11.8.1", "got": "^11.8.1",
"remark": "^14.0.2", "remark": "^14.0.2",
"remark-toc": "^8.0.1" "remark-toc": "^8.0.1"

View File

@@ -1,7 +1,11 @@
import path from 'path'; import path from 'path';
import * as core from '@actions/core'; import * as core from '@actions/core';
import { readFile } from 'fs/promises'; import { readFile } from 'fs/promises';
import ghStarFetch from 'gh-star-fetch'; import ghStarFetch, {
Options,
compactByLanguage,
compactByTopic,
} from 'gh-star-fetch';
import { import {
renderer, renderer,
@@ -27,32 +31,56 @@ export async function main() {
core.info("Couldn't find template file, using default"); core.info("Couldn't find template file, using default");
} }
const sortedByLanguages = await ghStarFetch({ const opts: Partial<Options> = {
accessToken: core.getInput('api-token', { required: true }), 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, username: REPO_USERNAME,
stars: Object.entries(sortedByLanguages), stars: Object.entries(compactedByLanguage),
updatedAt: Date.now(), updatedAt: Date.now(),
}, },
template template
); );
const markdown: string = await generateMd(rendered); files.push(
await git.pushNewFiles([
{ {
filename: MARKDOWN_FILENAME, filename: MARKDOWN_FILENAME,
data: markdown, data: await generateMd(byLanguage),
}, },
{ {
filename: 'data.json', 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<void> { export async function run(): Promise<void> {