-3
我該如何去實現一個CLI應用程序,該應用程序使用具有不同選項的子命令? (CLI會是這樣的:phial [全局選項]命令[命令選項] [參數...])如何在Rust中製作類似Git的命令行應用程序?
因爲它目前代表我不想使用3 rd黨的圖書館做的工作對我來說,因爲我想要一些第一手的經驗。不幸的是,我不知道我會在哪裏開始討論這個問題。任何幫助將非常感激。
我該如何去實現一個CLI應用程序,該應用程序使用具有不同選項的子命令? (CLI會是這樣的:phial [全局選項]命令[命令選項] [參數...])如何在Rust中製作類似Git的命令行應用程序?
因爲它目前代表我不想使用3 rd黨的圖書館做的工作對我來說,因爲我想要一些第一手的經驗。不幸的是,我不知道我會在哪裏開始討論這個問題。任何幫助將非常感激。
您是否擁有其他語言(如Java或Python)的編程經驗?你有沒有關於如何實現「Git-like子命令」的想法?如果您不這樣做,請不要嘗試實現學習新編程語言和學習如何一次設計CLI程序的兩個目標。
我的一般策略是:
getopt
樣庫從其他參數
phial --verbose=1 init --foo=FOO --bar=BAR baz
,我們得到一個字典{ "verbose": "1" }
和序列[ "init", "--foo=FOO", "--bar=BAR", "baz" ]
init
init
應該接受
init
應該接受--foo=...
和--bar=...
getopt
再一次針對其餘參數
[ "--foo=FOO", "--bar=BAR", "baz" ]
,你會得到一本字典{ "foo": "FOO", "bar": "BAR" }
和序列[ "baz" ]
看看貨。我認爲這確實是你正在尋找的。 – Christoph 2014-09-25 10:38:17
我有,但它使用了Docopt,這不是我想要的。 – Shrike 2014-09-25 10:48:27
Docopt只是一個命令行參數解析庫。你沒有使用它來實現子命令。例如,下面是一個使用Docopt的子命令的進行中工作命令:https://github.com/BurntSushi/xcsv/blob/master/src/main.rs#L85-L96(所以有兩個* Docopt調用。一個獲得子命令,另一個獲取子命令的特定參數。) – BurntSushi5 2014-09-25 13:47:09