Commit 4919afb

Anton Medvedev <anton@medv.io>
2023-10-11 22:53:29
Add github-anniversary badges
1 parent 8aa5fbc
src/all-badges/github-anniversary/github-anniversary-10.png
Binary file
src/all-badges/github-anniversary/github-anniversary-15.png
Binary file
src/all-badges/github-anniversary/github-anniversary-20.png
Binary file
src/all-badges/github-anniversary/github-anniversary-5.png
Binary file
src/all-badges/github-anniversary/github-anniversary.ts
@@ -0,0 +1,31 @@
+import { BadgePresenter, Present } from '../../badges.js'
+
+export default new (class implements BadgePresenter {
+  url = new URL(import.meta.url)
+  badges = [
+    'github-anniversary-5',
+    'github-anniversary-10',
+    'github-anniversary-15',
+    'github-anniversary-20',
+  ] as const
+  present: Present = (data, grant) => {
+    const date = new Date(data.user.createdAt)
+    const now = new Date()
+    const years = now.getFullYear() - date.getFullYear()
+    const months = now.getMonth() - date.getMonth()
+    const days = now.getDate() - date.getDate()
+    const totalDays = years * 365 + months * 30 + days
+    if (totalDays >= 5 * 365) {
+      grant('github-anniversary-5', `I joined GitHub 5 years ago.`)
+    }
+    if (totalDays >= 10 * 365) {
+      grant('github-anniversary-10', `I joined GitHub 10 years ago.`)
+    }
+    if (totalDays >= 15 * 365) {
+      grant('github-anniversary-15', `I joined GitHub 15 years ago.`)
+    }
+    if (totalDays >= 20 * 365) {
+      grant('github-anniversary-20', `I joined GitHub 20 years ago.`)
+    }
+  }
+})()
src/all-badges/index.ts
@@ -2,6 +2,7 @@ export const allBadges = [
   await import('./abc-commit/abc-commit.js'),
   await import('./stars/stars.js'),
   await import('./time-of-commit/time-of-commit.js'),
+  await import('./github-anniversary/github-anniversary.js'),
   await import('./yeti/yeti.js'),
   await import('./star-gazer/star-gazer.js'),
   await import('./dead-commit/dead-commit.js'),