Files
ghstats/.github/workflows/demo.yml
T
tiennm99 d39f41e901 chore(readme): mirror profile layout in preview, demo uses Monday start
- Project README preview section collapses the two side-by-side tables into
  one centred table matching tiennm99/tiennm99's stats table (row order
  identical to the per-theme demo pages).
- demo.yml now renders with -start-of-week monday so the gallery showcases
  the new flag and stays visually consistent with the author profile.
2026-04-21 21:18:39 +07:00

121 lines
4.1 KiB
YAML

name: Demo
on:
push:
branches: [main]
paths-ignore:
- "demo/**"
- "**.md"
- "LICENSE"
workflow_dispatch:
permissions:
contents: write
concurrency:
group: demo
cancel-in-progress: true
jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: "1.26"
cache: true
- name: Build ghstats
run: go build -trimpath -ldflags="-s -w" -o ghstats .
- name: Render every card for every theme
env:
GITHUB_TOKEN: ${{ secrets.GHSTATS_TOKEN }}
run: |
rm -rf demo
mkdir -p demo
./ghstats \
-user "${{ github.repository_owner }}" \
-themes all \
-tz Asia/Saigon \
-start-of-week monday \
-out demo
- name: Write demo READMEs (index + per-theme)
env:
OWNER: ${{ github.repository_owner }}
REPO: ${{ github.repository }}
run: |
themes=$(./ghstats -list-themes)
# Lightweight index so readers don't have to load ~975 images at once.
{
echo "# ghstats demo gallery"
echo
echo "Every card rendered for [\`$OWNER\`](https://github.com/$OWNER) in every supported theme. Click a theme to open its gallery page — each page embeds 15 SVGs, so only the theme you're reviewing is fetched."
echo
echo "Auto-generated by [\`.github/workflows/demo.yml\`](../.github/workflows/demo.yml) on each push to \`main\`. Do not edit by hand."
echo
echo "## Themes"
echo
for theme in $themes; do
dir="demo/$theme"
[ -d "$dir" ] || continue
echo "- [\`$theme\`](./$theme/README.md)"
done
} > demo/README.md
# Per-theme page mirrors the author profile README table layout at
# tiennm99/tiennm99 — singletons stacked two-per-row, streak spans
# the full width, then the four last-year/all-time pairs sit in
# consecutive rows under a shared header.
for theme in $themes; do
dir="demo/$theme"
[ -d "$dir" ] || continue
out="$dir/README.md"
cell() {
local name="$1"
printf '<td><img src="./%s.svg" alt="%s" /></td>' "$name" "$name"
}
row_pair() {
printf '<tr>'
cell "$1"
cell "$2"
printf '</tr>\n'
}
row_span() {
printf '<tr><td colspan="2" align="center"><img src="./%s.svg" alt="%s" /></td></tr>\n' "$1" "$1"
}
{
printf '# ghstats — %s\n\n' "$theme"
printf '[← back to index](../README.md)\n\n'
printf 'Rendered for [`%s`](https://github.com/%s). 15 SVGs laid out to ' "$OWNER" "$OWNER"
printf 'match the author profile README table.\n\n'
printf '<div align="center">\n\n<table>\n'
row_pair profile-details stats
row_pair repos-per-language top-starred-repos
row_pair contributions-by-year contributions-heatmap
row_span streak
printf '<tr><th>Last year</th><th>All time</th></tr>\n'
row_pair most-commit-language most-commit-language-all-time
row_pair contributions contributions-all-time
row_pair productive-weekday productive-weekday-all-time
row_pair productive-time productive-time-all-time
printf '</table>\n\n</div>\n'
} > "$out"
done
- name: Commit demo back to main
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add demo
if git diff --cached --quiet; then
echo "No demo changes to commit."
exit 0
fi
git commit -m "chore(demo): regenerate gallery"
git push origin HEAD:${{ github.ref_name }}