GO CLI инструменты с подкомандами, не работают
Я использую следующий код для поддержки этой команды:
- RTR конвертировать в TOML / путь / в / источник
- RTR конвертировать в README / путь / в / источник
convert
должен быть main
командовать toTOML
а также toREADME
должно быть как подкоманды или флаги
пока он работает в основной (root) справке показывает только конвертирование
Это помощь
Usage:
rtr [command]
Available Commands:
convert Print anything to the screen
help Help about any command
Flags:
-h, --help help for rtr
Use "rtr [command] --help" for more information about a command.
Вопрос - я хочу, чтобы каким-то образом toTOML & toREADME отображался в разделе подкоманд или в флагах
я создал эту программу, которая работает и иллюстрирует проблему
package main
import (
"fmt"
"github.com/spf13/cobra"
)
func main() {
var cmdConvert = &cobra.Command{
Use: "convert",
Short: "Print anything to the screen",
Run:nil,
}
var cmdTOML = &cobra.Command{
Use: "toTOML",
Short: "convert to TOML",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("inside convert to TOML to path: " , args[0])
},
}
var cmdREADME = &cobra.Command{
Use: "toREADME",
Short: "convert to readme",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("inside convert to README to path: " , args[0])
},
}
var rootCmd = &cobra.Command{Use: "rtr"}
cmdConvert.AddCommand(cmdTOML,cmdREADME)
rootCmd.AddCommand(cmdConvert)
rootCmd.Execute()
}
Я пытаюсь также добавить cmdConvert.PersistentFlags().StringVar(&toTOML, "toTOML", "", "toTOML")
Но я когда отлаживаю и запускаю как
go run main.go convert toTOML /go/src/
а также
go run main.go convert --toTOML /go/src/
это не относится к cmdTOML Run
функция с пути.
Мне нужно идти в RUN
функционировать в соответствии с предоставленной командой и получить путь (последний аргумент), как я могу это сделать?
Это репо, которым я пользуюсь