我正在构建一个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
将是我的主要命令
list
和authenticate
是子命令。
但在这种情况下,todos
和events
是什么?什么是--completed
。 --completed
被称为Option
吗?那是我看到的废物,但不确定我是否正确阅读。我正在尝试找到一个具有不同选项的示例,例如此场景,但我找不到一个。我尝试使用urfave / cli,最初效果很好,直到我发现需要能够将多个实体传递给ex list
ex list todos events
。提前谢谢!
答案 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)。
events
和list
实际上是第一级子命令。您可以在第一级命令(--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。