2017-02-15 3 views
1

私はElixirのOptionParserを使用していますが、長い破線の引数の解析に問題があります。Elixirの組み込みOptionParserで長い引数を解析できますか?

OptionParser.parse(argv, strict: ["db-username": :string, "db-password": :string]) 

をしかし、これは動作するようには思えません。

好ましくは、私はこのような何かをしたいと思います。私はUnknown optionを得ています。

どういうわけか誰でも知っていますか?

答えて

5

OptionParserでは、オプション名の下線をダッシュ​​を使用するのを修正し、ダッシュで引数を指定することはできません。

iex(1)> argv = ["--db-username", "foo"] 
["--db-username", "foo"] 
iex(2)> OptionParser.parse(argv, strict: ["db-username": :string, "db-password": :string]) 
{[], ["foo"], [{"--db-username", nil}]} 
iex(3)> OptionParser.parse(argv, strict: ["db_username": :string, "db_password": :string]) 
{[db_username: "foo"], [], []} 

これは、引数が原子の代わりに、文字列としてスペック提供する場合、あなただけの代わりに:"db-username"の、:db_usernameを行うことができ、それは少しより自然になります。

この動作はis documentedですが、見逃しやすいです。

+1

ありがとうございます。 – samvv

関連する問題