静的ファイルの変更時に自動で日付を更新

現在このサイトの記事は、下記のような Front Matter を付与した Markdown ファイルを HTML に変換している。

---
title: 
slug: u9hirnhjm9
date: 2026-07-07T17:17:50+09:00
lastmod: 2026-07-08T01:59:18+09:00
draft: false
---

このうち最終更新日である lastmod は今まで手作業で入力していたが、大変なので git commit の直前で勝手に入るようにした。

.git/hooks/pre-commit に以下のように書いた。--diff-filter=ACMR は、Add, Copy, Modified, Rename で起動させるため。

#!/bin/bash

for FILE in $(git diff --cached --name-only --diff-filter=ACMR | grep '^_posts/.*\.md$'); do
  NOW=`date -u '+%Y-%m-%dT%H:%M:%S+09:00' -d '+9 hours'`

  if grep -q "^lastmod:" "$FILE"; then
    sed -i "s/^lastmod:.*$/lastmod: $NOW/" "$FILE"
  else
    sed -i "/^date:/a lastmod: $NOW" "$FILE"
  fi

  git add "$FILE"
  echo "Updated lastmod: $FILE"
done

pre-commit に実行権限を付与。

$ chmod +x .git/hooks/pre-commit