用go-flags理解子命令

时间:2016-08-01 23:53:13

标签: go

我正在构建一个CLI工具来开始学习Go。我发现这个流行的包我想用于这样的命令:

http://godoc.org/github.com/jessevdk/go-flags#Group
https://github.com/jessevdk/go-flags

ex list todos
ex list todos --completed
ex list events
ex list todos events
ex authenticate

我理解它的方式是ex将是我的主要命令 listauthenticate是子命令。

但在这种情况下,todosevents是什么?什么是--completed--completed被称为Option吗?那是我看到的废物,但不确定我是否正确阅读。我正在尝试找到一个具有不同选项的示例,例如此场景,但我找不到一个。我尝试使用urfave / cli,最初效果很好,直到我发现需要能够将多个实体传递给ex list ex list todos events。提前谢谢!

2 个答案:

答案 0 :(得分:1)

我在多个项目中使用了jessevdk / go-flags,非常喜欢它。文档很稀疏,但代码很简洁,因此可以通过多种方式进行自我记录。

我会尽力解决您的问题:

todos将是您的二进制文件,通常是所有顶级命令的“主”结构(例如https://github.com/concourse/fly/blob/master/commands/fly.go)。这将在您的主函数中解析(例如https://github.com/concourse/fly/blob/master/main.go)。

eventslist实际上是第一级子命令。您可以在第一级命令(--completed)上定义这些命令,就像在'master'命令结构上定义命令一样。

<android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp" android:paddingBottom="20dp" android:fitsSystemWindows="false"> </android.support.v7.widget.RecyclerView> 确实是一种选择。

在Concourse CI CLI https://github.com/concourse/fly中使用go-flags的开源项目的一个示例。虽然它不像你想要的那样嵌套命令,但它为go-flags用法提供了坚实的基础。

答案 1 :(得分:0)

如果您正在尝试学习Go,请不要使用外部包,请使用核心库,例如flag。