Skip to content

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

@mg1986jp

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions