rksoftware

Visual Studio とか C# とかが好きです

CakeBuild で引数で数値を扱う

Cake は素人なのでこれで良いのかということろはあるのですが、こんなこともできましたということで。

■ 引数の指定

Cake ではスクリプトの中で

var number1 = Argument("number1", "123000");

のようなコードを書いて、実行時に

Cake -number1=2540

のように引数を与えると、変数 number12540 が入ります。

■ 実行してみるスクリプト

今回は、次のスクリプトを実行しながら動作を確認してみます。

var target = Argument("target", "Default");
var number1 = Argument("number1", "123000");
var number2 = Argument("number2", "456");

int.TryParse(number1, out var numverValue1);
int.TryParse(number2, out var numverValue2);

Task("Default").Does(() =>
{
  Information($"Hello {numverValue1 + numverValue2}!");
});

RunTarget(target);

Cake のスクリプトは C# なので、int.TryParseout var なども書けます。

■ 引数なしで実行

>.\tools\Cake\Cake

========================================
Default
========================================
Hello 123456!

Task                          Duration
--------------------------------------------------
Default                       00:00:00.0165981
--------------------------------------------------
Total:                        00:00:00.0165981

number1number2 が数値にパースされて数値演算されていることが確認できます。

var number1 = Argument("number1", "123000");

Argument の第二引数がデフォルト値なので 123,000 + 456 = 123,456 です。

■ 引数を付けて実行

>.\tools\Cake\Cake -number1=2540 -number2=3331

========================================
Default
========================================
Hello 5871!

Task                          Duration
--------------------------------------------------
Default                       00:00:00.0197005
--------------------------------------------------
Total:                        00:00:00.0197005

number12540number23331 となり
2,540 + 3,331 = 5,871 です。引数に値が数値になって足し算されていることが確認できました。

※CakeBuild を試してみた記事の目次です。