diff --git a/.gitignore b/.gitignore index d616f5e2..ac730bfb 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,9 @@ node_modules .next .meta .env +.env*.local +.env.* +next-env.d.ts # Sentry .sentryclirc diff --git a/next-env.d.ts b/next-env.d.ts deleted file mode 100644 index 19709046..00000000 --- a/next-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// -/// -import "./.next/types/routes.d.ts"; - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information. diff --git a/pages/api/github.ts b/pages/api/github.ts index e7bdb7a0..806162fa 100644 --- a/pages/api/github.ts +++ b/pages/api/github.ts @@ -48,6 +48,7 @@ export default createBadgenHandler({ '/github/last-commit/micromatch/micromatch/4.0.1': 'last commit (tag ref)', '/github/assets-dl/electron/electron': 'assets downloads for latest release', '/github/assets-dl/electron/electron/v7.0.0': 'assets downloads for a tag', + '/github/assets-dl/electron/electron/total': 'total assets downloads (recent releases)', '/github/dependents-repo/micromatch/micromatch': 'repository dependents', '/github/dependents-pkg/micromatch/micromatch': 'package dependents', '/github/dependabot/ubuntu/yaru': 'dependabot status', @@ -193,6 +194,31 @@ async function meta ({ owner, repo }: PathArgs): Promise { } async function downloads ({ owner, repo, tag }: PathArgs) { + if (tag === 'total' || tag === 'all') { + const releases = await restGithub(`repos/${owner}/${repo}/releases`, { + per_page: '30' + }) + + if (!releases || !Array.isArray(releases) || !releases.length) { + return { + subject: 'downloads', + status: 'no releases', + color: 'grey' + } + } + + const totalDownloads = releases.reduce((acc, release) => { + if (!release.assets || !release.assets.length) return acc + return acc + release.assets.reduce((sum: number, asset: any) => sum + (asset.download_count || 0), 0) + }, 0) + + return { + subject: 'downloads', + status: millify(totalDownloads), + color: 'green' + } + } + const releaseSelection = tag ? `tags/${tag}` : 'latest' const release = await restGithub(`repos/${owner}/${repo}/releases/${releaseSelection}`) @@ -204,8 +230,7 @@ async function downloads ({ owner, repo, tag }: PathArgs) { } } - - const downloadCount = release.assets.reduce((result, { download_count }) => { + const downloadCount = release.assets.reduce((result: number, { download_count }: any) => { return result + download_count }, 0) diff --git a/public/badges.md b/public/badges.md index dda3df41..2caa3b03 100644 --- a/public/badges.md +++ b/public/badges.md @@ -55,6 +55,7 @@ - [last commit (tag ref)](https://badgen.net/github/last-commit/micromatch/micromatch/4.0.1) - [assets downloads for latest release](https://badgen.net/github/assets-dl/electron/electron) - [assets downloads for a tag](https://badgen.net/github/assets-dl/electron/electron/v7.0.0) +- [total assets downloads (recent releases)](https://badgen.net/github/assets-dl/electron/electron/total) - [repository dependents](https://badgen.net/github/dependents-repo/micromatch/micromatch) - [package dependents](https://badgen.net/github/dependents-pkg/micromatch/micromatch) - [dependabot status](https://badgen.net/github/dependabot/ubuntu/yaru)