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の横にスクリプトを置いて、単にドキュメントの通りのメソッドを呼べばいい。一応関数にするとこんな感じ。(…ほんとはモジュールにしないとね)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# https://www.nuget.org/packages/Cottle/ | |
# https://www.nuget.org/api/v2/package/Cottle/1.3.1 | |
Import-Module $PSScriptRoot\Cottle.dll | |
function Format-CottleTemplate { | |
param($Template, $Variables) | |
process { | |
$store = New-Object Cottle.Stores.BuiltinStore | |
foreach ($key in $Variables.Keys) { | |
$store[$key] = $Variables[$key] | |
} | |
$document = New-Object Cottle.Documents.SimpleDocument($Template) | |
$document.Render($store) | |
} | |
} | |
$tmpl = @" | |
実行結果 | |
========= | |
結果: {if IsSuccess:成功|else:失敗} | |
ログ: | |
{Log} | |
"@ | |
Format-CottleTemplate -Template $tmpl -Variables @{ | |
IsSuccess = $false | |
Log = "Failed to write a file.`nNo space left on device." | |
} |
これを実行すると、以下のように出力される。
実行結果 ========= 結果: 失敗 ログ: Failed to write a file. No space left on device.
ifだけじゃなくいろいろな記法が使えるので、ドキュメントを参照してほしい。
前のPowerShell勉強会で、RazorEngineを使ってRazorテンプレートをPowerShellからレンダリングする話をしたのだけど、PowerShellから呼びやすくもなかったし、何よりRazorがHTML用すぎてPowerShellで使いそうなHTML以外のテキストに向いている文法ではないので、今回はCottleを紹介した。
0 件のコメント:
コメントを投稿