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 完了後かな……。内部実装をまだかなり直さないとごちゃごちゃしている。