d.sunnyone.org
sunnyone.org

ページ

2015-02-11

PowerShellでCottleテンプレートエンジンを使う

Cottleは、テンプレート文字列にしたがってテキストを生成する.NET用のテンプレートエンジン。超ざっくり言うと、{}で囲ったところに変数名を書くと展開されたり、構文を書くと分岐ができたりする(文法の詳細はこちら)。今回はこれをPowerShellから使う話を書く。

1. ダウンロード

CottleのライブラリはNuGetからダウンロードするようになっているので、Installing NuGet のCommand-Line Utilityから「nuget.exe」をダウンロードする。そして、以下のコマンドを実行すれば、実行したディレクトリ配下にパッケージが展開されるのでdllを入手する。
> nuget install Cottle
(面倒だったら https://www.nuget.org/api/v2/package/Cottle/1.3.1 てな感じのURL に直接アクセスして拡張子を.zipにして展開すればdllが得られなくもない)

2. 呼び出す

dllの横にスクリプトを置いて、単にドキュメントの通りのメソッドを呼べばいい。一応関数にするとこんな感じ。
(…ほんとはモジュールにしないとね)


これを実行すると、以下のように出力される。
実行結果
=========
結果: 失敗
ログ:
Failed to write a file.
No space left on device.

ifだけじゃなくいろいろな記法が使えるので、ドキュメントを参照してほしい。

前のPowerShell勉強会で、RazorEngineを使ってRazorテンプレートをPowerShellからレンダリングする話をしたのだけど、PowerShellから呼びやすくもなかったし、何よりRazorがHTML用すぎてPowerShellで使いそうなHTML以外のテキストに向いている文法ではないので、今回はCottleを紹介した。

0 件のコメント:

コメントを投稿