std:cli リファレンス
import cli := "std:cli" で取得する起動引数の解析モジュール。option / flag で宣言表を組み、parse が values / positionals / errors の 3 つを返す。argv は引数で受け取るため純粋・同期で、起動引数の取得は std:env が担う。
flag
flag(name)
flag: { String | { name: String, takes_value: Bool |} }
値を取らない flag の宣言を作る。name は接頭辞の - を含めずに書く。
>>> import cli := "std:cli" >>> cli.flag("verbose")
get
get(p, name)
get: { { values: List({ name: String, value: String |}), positionals: List(String), errors: List(String) |}, String | Option(String) }
解析結果から name の値を読む。無ければ None、有れば Some(値)。
>>> import cli := "std:cli" >>> cli.get(cli.parse(["-o", "a"], [cli.option("o")]), "o")
get_or
get_or(p, name, default)
get_or: { { values: List({ name: String, value: String |}), positionals: List(String), errors: List(String) |}, String, String | String }
解析結果から name の値を読む。無ければ default を返す。
>>> import cli := "std:cli" >>> cli.get_or(cli.parse([], [cli.option("o")]), "o", "既定")
has
has(p, name)
has: { { values: List({ name: String, value: String |}), positionals: List(String), errors: List(String) |}, String | Bool }
解析結果に name が現れたかを返す。flag で宣言したものを読む綴り。
>>> import cli := "std:cli" >>> cli.has(cli.parse(["-l"], [cli.flag("l")]), "l")
option
option(name)
option: { String | { name: String, takes_value: Bool |} }
値を 1 個取る option の宣言を作る。name は接頭辞の - を含めずに書く。
>>> import cli := "std:cli" >>> cli.option("out")
parse
parse(argv, specs)
parse: { List(String), List({ name: String, takes_value: Bool |}) | { values: List({ name: String, value: String |}), positionals: List(String), errors: List(String) |} }
argv を specs に従って解析し、values / positionals / errors を持つレコードを返す。
values の要素は name / value を持つレコードである。
不正な引数は errors に積むだけで、終了するかどうかは呼び手が決める。
>>> import cli := "std:cli" >>> cli.parse(["-out", "a.json", "src"], [cli.option("out")])