※この機能自体は gild-corporate-wordpress で実装するものではなく、課題管理の場所がないため暫定的にここでトラッキングします。
背景・目的
- 各リポジトリの pre-commit に phpcs や lint を仕込むと人によってブレるため、テンプレートを一元管理して配布したい。
- Packagist 経由で配布し、composer install/update 時に .git/hooks/pre-commit を自動で最新化する運用にしたい。
既存リポジトリとの関係
gild-inc/lib_php-fixed が既に存在し、PHP向けに pre-commit/pre-push を配布し、phpcs/phpcbf を実行する仕組みを提供している。
- ただし PHP専用・テンプレート1種のみ。今回の課題はプロジェクト種別ごとにテンプレートを切り替える(PHP/JS/Dockerなど)仕組みを追加すること。
スコープ
- 新規リポジトリ(名前は後決め)を作成し、pre-commit テンプレートと配布スクリプトを管理。
- Packagist に登録する。
- 利用側は composer 依存を追加するだけで、post-install/post-update で .git/hooks/pre-commit がコピーされる。
テンプレート初期対応範囲
- php 用(phpcs/phpcbf など)
- js 用(eslint/prettier などを想定)
- docker 用(必要なら簡易 lint。不要なら空でも可)
- テンプレート例: local-ci-php / local-ci-js / local-ci-docker
テンプレート選択ロジック(実装指針)
- .local-ci-template があれば、その内容(php/js/docker)を採用。
- 無ければ自動判定: composer.json があれば php / package.json があれば js / 両方ある場合は php > js(要相談で変更可)/ どちらも無ければスキップして警告。
- 判定できない・衝突時はコピーせず警告のみ。
フックの配置方法
- composer.json の post-install-cmd / post-update-cmd で .git/hooks/pre-commit にテンプレートをコピーし、chmod +x を付与。
- 既存 .git/hooks/pre-commit がある場合は上書きせず pre-commit.bak に退避(推奨)。上書き方針にするなら明記して実装。
フック内の実行対象
- git diff --cached --name-only で変更ファイルのみに絞る(php/js いずれも)。
- 自動整形(phpcbf/prettier 等)を行う場合、整形後に git add -u を実行するかはテンプレート側で定義。
エラーハンドリング
- 判定不可/衝突時は警告を出して処理スキップ(非0終了させない)。
- コピーに失敗した場合はメッセージを表示。
受け入れ条件
- Packagist 登録済みで、composer install/update 時に post-install/post-update が走り、テンプレートが .git/hooks/pre-commit にコピーされる。
- 選択ロジックに従ってテンプレートが選ばれること(php-only / js-only / 両方 / 何もなしのケースをテスト)。
- 既存フックがある場合、定義した方針通りに扱われる(例: バックアップに退避)。
- テンプレート内で変更ファイルのみを対象にチェック/整形する。
※この機能自体は gild-corporate-wordpress で実装するものではなく、課題管理の場所がないため暫定的にここでトラッキングします。
背景・目的
既存リポジトリとの関係
gild-inc/lib_php-fixedが既に存在し、PHP向けに pre-commit/pre-push を配布し、phpcs/phpcbf を実行する仕組みを提供している。スコープ
テンプレート初期対応範囲
テンプレート選択ロジック(実装指針)
フックの配置方法
フック内の実行対象
エラーハンドリング
受け入れ条件