スポンサーリンク

CakePHP4の自作プラグイン(サブモジュール)の名前を変えるメモ

CakePHP4で開発してるのに自作プラグインのサブモジュール名に「Cake3」という文字が含まれてるのをどうにかしようとしたときのメモです。

対象のプラグインについて

プラグイン名について以下の通り変更します。

現在変更予定
Cake3ApiGeneratorApiGenerator

プラグインのソースをリファクタリング

作業用にプラグインを単体でクローンして作業用のブランチ作成

git clone https://github.com/imo-tikuwa/cakephp-api-generator.git
cd cakephp-api-generator
git branch
* master
git checkout -b rename-plugin-basename

プラグイン内のソースをVSCodeで置換。
次のような感じでプラグイン名以外にもハイフンケースとスネークケースの記述を置換。

置換前置換後
Cake3ApiGeneratorApiGenerator
cake3-api-generatorapi-generator
cake3_api_generatorapi_generator

git add --all
git commit -m "rename plugin basename"
git push --set-upstream origin rename-plugin-basename

プラグインをサブモジュールとして使用する開発用リポジトリの作業

プラグイン開発用のリポジトリで作業。
まずサブモジュールとして使用中のリネーム前のリポジトリをいったん削除。

git checkout -b rename-cake3-api-generator
cd cake_app/plugins
git submodule deinit Cake3ApiGenerator
git rm Cake3ApiGenerator

プラグイン開発用のリポジトリで以下の置換を実施。VSCodeで置換しちゃまずそうなファイルが候補に出るので、除外するファイルに「.git」と指定しておいた方が良いかも。

置換対象にvendor以下のリソース(cakephp-plugins.php、autoload_static.phpなど)も見つかりました。これはcomposer install後にフックされてるコマンド?によって生成&更新されるみたいですが、一応まとめて置換しておきました。

また、別のプラグイン(サブモジュール)の中で「Cake3ApiGenerator」という文字を使用してる箇所があったため、そこも置換する必要がありました。

# 別のプラグイン(サブモジュール)の修正をいったんプッシュ
cd cake_app\plugins\Cake3AdminBaker\
git add -A
git commit -m " Cake3ApiGenerator→ApiGeneratorのリプレイスを実施"
git push

# プラグイン開発用のリポジトリで置換した差分をコミット
cd ../../..
git add README.md
git add cake_app\composer.json
git add cake_app\src\Application.php
git add cake_app\tests\TestCase\ApplicationTest.php

# 別のプラグイン(サブモジュール)の差異をステージング
git add cake_app\plugins\Cake3AdminBaker

ここまで進めてVSCode上ではこんな感じ。

一旦コミット&プッシュ

git commit -m " Cake3ApiGenerator→ApiGeneratorのリプレイスを実施"
git push --set-upstream origin rename-cake3-api-generator

プッシュ後、ApiGeneratorプラグインをサブモジュールとして追加。
masterへのマージはまだしていないので、ブランチ名を指定しています。

cd cake_app\plugins\
git submodule add -b rename-plugin-basename https://github.com/imo-tikuwa/cakephp-api-generator.git ApiGenerator

動作確認

ApiGeneratorプラグインをサブモジュールとして開発用リポジトリにプッシュする前に、ビルトインサーバー上で動作確認。

..\bin\cake.bat server
①入力画面
②確認画面
③完了画面
④生成したAPIに直アクセス

動作確認後の作業

今回リネームを実施したサブモジュールのリポジトリはrename-plugin-basenameというブランチで作業していたのでmasterにマージするPRを作成、マージ。

マージ後、以下のコマンドでプラグイン開発用のリポジトリも差分をコミット&プッシュ。

cd cake_app\plugins\ApiGenerator\
git checkout master
git pull

cd ../
git add ApiGenerator
git commit -m "Cake3ApiGenerator→ApiGeneratorのリネームが正常終了した状態"

.gitmodulesの差分にbranch名が入ってて気になるので削除。

cd ../../
git add .gitmodules
git commit -m ".gitmodulesからブランチ名を削除"
git push

その後、開発用のリポジトリもrename-cake3-api-generatorというブランチ名で作業していたのでmasterにマージするPRを作成、マージしました。

参考

Rename a git submodule – Stack Overflow
gitサブモジュールの追加/削除/再追加 – Qiita

その他

すべての作業が無事に完了したと思いきや、リポジトリ直下の.git/modules以下に削除した古いサブモジュールのディレクトリが残ってました(;o;

消していいのかわかんない。

9/28追記
git submodule update –recursiveを実行したところ、.git以下のCake3ApiGeneratorディレクトリだけ更新日時が変わらなかったので削除しました。

タイトルとURLをコピーしました