Actions
Actions define what code will be executed when your application is run. A basic example of this is:
package main
import "github.com/leaanthony/clir"
import "log"
func main() {
// Create the application
cli := clir.NewCli("Actions", "A simple example", "v0.0.1")
// Define main action
cli.Action(func() error {
println("Hello World!")
return nil
})
// Run application
err := cli.Run()
if err != nil {
// We had an error
log.Fatal(err)
}
}
Running this command will simply run our action:
To interact with the flags passed in, we simply use scoping:
package main
import (
"fmt"
"log"
"github.com/leaanthony/clir"
)
func main() {
// Create the application
cli := clir.NewCli("Actions", "A simple example", "v0.0.1")
// Set our default name to "Anonymous"
name := "Anonymous"
cli.StringFlag("name", "Your name", &name)
// Define action for the command
cli.Action(func() error {
fmt.Printf("Hello %s!\n", name)
return nil
})
// Run application
err := cli.Run()
if err != nil {
// We had an error
log.Fatal(err)
}
}
When we run this with no flags we get:
Passing in a name produces the expected output:
API
Cli.Action(fn func() error)
Action binds the given function to the application. It is called when the application is executed. Any errors returned by actions are passed back to via the main Cli.Run
method.
Example:
package main
import (
"fmt"
"log"
"github.com/leaanthony/clir"
)
func main() {
// Create the application
cli := clir.NewCli("Actions", "A simple example", "v0.0.1")
// Define action for the command
cli.Action(func() error {
return fmt.Errorf("I am an error")
})
// We will receive our error here
err := cli.Run()
if err != nil {
log.Fatal(err)
}
}
Running this will produce: