app := cli.NewApp() app.Flags = []cli.Flag{ &cli.BoolFlag{ Name: "debug", Usage: "enable debug mode", }, } app.Action = func(c *cli.Context) error { debug := c.GlobalIsSet("debug") if debug { fmt.Println("Debug enabled") } else { fmt.Println("Debug disabled") } return nil }
func main() { app := cli.NewApp() app.Name = "myapp" app.Commands = []cli.Command{ { Name: "sayhello", Usage: "say hello to someone", Flags: []cli.Flag{ &cli.StringFlag{ Name: "name", Usage: "specify the name to say hello to", }, }, Action: func(c *cli.Context) error { name := c.String("name") if c.GlobalIsSet("verbose") { fmt.Println("Saying hello to", name) } fmt.Println("Hello", name) return nil }, }, } app.Flags = []cli.Flag{ &cli.BoolFlag{ Name: "verbose", Aliases: []string{"v"}, Usage: "enable verbose mode", }, } app.Run(os.Args) }In this example, we define a subcommand called `sayhello` that takes a `name` flag. We also define a global `verbose` flag. Inside the `Action` function of the `sayhello` subcommand, we use `GlobalIsSet` to check if the `verbose` flag has been set. If it has, we print a message saying "Saying hello to [name]". We then print out the actual hello message. Overall, Context GlobalIsSet is a useful function in the cli package for checking whether a particular flag has been set in the global context.