我浏览了代码库并确定了以下应该更改以使该工具独立于平台。
用户应按照您提到的执行以下命令
mzr convert toJSON path/to/yaml/
path/to/yaml 应该是独立于操作系统的,它必须是文件的绝对/相对路径。为此,您可以进行以下更改以转换功能。github.com/mitchellh/go-homedir
并从 converter.go中删除依赖项
func convert(args []string) {
//read file
// TODO: handle number of arguments and output proper messages.
yamlFile, err := ioutil.ReadFile(args[0])
if err != nil {
log.Printf("yamlFile.Get err #%v ", err)
}
//Format the yaml to json
fmt.Println("Start converting: " + strings.Join(args, " "))
jsonOut, err := YAML.YAMLToJSON(yamlFile) // TODO: handle error
fmt.Println(string(jsonOut))
err = ioutil.WriteFile("jsonFile.json", jsonOut, 0644) // TODO: handle error
}
有两种方法可以使用此工具。
已设置工作 golang 环境的用户
更改 main.go 文件(以 git diff 表示法)。
package main
-import "mzr/cmd/commands"
+import "github.com/NinaWatcher/mzr/cmd/commands"
完成此操作后,用户可以使用以下命令安装该工具,类似于godep
工作原理
go get github.com/NinaWatcher/mzr
未安装 golang 的用户。
像使用 make.sh 文件一样构建操作系统特定的发行版
希望这可以解决您的工具分发问题。不过,附带说明一下,代码库中有很多可以改进的地方,特别是错误处理、包层次结构等。最好在将其分发给用户之前注意它们。