我有一个 cobra CLI 用于我自己的东西。现在我想添加常用的可执行文件,例如 kubectl,calicoctl作为将使用所有参数和标志的子命令
mywrapper kubectl get all --all-namespaces
mywrapper kubectl create deployment nginx --image=nginx --port=80
重现眼镜蛇项目
mkdir mywrapper; cd mywrapper; go mod init mywrapper; cobra-cli init .
并添加一个子命令,例如 kubectl
cobra-cli add kubectl
./cmd/kubectl.go然后填充
package cmd
import (
"fmt"
"os/exec"
"strings"
"github.com/spf13/cobra"
)
var kubectlCmd = &cobra.Command{
Use: "kubectl",
Short: "run kubectl",
Run: func(cmd *cobra.Command, args []string) {
out, err := exec.Command("/bin/bash", "-c", fmt.Sprintf("kubectl %v", strings.Join(args, " "))).Output()
if err != nil {
fmt.Println(err)
}
fmt.Println(string(out))
},
}
func init() {
rootCmd.AddCommand(kubectlCmd)
}
我现在可以运行kubectl命令,例如 go run . kubectl get pods。但是当添加标志时它会失败,例如 go run . kubectl get pods --selector app=nginx
一只斗牛犬
相关分类