docs-last-updated.yml 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. name: Docs Last Updated
  2. on:
  3. push:
  4. branches: [dev]
  5. paths:
  6. - "docs/**"
  7. - "README.md"
  8. workflow_dispatch:
  9. permissions:
  10. contents: write
  11. jobs:
  12. stamp:
  13. if: github.actor != 'github-actions[bot]'
  14. runs-on: ubuntu-latest
  15. steps:
  16. - uses: actions/checkout@v4
  17. with:
  18. fetch-depth: 0
  19. token: ${{ secrets.GITHUB_TOKEN }}
  20. - name: Update Last updated date
  21. run: |
  22. TODAY=$(date -u +%Y-%m-%d)
  23. echo "Today: $TODAY"
  24. changed=0
  25. for f in docs/*.md; do
  26. [ -f "$f" ] || continue
  27. if grep -q "Last updated" "$f"; then
  28. # replace any *Last updated: YYYY-MM-DD* or *Last updated: YYYY-MM-DD.* line
  29. sed -i -E "s/\\*Last updated: [0-9]{4}-[0-9]{2}-[0-9]{2}\\.?\\*/\\*Last updated: $TODAY.\\*/g" "$f"
  30. # also handle bare *Last updated: YYYY-MM-DD* without trailing period inside italics
  31. sed -i -E "s/\\*Last updated: [0-9]{4}-[0-9]{2}-[0-9]{2}\\*/\\*Last updated: $TODAY.\\*/g" "$f"
  32. fi
  33. done
  34. git diff --quiet && echo "no doc date changes" && exit 0
  35. git diff --stat
  36. git config user.name "github-actions[bot]"
  37. git config user.email "github-actions[bot]@users.noreply.github.com"
  38. git add docs/*.md
  39. # only commit if staged changes exist
  40. git diff --cached --quiet && exit 0
  41. git commit -m "docs: bump Last updated to $TODAY [skip ci]"
  42. git push
  43. - name: Summary
  44. run: echo "Last updated stamp checked"