2026-04-22 20:57:19 +07:00

94 lines
2.9 KiB
YAML

name: Update README Badge
on:
push:
branches: ["**"]
jobs:
update-badge:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Update README badges
run: |
python3 << 'EOF'
import re
import subprocess
from datetime import datetime, timezone, timedelta
# Ambil info dari git log
author = subprocess.check_output(
["git", "log", "-1", "--format=%ae"],
text=True
).strip()
# Ambil actor dari env (GitHub username)
import os
actor = os.environ.get("GITHUB_ACTOR", "unknown")
# Waktu commit terakhir dalam WIB (UTC+7)
ts = subprocess.check_output(
["git", "log", "-1", "--format=%ct"],
text=True
).strip()
wib = datetime.fromtimestamp(int(ts), tz=timezone(timedelta(hours=7)))
time_str = wib.strftime("%d/%m/%Y %H:%M WIB")
# Format untuk shields.io badge
badge_time = time_str.replace(" ", "_").replace("/", "%2F").replace(":", "%3A")
badge_author = actor.replace("-", "--")
profile_url = f"https://github.com/{actor}"
# Badge markdown yang bersih
new_time_badge = f"![Last Updated](https://img.shields.io/badge/Last_Updated-{badge_time}-blue?style=for-the-badge)"
new_author_badge = f"![Author](https://img.shields.io/badge/By-{badge_author}-brightgreen?style=for-the-badge)"
with open("README.md", "r", encoding="utf-8") as f:
content = f.read()
# Replace Last Updated badge
content = re.sub(
r'!\[Last Updated\]\(https://img\.shields\.io/badge/Last_Updated-[^)]+\)',
new_time_badge,
content
)
# Replace Author badge (dengan atau tanpa link)
content = re.sub(
r'\[!\[Author\]\(https://img\.shields\.io/badge/By-[^)]+\)\]\([^)]+\)',
new_author_badge,
content
)
# Fallback: tanpa link wrapper
content = re.sub(
r'!\[Author\]\(https://img\.shields\.io/badge/By-[^)]+\)',
new_author_badge,
content
)
with open("README.md", "w", encoding="utf-8") as f:
f.write(content)
print(f"Updated: {time_str} | Author: {actor}")
EOF
env:
GITHUB_ACTOR: ${{ github.actor }}
- name: Commit updated README
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
if git diff --quiet README.md; then
echo "No changes, skipping."
else
git add README.md
git commit -m "chore: update badge [skip ci]"
git push
fi