※ lib_php-fixed で課題管理します。元の issue は gild-corporate-wordpress 側に誤登録したためクローズ予定です。
背景・目的
lib_php-fixed は PHP 専用で pre-commit/pre-push に phpcs/phpcbf を仕込む仕組みを提供しているが、JS や Docker 専用リポでも同様のフック配布をしたい。
- Packagist 経由で配布し、composer install/update 時に .git/hooks/pre-commit を自動で最新化する運用を各リポで足並み揃えて回したい。
既存との差分と課題
- 現状: PHP専用テンプレート1種のみ(pre-commit/pre-push)、リポジトリ名も PHP 固定。
- 課題: プロジェクト種別ごとにテンプレートを切り替える仕組みがない。リポ名も汎用化を検討したい。
やりたいこと
- テンプレートを複数用意(例: local-ci-php / local-ci-js / local-ci-docker)。
- プロジェクト種別を判定して .git/hooks/pre-commit に適切なテンプレートをコピーする仕組みを追加。
- composer の post-install-cmd / post-update-cmd で自動コピー& chmod +x。
- 既存フックがある場合の扱いをルール化(バックアップ推奨)。
テンプレート選択ロジック(案)
- リポ直下に
.local-ci-template があればその値(php/js/docker)を採用。
- 無ければ自動判定: composer.json があれば php / package.json があれば js / 両方ある場合は php > js(要相談で変更可)/ どちらも無ければスキップ+警告。
- 判定不可・衝突時はコピーしないで警告のみ。
フック内の実行対象
git diff --cached --name-only で変更ファイルに限定してチェック/整形。
- 自動整形(phpcbf/prettier 等)を行う場合、整形後に
git add -u を実行するかはテンプレート側で定義。
リポジトリ名の検討
- PHP 固有の名前になっているため、汎用テンプレート配布に拡張するならリポ名変更 or 新規リポ移行を検討。例:
lib_local-ci-hooks 等。
エラーハンドリング
- 判定不可/衝突時は警告を出して処理スキップ(非0終了させない)。
- コピー失敗時はメッセージ表示。
受け入れ条件
- Packagist 経由インストールで post-install/post-update が走り、テンプレートが .git/hooks/pre-commit にコピーされる。
- テンプレート選択ロジックが動作(php-only / js-only / 両方 / 何もなしをテスト)。
- 既存フックがある場合、定義した方針通りに扱われる(例: pre-commit.bak に退避)。
- テンプレート内で変更ファイルのみを対象にチェック/整形する。
※ lib_php-fixed で課題管理します。元の issue は gild-corporate-wordpress 側に誤登録したためクローズ予定です。
背景・目的
lib_php-fixedは PHP 専用で pre-commit/pre-push に phpcs/phpcbf を仕込む仕組みを提供しているが、JS や Docker 専用リポでも同様のフック配布をしたい。既存との差分と課題
やりたいこと
テンプレート選択ロジック(案)
.local-ci-templateがあればその値(php/js/docker)を採用。フック内の実行対象
git diff --cached --name-onlyで変更ファイルに限定してチェック/整形。git add -uを実行するかはテンプレート側で定義。リポジトリ名の検討
lib_local-ci-hooks等。エラーハンドリング
受け入れ条件