我正在尝试扩展 Shake 命令行参数,有两个目标:
- 采取额外的标志,例如
--foo
。 - 要根据当前工作目录专门处理非标志参数,
go
根目录中的一件事和目录中的另一件事也是如此foobar
。
我怎样才能做到这一点?
我正在尝试扩展 Shake 命令行参数,有两个目标:
--foo
。go
根目录中的一件事和目录中的另一件事也是如此foobar
。我怎样才能做到这一点?
有四个相关函数可以扩展 Shake 命令行:
shake
是 Shake 的主要入口点,它采用ShakeOptions
描述所有选项的结构。如果您想要一个完全自定义的命令行界面,请使用任何命令行解析器来填充这些字段。shakeArgs
使用命令行参数运行 Shake ShakeOptions
,因此对于使用 Shake 获取标准命令行很有用。shakeArgsWith
将额外选项列表作为第二个参数,将如何处理任何非标志参数的逻辑作为第三个参数。您可以注入新标志,并根据您必须提供的任何其他信息(包括当前目录)修改非标志之类go
的解析方式。shakeOptDescrs
给出描述与 中的字段相对应的标志的数据类型ShakeOptions
。至于他们的关系,shake
是实际的构建系统。shakeArgsWith
使用来自shakeOptDescrs
和任何自定义标志的信息来构建和运行命令行解析器。shakeArgs
调用shakeArgsWith
不使用额外的标志。
在添加标志或自定义非标志行为的特定情况下,shakeArgsWith
就足够了。如果您需要更多控制,您可以构建自己的解析器,可能会合并shakeOptDescrs
或不包含现有标志。