Initial commit
This commit is contained in:
141
skills/cli-patterns/templates/categories-cli.go
Normal file
141
skills/cli-patterns/templates/categories-cli.go
Normal file
@@ -0,0 +1,141 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
func main() {
|
||||
app := &cli.App{
|
||||
Name: "myapp",
|
||||
Usage: "CLI tool with categorized commands",
|
||||
Commands: []*cli.Command{
|
||||
// Database category
|
||||
{
|
||||
Name: "create-db",
|
||||
Category: "Database",
|
||||
Usage: "Create a new database",
|
||||
Action: func(c *cli.Context) error {
|
||||
fmt.Println("Creating database...")
|
||||
return nil
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "migrate",
|
||||
Category: "Database",
|
||||
Usage: "Run database migrations",
|
||||
Action: func(c *cli.Context) error {
|
||||
fmt.Println("Running migrations...")
|
||||
return nil
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "seed",
|
||||
Category: "Database",
|
||||
Usage: "Seed database with test data",
|
||||
Action: func(c *cli.Context) error {
|
||||
fmt.Println("Seeding database...")
|
||||
return nil
|
||||
},
|
||||
},
|
||||
|
||||
// Deploy category
|
||||
{
|
||||
Name: "deploy",
|
||||
Category: "Deploy",
|
||||
Usage: "Deploy application",
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "env",
|
||||
Aliases: []string{"e"},
|
||||
Usage: "Target environment",
|
||||
Required: true,
|
||||
},
|
||||
},
|
||||
Action: func(c *cli.Context) error {
|
||||
env := c.String("env")
|
||||
fmt.Printf("Deploying to %s...\n", env)
|
||||
return nil
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "rollback",
|
||||
Category: "Deploy",
|
||||
Usage: "Rollback deployment",
|
||||
Action: func(c *cli.Context) error {
|
||||
fmt.Println("Rolling back...")
|
||||
return nil
|
||||
},
|
||||
},
|
||||
|
||||
// Monitor category
|
||||
{
|
||||
Name: "logs",
|
||||
Category: "Monitor",
|
||||
Usage: "View application logs",
|
||||
Flags: []cli.Flag{
|
||||
&cli.BoolFlag{
|
||||
Name: "follow",
|
||||
Aliases: []string{"f"},
|
||||
Usage: "Follow log output",
|
||||
},
|
||||
},
|
||||
Action: func(c *cli.Context) error {
|
||||
follow := c.Bool("follow")
|
||||
fmt.Println("Fetching logs...")
|
||||
if follow {
|
||||
fmt.Println("Following logs (Ctrl+C to stop)...")
|
||||
}
|
||||
return nil
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "status",
|
||||
Category: "Monitor",
|
||||
Usage: "Check application status",
|
||||
Action: func(c *cli.Context) error {
|
||||
fmt.Println("Status: Running")
|
||||
return nil
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "metrics",
|
||||
Category: "Monitor",
|
||||
Usage: "View application metrics",
|
||||
Action: func(c *cli.Context) error {
|
||||
fmt.Println("Fetching metrics...")
|
||||
return nil
|
||||
},
|
||||
},
|
||||
|
||||
// Config category
|
||||
{
|
||||
Name: "show-config",
|
||||
Category: "Config",
|
||||
Usage: "Show current configuration",
|
||||
Action: func(c *cli.Context) error {
|
||||
fmt.Println("Current configuration:")
|
||||
fmt.Println(" env: production")
|
||||
fmt.Println(" port: 8080")
|
||||
return nil
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "set-config",
|
||||
Category: "Config",
|
||||
Usage: "Set configuration value",
|
||||
Action: func(c *cli.Context) error {
|
||||
fmt.Println("Setting configuration...")
|
||||
return nil
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if err := app.Run(os.Args); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user