94 lines
2.9 KiB
YAML
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""
|
|
new_author_badge = f""
|
|
|
|
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 |