Commit ce165d4
Changed files (6)
src/all-badges/index.ts
@@ -15,5 +15,3 @@ export const allBadges = [
await import('./delorean/delorean.js'),
await import('./covid-19/covid-19.js'),
] as const
-
-export const names = allBadges.flatMap(({ default: { badges } }) => badges)
src/badges.ts
@@ -34,21 +34,12 @@ export type Badge = {
export function badgeCollection(
userBadges: Badge[],
presenter: (typeof allBadges)[number]['default'],
- pickBadges: string[],
- omitBadges: string[],
compact: boolean,
) {
const indexes = new Map(userBadges.map((x, i) => [x.id, i]))
const baseDir = path.basename(path.dirname(fileURLToPath(presenter.url)))
return function grant(id: ID, desc: string) {
- // if (!pickBadges.includes(id) || omitBadges.includes(id)) {
- // if (indexes.has(id)) {
- // badges.splice(indexes.get(id)!, 1)
- // }
- // return voidGrant
- // }
-
const badge: Badge = {
id,
tier: 0,
src/main.ts
@@ -6,7 +6,7 @@ import { Octokit, RequestError } from 'octokit'
import { retry } from '@octokit/plugin-retry'
import { throttling } from '@octokit/plugin-throttling'
import { collect, Data } from './collect/collect.js'
-import { allBadges, names } from './all-badges/index.js'
+import { allBadges } from './all-badges/index.js'
import { Badge, badgeCollection } from './badges.js'
import { updateReadme } from './update-readme.js'
import { updateBadges } from './update-badges.js'
@@ -29,7 +29,7 @@ void (async function main() {
compact,
} = argv
const [owner, repo] = repository?.split('/', 2) || [username, username]
- const pickBadges = pick ? pick.split(',') : names
+ const pickBadges = pick ? pick.split(',') : []
const omitBadges = omit ? omit.split(',') : []
const MyOctokit = Octokit.plugin(retry, throttling)
@@ -104,14 +104,19 @@ void (async function main() {
const grant = badgeCollection(
userBadges,
presenter,
- pickBadges,
- omitBadges,
compact,
)
presenter.present(data, grant)
}
console.log('Badges', userBadges)
+ if (pickBadges.length > 0) {
+ userBadges = userBadges.filter((x) => pickBadges.includes(x.id))
+ }
+ if (omitBadges.length > 0) {
+ userBadges = userBadges.filter((x) => !omitBadges.includes(x.id))
+ }
+
if (owner && repo) {
await updateBadges(
octokit,
test/badges.test.ts
@@ -1,74 +0,0 @@
-import * as assert from 'node:assert'
-import { describe, it } from 'node:test'
-import { allBadges, names } from '../src/all-badges/index.js'
-import { Badge, badgeCollection } from '../src/badges.js'
-import abcPresenter from '../src/all-badges/abc-commit/abc-commit.js'
-
-describe('badges', () => {
- it('exposes all badges presenters', () => {
- const expected = [
- 'a-commit',
- 'ab-commit',
- 'abc-commit',
- 'abcd-commit',
- 'abcde-commit',
- 'abcdef-commit',
- 'stars-100',
- 'stars-500',
- 'stars-1000',
- 'stars-2000',
- 'stars-5000',
- 'stars-10000',
- 'stars-20000',
- 'midnight-commits',
- 'morning-commits',
- 'evening-commits',
- 'yeti',
- 'star-gazer',
- 'dead-commit',
- 'bad-words',
- 'mass-delete-commit',
- 'mass-delete-commit-10k',
- 'revert-revert-commit',
- 'my-badges-contributor',
- 'fix-2',
- 'fix-3',
- 'fix-4',
- 'fix-5',
- 'fix-6',
- 'fix-6+',
- 'chore-commit',
- 'delorean',
- 'covid-19',
- ]
-
- assert.deepEqual(names.sort(), expected.sort())
- })
-
- it('grant respects pick and omit params', () => {
- const badges: Badge[] = []
- const presenter = abcPresenter
- const pickBadges = ['a-commit', 'ab-commit', 'abc-commit', 'abcd-commit']
- const omitBadges = ['ab-commit', 'abc-commit']
- const grant = badgeCollection(badges, presenter.url, pickBadges, omitBadges)
-
- abcPresenter.badges.forEach((badge) => grant(badge, 'test'))
-
- assert.deepEqual(badges, [
- {
- id: 'abcd-commit',
- desc: 'test',
- body: '',
- image:
- 'https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/abcd-commit.png?raw=true',
- },
- {
- id: 'a-commit',
- desc: 'test',
- body: '',
- image:
- 'https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/a-commit.png?raw=true',
- },
- ])
- })
-})
test/stars.test.ts
@@ -9,9 +9,8 @@ describe('stars', () => {
const badges: Badge[] = []
const grant = badgeCollection(
badges,
- starsPresenter.url,
- [...starsPresenter.badges],
- [],
+ starsPresenter,
+ true,
)
const data: Data = {
user: {} as Data['user'],
test/update-readme.test.ts
@@ -4,7 +4,6 @@ import { generateReadme } from '../src/update-readme.js'
import type { Badge } from '../src/badges.js'
import abcPresenter from '../src/all-badges/abc-commit/abc-commit.js'
import { badgeCollection } from '../src/badges.js'
-import { names } from '../src/all-badges/index.js'
describe('generateReadme()', () => {
it('injects badges to md contents', () => {
@@ -14,12 +13,12 @@ describe('generateReadme()', () => {
`
const badges: Badge[] = []
const presenter = abcPresenter
- const grant = badgeCollection(badges, presenter.url, names, [])
+ const grant = badgeCollection(badges, presenter, false)
abcPresenter.badges.forEach((badge) => grant(badge, 'test'))
assert.equal(badges.length, 6)
- const contents1 = generateReadme(readme, badges, 64, true)
+ const contents1 = generateReadme(readme, badges, 64)
assert.equal(
contents1,
`
@@ -31,20 +30,33 @@ describe('generateReadme()', () => {
`,
)
+ })
+
+ it('compact', () => {
+ const readme = `
+<!-- my-badges start -->
+<!-- my-badges end -->
+`
+ const badges: Badge[] = []
+ const presenter = abcPresenter
+ const grant = badgeCollection(badges, presenter, true)
+
+ abcPresenter.badges.forEach((badge) => grant(badge, 'test'))
+ assert.equal(badges.length, 6)
- const contents2 = generateReadme(readme, badges, 64, false)
+ const contents2 = generateReadme(readme, badges, 64)
assert.equal(
contents2,
`
<!-- my-badges start -->
<h4><a href="https://github.com/my-badges/my-badges">My Badges</a></h4>
-<a href="my-badges/abcdef-commit.md"><img src="https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/abcdef-commit.png?raw=true" alt="test" title="test" width="64"></a>
-<a href="my-badges/abcde-commit.md"><img src="https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/abcde-commit.png?raw=true" alt="test" title="test" width="64"></a>
-<a href="my-badges/abcd-commit.md"><img src="https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/abcd-commit.png?raw=true" alt="test" title="test" width="64"></a>
-<a href="my-badges/abc-commit.md"><img src="https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/abc-commit.png?raw=true" alt="test" title="test" width="64"></a>
-<a href="my-badges/ab-commit.md"><img src="https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/ab-commit.png?raw=true" alt="test" title="test" width="64"></a>
<a href="my-badges/a-commit.md"><img src="https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/a-commit.png?raw=true" alt="test" title="test" width="64"></a>
+<a href="my-badges/ab-commit.md"><img src="https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/ab-commit.png?raw=true" alt="test" title="test" width="64"></a>
+<a href="my-badges/abc-commit.md"><img src="https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/abc-commit.png?raw=true" alt="test" title="test" width="64"></a>
+<a href="my-badges/abcd-commit.md"><img src="https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/abcd-commit.png?raw=true" alt="test" title="test" width="64"></a>
+<a href="my-badges/abcde-commit.md"><img src="https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/abcde-commit.png?raw=true" alt="test" title="test" width="64"></a>
+<a href="my-badges/abcdef-commit.md"><img src="https://github.com/my-badges/my-badges/blob/master/src/all-badges/abc-commit/abcdef-commit.png?raw=true" alt="test" title="test" width="64"></a>
<!-- my-badges end -->
`,