本文へ移動
Hikari リファレンス

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")])