gpt4 book ai didi

go - 眼镜蛇指挥官 : How to call a command from another command?

转载 作者:行者123 更新时间:2023-12-01 21:49:07 28 4
gpt4 key购买 nike

在 cobra 中,我创建了一个命令命令:

myapp zip -directory "xzy" -output="zipname"
myapp upload -filename="abc"

我想制作一个 zipAndUpload 命令并重用现有命令,即

myapp zipup -directory "xzy" -outout="zipname"

此处 zipup 将首先调用“zip”命令,然后使用“zip”命令的输出名称作为“上传”命令的“文件名”标志。

如何在没有大量代码重复的情况下执行此操作?

最佳答案

“共享”开关成为全局开关。

子命令的“运行”部分,转换为函数。

为此,您必须手动定义命令:

var (
cfgDirectory string
cfgFilename string
cfgOutput string
)

var rootCmd = &cobra.Command{
Use: "root",
Short: "root",
Long: "root",
Run: func(cmd *cobra.Command, args []string) {
// something
},
}

var uploadCmd = &cobra.Command{
Use: 'upload',
Short: 'upload',
Long: `upload`,
Run: func(cmd *cobra.Command, args []string) {
Upload()
},
}

var zipCmd = &cobra.Command{
Use: "zip",
Short: "zip",
Long: "zip",
Run: func(cmd *cobra.Command, args []string) {
Zip()
},
}

var zipupCmd = &cobra.Command{
Use: "zipup",
Short: "zipup",
Long: "zipup",
Run: func(cmd *cobra.Command, args []string) {
Zip()
Upload()
},
}

func setFlags() {
rootCmd.PersistentFlags().StringVar(&cfgDirectory, "directory", "", "explanation")
rootCmd.PersistentFlags().StringVar(&cfgFilename, "filename", "", "explanation")
rootCmd.PersistentFlags().StringVar(&cfgOutput, "output", "", "explanation")
}

func Upload() {
// you know what to do
}

func Zip() {
// you know what to do
}
...

// Add subcommands
rootCmd.AddCommand(zipCmd)
rootCmd.AddCommand(uploadCmd)
rootCmd.AddCommand(zipupCmd)

希望这对您有所帮助,这是我在没有任何示例代码的情况下所能做的最好的事情。

关于go - 眼镜蛇指挥官 : How to call a command from another command?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43747075/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com