Skip to content

Packagist経由で配布するpre-commitテンプレート管理リポジトリを作成(PHP/JS/Docker対応) #19

Description

@mg1986jp

※この機能自体は 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

テンプレート選択ロジック(実装指針)

  1. .local-ci-template があれば、その内容(php/js/docker)を採用。
  2. 無ければ自動判定: composer.json があれば php / package.json があれば js / 両方ある場合は php > js(要相談で変更可)/ どちらも無ければスキップして警告。
  3. 判定できない・衝突時はコピーせず警告のみ。

フックの配置方法

  • 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 / 両方 / 何もなしのケースをテスト)。
  • 既存フックがある場合、定義した方針通りに扱われる(例: バックアップに退避)。
  • テンプレート内で変更ファイルのみを対象にチェック/整形する。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions