How do I build nested subcommands using urfave/cli in Go?

To build nested subcommands using the urfave/cli library in Go, you can define a command structure with parent and child commands. This allows you to organize your CLI commands in a hierarchical manner.


package main

import (
    "github.com/urfave/cli/v2"
    "os"
)

func main() {
    app := &cli.App{
        Name:  "myapp",
        Usage: "a simple example of nested subcommands",
        Commands: []*cli.Command{
            {
                Name:  "parent",
                Usage: "This is a parent command",
                Subcommands: []*cli.Command{
                    {
                        Name:  "child",
                        Usage: "This is a child command",
                        Action: func(c *cli.Context) error {
                            println("Executing child command")
                            return nil
                        },
                    },
                },
            },
        },
    }

    err := app.Run(os.Args)
    if err != nil {
        println(err.Error())
    }
}
    

urfave/cli Go nested subcommands CLI command line interface command structure Go programming