2016-10-02 11 views
6

stasisの配信をPAUSEにアップロードしましたが、indexには含まれていません。私のCPAN配信がPAUSEによって索引付けされていないのはなぜですか?

それはパッケージが含まれていなかったので、私はこれはと思ったので、私はこのようなv0.04にうっ滞scriptにパッケージ宣言を追加しました:

#!/usr/bin/env perl 
package stasis; 
package main; 
... 

が、それはまだインデックスされませんでした。

ボイラープレートモジュールファイルの作成に関係しないこのディストリビューションをインデックスに登録する方法はありますか。 (例えば、分布にlib/stasis.pmを追加する)。

+1

ポーズからのメールの内容は何ですか?多分$ VERSION変数をパッケージに移すのでしょうか? – choroba

+0

私はPAUSEからの "upload"メールのみを取得しますが、 "indexed"メールは取得しません。 $ VERSIONについての面白い提案は、META.jsonに挿入するとmakeがバージョンを見つけていると思います。 –

+2

小文字の名前はプラグマ用に予約されているため、自分でトップレベルの名前空間を要求してはいけません! – ikegami

答えて

7

私はCPANがスクリプトのインデックスを作成しないと信じています。

IMOあなたの最良の選択肢は、あなたのスクリプトが何をしているのかをプログラマチックに(そしてスクリプトがそれを使用させるように)できるモジュールを作ることです。

偽のモジュールを置くか、スクリプトがモジュールであると思うようにすることができます(私はprovidesにリストされていると思いますが)。

+2

追加するとMETA.ymlが提供され、META.jsonがトリックを行いました! –

+2

CPAN上のスクリプトは、通常、 'App :: $ script_name'という名前のモジュール内に存在します。 [例](http://search.cpan.org/perldoc?App::perlbrew) – ikegami

+0

@DavidFarrell「トリックをやった」とは、cpanが現在静止しているということです – ysth

2

packageの文が*.pmファイルに含まれていなかったためです。

PAUSEインデクサはopen sourceです。パッケージを解凍するのは少し複雑ですが、配布物内のパッケージ名を抽出するための正規表現は、*.pmファイルのみを処理する方法とパッケージであるPAUSE::pmfile::packages_per_pmfileにあります。

PAUSE::dist::_index_by_metaメソッドは、メタファイルのprovidesキーワードを使用してパッケージを宣言する別の方法を提供します。

関連する問題