2018-12-08 bouzuya/yzrh 進捗
bouzuya/yzrh 0.1.0 を目指したけどそこまで進めず。代わりにコマンドラインオプションの解釈部分の使用感は 0.1.0 になったと言えそう。
module Test.Bouzuya.CommandLineOption
( tests
) where
import Bouzuya.CommandLineOption (parse)
import Bouzuya.CommandLineOption.OptionDefinition (booleanOption, stringOption)
import Data.Either (Either(..))
import Data.Maybe (Maybe(..))
import Prelude (discard)
import Test.Bouzuya.CommandLineOption.ObjectToRecord as ObjectToRecord
import Test.Bouzuya.CommandLineOption.OptionDefinition as OptionDefinition
import Test.Bouzuya.CommandLineOption.OptionObject as OptionObject
import Test.Bouzuya.CommandLineOption.OptionValue as OptionValue
import Test.Bouzuya.CommandLineOption.RecordToArray as RecordToArray
import Test.Unit (TestSuite, suite, test)
import Test.Unit.Assert as Assert
tests :: TestSuite
tests = suite "Bouzuya.CommandLineOption" do
test "usage" do
let
defs =
{ s: stringOption "str" (Just 's') "<STRING>" "string option" "default"
, b: booleanOption "bool" (Just 'b') "boolean option"
}
argv = ["--str", "a", "-b", "foo", "bar"]
Assert.equal
(Right { arguments: ["foo", "bar"], options: { s: "a", b: true } })
(parse defs argv)
こんな感じ。値でコマンドラインオプションの定義 (Record a
) を渡す。その型に対応する Either String { arguments :: Array String, options :: Record b }
を返す。
パッケージへの抽出は yzrh 完了後かな……。内部実装をまだかなり直さないとごちゃごちゃしている。