Commit b9029d0
Changed files (18)
src
all-badges
abc-commit
bad-words
chore-commit
covid-19
dead-commit
delorean
fix-commit
github-anniversary
mass-delete-commit
my-badges-contributor
revert-revert-commit
star-gazer
stars
time-of-commit
yeti
collect
src/all-badges/abc-commit/abc-commit.ts
@@ -1,7 +1,7 @@
import { Commit, Repo } from '../../collect/collect.js'
import { BadgePresenter, ID, Present } from '../../badges.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
tiers = true
badges = [
src/all-badges/bad-words/bad-words.ts
@@ -2,7 +2,7 @@ import { Commit, Repo } from '../../collect/collect.js'
import { Present, BadgePresenter } from '../../badges.js'
import { linkCommit } from '../../utils.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
badges = ['bad-words'] as const
present: Present = (data, grant) => {
src/all-badges/chore-commit/chore-commit.ts
@@ -1,6 +1,6 @@
import { BadgePresenter, Present } from '../../badges.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
badges = ['chore-commit'] as const
tiers = false
src/all-badges/covid-19/covid-19.ts
@@ -1,6 +1,6 @@
import { BadgePresenter, Present } from '../../badges.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
badges = ['covid-19'] as const
present: Present = (data, grant) => {
src/all-badges/dead-commit/dead-commit.ts
@@ -1,7 +1,7 @@
import { Commit, Repo } from '../../collect/collect.js'
import { BadgePresenter, Present } from '../../badges.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
badges = ['dead-commit'] as const
present: Present = (data, grant) => {
src/all-badges/delorean/delorean.ts
@@ -1,6 +1,6 @@
import { BadgePresenter, Present } from '../../badges.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
badges = ['delorean'] as const
present: Present = (data, grant) => {
src/all-badges/fix-commit/fix-commit.ts
@@ -1,7 +1,7 @@
import { BadgePresenter, Grant, Present } from '../../badges.js'
import { Commit } from '../../collect/collect.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
tiers = true
badges = [
src/all-badges/github-anniversary/github-anniversary.ts
@@ -1,6 +1,6 @@
import { BadgePresenter, Present } from '../../badges.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
badges = [
'github-anniversary-5',
src/all-badges/mass-delete-commit/mass-delete-commit.ts
@@ -1,6 +1,6 @@
import { BadgePresenter, Present } from '../../badges.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
tiers = true
badges = ['mass-delete-commit-10k', 'mass-delete-commit'] as const
src/all-badges/my-badges-contributor/my-badges-contributor.ts
@@ -1,7 +1,7 @@
import { Pull } from '../../collect/collect.js'
import { BadgePresenter, Present } from '../../badges.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
badges = ['my-badges-contributor'] as const
present: Present = (data, grant) => {
src/all-badges/revert-revert-commit/revert-revert-commit.ts
@@ -1,7 +1,7 @@
import { Commit } from '../../collect/collect.js'
import { BadgePresenter, Present } from '../../badges.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
badges = ['revert-revert-commit'] as const
present: Present = (data, grant) => {
src/all-badges/star-gazer/star-gazer.ts
@@ -1,6 +1,6 @@
import { BadgePresenter, Present } from '../../badges.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
badges = ['star-gazer'] as const
present: Present = (data, grant) => {
src/all-badges/stars/stars.ts
@@ -1,6 +1,6 @@
import { BadgePresenter, Present } from '../../badges.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
tiers = true
badges = [
src/all-badges/time-of-commit/time-of-commit.ts
@@ -1,7 +1,7 @@
import { BadgePresenter, Present } from '../../badges.js'
import { Commit, User } from '../../collect/collect.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
badges = ['midnight-commits', 'morning-commits', 'evening-commits'] as const
present: Present = (data, grant) => {
src/all-badges/yeti/yeti.ts
@@ -1,6 +1,6 @@
import { BadgePresenter, Present } from '../../badges.js'
-export default new (class extends BadgePresenter {
+export default new (class implements BadgePresenter {
url = new URL(import.meta.url)
badges = ['yeti'] as const
present: Present = (data, grant) => {
src/collect/collect.ts
@@ -3,7 +3,7 @@ import { Endpoints } from '@octokit/types'
import { PullsQuery } from './pulls.js'
import { CommitsQuery } from './commits.js'
import fs from 'node:fs'
-import { fileURLToPath } from 'url'
+import { fileURLToPath } from 'node:url'
import { IssuesQuery } from './issues.js'
import { UserQuery } from './user.js'
src/badges.ts
@@ -1,5 +1,5 @@
import { allBadges } from './all-badges/index.js'
-import { Data, Commit, Pull } from './collect/collect.js'
+import { Commit, Data, Pull } from './collect/collect.js'
import { expectType, linkCommit, linkPull } from './utils.js'
import { fileURLToPath } from 'url'
import * as path from 'path'
@@ -12,11 +12,11 @@ for (const {
export type ID = (typeof allBadges)[number]['default']['badges'][number]
-export abstract class BadgePresenter {
- abstract url: URL
- tiers = false
- abstract badges: unknown
- abstract present: Present
+export interface BadgePresenter {
+ url: URL
+ tiers?: boolean
+ badges: unknown
+ present: Present
}
export type Grant = ReturnType<typeof badgeCollection>
@@ -33,7 +33,7 @@ export type Badge = {
export function badgeCollection(
userBadges: Badge[],
- presenter: (typeof allBadges)[number]['default'],
+ presenter: BadgePresenter,
compact: boolean,
) {
const indexes = new Map(userBadges.map((x, i) => [x.id, i]))
@@ -48,15 +48,17 @@ export function badgeCollection(
image: `https://github.com/my-badges/my-badges/blob/master/src/all-badges/${baseDir}/${id}.png?raw=true`,
}
- if (compact) {
+ if (compact && presenter.tiers) {
let found = false
- for (const badgeId of presenter.badges) {
+ for (const badgeId of presenter.badges as ID[]) {
if (indexes.has(badgeId)) {
+ found = true
const index = indexes.get(badgeId)!
const alreadyExistingBadge = userBadges[index]
- if (alreadyExistingBadge.tier < badge.tier) {
+ if (alreadyExistingBadge.tier <= badge.tier) {
userBadges[index] = badge
}
+ break
}
}
if (!found) {
src/main.ts
@@ -108,7 +108,6 @@ void (async function main() {
)
presenter.present(data, grant)
}
- console.log('Badges', userBadges)
if (pickBadges.length > 0) {
userBadges = userBadges.filter((x) => pickBadges.includes(x.id))
@@ -117,6 +116,8 @@ void (async function main() {
userBadges = userBadges.filter((x) => !omitBadges.includes(x.id))
}
+ console.log(JSON.stringify(userBadges, null, 2))
+
if (owner && repo) {
await updateBadges(
octokit,