Why?
とある既存の CPAN module に修正を加える必要あり、PullReq を作成して送ったところ、
自分でアップロードしてみたらと言われ、アップロードを試み、結果たくさんの反省点があったので、
一から自分で作った module をアップロードすることにしました。
cpanモジュールにpullreqを送る → 無事にmergeしてもらう → 自分でcpanあげてもいいんですよ?と言われる → pause id持ってなかった… → 申請したけど登録には時間かかるらしい → イマココ
— カワウソ (@omohayui) March 13, 2019
Process
Step1: What should I make as a module?
perlnewmod - 新しいモジュールを配布するには - perldoc.jp
とりあえず、CPANアップロードのリベンジをしたいという思いで、以前実装したコードを module に切り出してしまったので、
ここに記載あるように「必要性の議論」はできていないです。(ごめんなさい)
作成したのは、FCM の API v1 向け Client です。
必要だったのは FCM の API Client というより OAuth 2.0 アクセストークンを使った Google API Client でした。
ServiceAccount の json ファイルをそのまま使ってやりたいことをできるものが当時見つからず。
Go で書かれている google api client のソースコードを読んで perl に置き換えることにしたのです。
Step2: Create a module
今回、 Minilla というオーサリングツールを使いました。
% minil new WWW-FCM-HTTP-V1
するだけで、アップロードまでに必要なものは勝手に作ってくれます。
% ls -l WWW-FCM-HTTP-V1 Build.PL Changes LICENSE META.json README.md cpanfile lib/ minil.toml t/
lib/ と t/ ディレクトリにそれぞれソースコードを置いて minil test を行うと、
META.json や README.md も更新してくれます。
Step3: Create PAUSE ID
まず、 module ができても、 PAUSE のアカウントがないと CPAN にはアップロードできません。
PAUSE: The CPAN back stage entrance から登録を行います。
そしてここから申請してもすぐアカウントが自動作成されるわけではなく、
手動で作成される (!) ので、1週間ぐらいはかかりました。
おそらく、 "A short description of why you would like a PAUSE ID:" の内容を人の手でちゃんとチェックしているのかなと・・・
アカウントが作成されると「Welcome new user OMOHAYUI」というメールが届きます。
別のメールで仮パスワードが送られてくるので、そちらでログインし、パスワードを変更します。
ここで、 metacpan.org のアカウントと PAUSE ID の連携を試みるのですが、
現在ここで問題が起きていて、連携用コードが PAUSE アカウントに設定しているメールに届きません。。。
これができなくても CPAN にはアップロードできるのですが、
アイコンが設定できなかったり、いいねができなかったりちょっと寂しいものがあります。
Can't associate with PAUSE · Issue #2048 · metacpan/metacpan-web · GitHub この issue が resolve されれば・・・
Step4: Setting pause_config
Minilla でリリースする際には cpan-upload を利用する為、
.pause
ファイルを home directory に配置しておく必要があります。
pause にログインする際の user名とパスワードを記載します。
user OMOHAYUI password *********
Step5: Release
Minilla でリリースする場合は、
minil release
とコマンドを打つだけです。
test と Changes の更新、 Github への commit & push CPAN アップロード までやってくれます。 アップロード後、しばらくすると upload と indexer report のメールが届いて完了です。
補足として、Changeログの更新時は、version と更新日時は自動で追加されるので追記不要です。
{{$NEXT}} - next version 0.01 2019-03-31T16:07:40Z - original version
Step6: Update modules
自分の場合は、翌日ぐらいに CPAN Testers から Daily Summary Report が届きました。
テスト結果としては、 MSWin32-x86 環境で send test が失敗しているよ!という内容でした。
win環境でテストするのめん..困難なので、 MSWin32 はサポート外としてテストを修正し、再度アップロードを試みました。
初回移行も minil release
だけで、いけます。
version もデフォルト 0.02 で更新してくれます。
Next
CPANアップロードの方法は覚えたけれども、
やっぱり Go の方で何か package 作りたいな...