forked from ThanhNguyxn/github-time-capsule
-
Notifications
You must be signed in to change notification settings - Fork 0
95 lines (78 loc) · 3.47 KB
/
Copy pathupdate-statistics.yml
File metadata and controls
95 lines (78 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
name: 📊 Update Statistics
on:
schedule:
# Runs every day at 00:00 UTC
- cron: "0 0 * * *"
# Also run when a new message is sealed
push:
paths:
- "sealed/**/*.gpg"
# Manual trigger
workflow_dispatch:
permissions:
contents: write
jobs:
update-stats:
runs-on: ubuntu-latest
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
- name: 🔢 Count sealed messages
id: count
run: |
# Count .gpg files in sealed/ folder (excluding .gitkeep)
MESSAGE_COUNT=$(find sealed -name "*.gpg" -type f | wc -l)
echo "MESSAGE_COUNT=$MESSAGE_COUNT" >> $GITHUB_OUTPUT
echo "✅ Found $MESSAGE_COUNT sealed messages"
- name: 📅 Calculate days until 2035
id: days
run: |
# Calculate days until January 1, 2035
TARGET_DATE="2035-01-01"
CURRENT_DATE=$(date +%Y-%m-%d)
# Calculate difference in days
DAYS_UNTIL=$(( ($(date -d "$TARGET_DATE" +%s) - $(date -d "$CURRENT_DATE" +%s)) / 86400 ))
echo "DAYS_UNTIL=$DAYS_UNTIL" >> $GITHUB_OUTPUT
echo "✅ Days until 2035: $DAYS_UNTIL"
- name: ✍️ Update README with new statistics
run: |
MESSAGE_COUNT="${{ steps.count.outputs.MESSAGE_COUNT }}"
DAYS_UNTIL="${{ steps.days.outputs.DAYS_UNTIL }}"
# Update Messages Sealed badge (handle both URL-encoded and plain formats)
sed -i "s/Messages-Coming%20Soon-blue/Messages-${MESSAGE_COUNT}-blue/g" README.md
sed -i "s/Messages-[0-9]*-blue/Messages-${MESSAGE_COUNT}-blue/g" README.md
# Update Days Until 2035 badge (handle both URL-encoded and plain formats)
sed -i "s/Countdown-[0-9]*%20days-orange/Countdown-${DAYS_UNTIL}%20days-orange/g" README.md
sed -i "s/Countdown-[0-9]*-orange/Countdown-${DAYS_UNTIL}-orange/g" README.md
echo "✅ Updated README.md with new statistics"
echo " - Messages Sealed: $MESSAGE_COUNT"
echo " - Days Until 2035: $DAYS_UNTIL"
- name: 📊 Check if there are changes
id: verify
run: |
if git diff --quiet README.md; then
echo "changed=false" >> $GITHUB_OUTPUT
echo "ℹ️ No changes detected"
else
echo "changed=true" >> $GITHUB_OUTPUT
echo "✅ Changes detected"
git diff README.md
fi
- name: 💾 Commit and push changes
if: steps.verify.outputs.changed == 'true'
run: |
git config user.name "Statistics Bot"
git config user.email "thanhnguyentuan2007@gmail.com"
git add README.md
git commit -m "📊 Auto-update statistics: ${{ steps.count.outputs.MESSAGE_COUNT }} messages, ${{ steps.days.outputs.DAYS_UNTIL }} days until 2035"
git push origin main
echo "✅ Pushed changes to repository"
- name: 🎉 Summary
run: |
echo "### 📊 Statistics Update Complete!" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Metric | Value |" >> $GITHUB_STEP_SUMMARY
echo "|--------|-------|" >> $GITHUB_STEP_SUMMARY
echo "| 🔒 Messages Sealed | ${{ steps.count.outputs.MESSAGE_COUNT }} |" >> $GITHUB_STEP_SUMMARY
echo "| ⏰ Days Until 2035 | ${{ steps.days.outputs.DAYS_UNTIL }} |" >> $GITHUB_STEP_SUMMARY
echo "| 📝 Changes Made | ${{ steps.verify.outputs.changed }} |" >> $GITHUB_STEP_SUMMARY