Skip to content

pre-commitテンプレートを複数言語対応に拡張&リポジトリ名の汎用化検討 #20

Description

@mg1986jp

※ 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。
  • 既存フックがある場合の扱いをルール化(バックアップ推奨)。

テンプレート選択ロジック(案)

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

フック内の実行対象

  • 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 に退避)。
  • テンプレート内で変更ファイルのみを対象にチェック/整形する。

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