我正在开发一个cli插件,并希望通过xargs
作为参数传递yaml配置。
所以电话应该是这样的:
cat config.yaml | xargs scale-up
现在来了困难的部分。我知道我可以得到os.Args
,但有些东西不是我要找的东西。
if len(args) > 1 {
log.Infof("%v", os.Args)
}
结果是
[/Users/me/.cf/plugins/Scaler 63386 scale spaces: - name: dev apps: - name: app min: i: 1 max: i: 4]
这显然是正确的,因为它将我的文件切成碎片。
如何正确读取文件?
你可以在stdin中读取linux管道的输出
app.go
package main
import (
"bufio"
"io"
"log"
"os"
"fmt"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var txt string
for {
data := make([]byte, 100)
_, err := reader.Read(data)
txt +=string(data)
if err == io.EOF {
break
} else if err != nil {
log.Fatalf("Err: %s", err)
}
}
fmt.Printf("Input: %s\n", txt)
}
cat config.yaml | ./app
我想这就是你想要做的