4

ファイルにユーザー定義パラメータをdist.ini設定し、パラメータの値を設定する方法はありますか? たとえば、ファイルに次のような値が含まれてい{{$THE_ANSWER}}て、そのファイルが? 私はperl ディストリビューションを使用するのにかなり慣れていないため、ファイルをテンプレートとして扱う方法を理解するのに問題があります。任意のファイルに使用できる、プラグインによって異なる、ハードコードされたパラメーターがいくつかあるようです。そのようなパラメーターの 1 つは、ファイル内で使用できる {{$NEXT}} 変数です。dist.iniTHE_ANSWER = 42dist::zilla[NextRelease]Changes

チュートリアルを読み、CPAN でモジュールを検索しましたが、これが可能かどうかさえわかりません。[GenerateFile]プラグインを使用してファイル全体をファイルに入れることは、許容できる回避策ではありませんdist.ini。柔軟性の欠如と単なる醜さに加えて、そのように先頭の空白で行を追加することはできないようです.

4

1 に答える 1

5

私がすることは、スタッシュまたはプラグインを使用して変数を保存することです。スタッシュはプラグインのようなものですが、データを保存すること以外は何もせずグローバル構成とdist.ini.

[%Vars]
favorite_pie = pumpkin

次に、次のようにそれらを取得できます。

$zilla->stash_named('%Vars')->favorite_pie

これは、Dist::Zilla::Stash::Vars を作成し、それに favorite_pie 属性を与えたことを前提としています。

ただし、何でもキーとして受け入れる、完全に一般的なスタッシュを作成することはできます。そのために、Dist::Zilla::Plugin::Prereqs のソースを調べます。これは、任意の構成オプションを許可し、BUILDSARGSメソッドのハッシュ属性にそれらを押し込みます。

その Dist::Zilla::Stash::Generic を作成し、さまざまな理由で必要な回数だけ登録できます。

[%Generic / Pies]
favorite  = pumpkin
hated     = rhubarb
firstever = quince

[%Generic / Passwords]
pause  = PeasAreDelicious
google = secret
reddit = SecretPeasAreDelicious

...そして、必要に応じて、テンプレートで...

{{ $zilla->stash_named('Passwords')->get_var('pause' }}

この種の一般的なものを使用するファイルをたくさん作成している場合は、 Text::Template インスタンスに次のget_passwordように呼び出されるクロージャを渡します。

get_password => sub { $zilla->stash_named('Passwords')->get_var($_[0]) }

次に、テンプレートに次を含めることができます。

Login with: {{ get_password("pause") }}

この回答は明らかにソースの掘り下げを残していますが、あなたが望むことを行うために使用するすべての部分を指摘する必要があると思います.

于 2012-09-10T19:49:56.267 に答える