package main import ( "fmt" "os" "github.com/spf13/cobra" ) var rootCmd = &cobra.Command{ Use: "mytool", Short: "A helpful CLI tool", Long: `mytool is a CLI application built with Cobra.`, } var serveCmd = &cobra.Command{ Use: "serve", Short: "Start the HTTP server", RunE: func(cmd *cobra.Command, args []string) error { port, _ := cmd.Flags().GetInt("port") fmt.Printf("Starting server on :%d\n", port) // server logic here return nil }, } var versionCmd = &cobra.Command{ Use: "version", Short: "Print the version", Run: func(cmd *cobra.Command, args []string) { fmt.Println("mytool v1.0.0") }, } func init() { serveCmd.Flags().IntP("port", "p", 8080, "Port to listen on") rootCmd.AddCommand(serveCmd, versionCmd) } func main() { if err := rootCmd.Execute(); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } }