881 B
881 B
goc 中的参数处理设计
背景
goc build/install/run 有不少人反馈使用起来和 go build/install/run 相比,还是有不少的差异。这种差异导致在日常开发、CI/CD 中替换不便,有些带引号的参数会被改写的面目全非。
原则
goc build/install/run 会尽可能的模仿 go 原生的方式去处理参数。
主要问题
- goc 使用 cobra 库来组织各个子命令。cobra 对 flag 处理采用的是 posix 风格(两个短横线),和 go 的 flag 处理差异很大(一个短横线)。
- go 命令中 args 和 flags 有着严格先后顺序。而 cobra 库对 flags 和 args 的位置没有要求。
- 参数中
[packages]
有多种组合情况,会影响到插桩的起始位置。 - goc 还有自己参数,且需要和非 goc build/install/run 的子命令保持一致(两个短横线)。