Initial commit. Just sketching some possible API ideas
This commit is contained in:
commit
460c0de4ea
60
cli.go
Normal file
60
cli.go
Normal file
@ -0,0 +1,60 @@
|
||||
package main
|
||||
|
||||
func main() {
|
||||
app := App{
|
||||
Name: "math",
|
||||
Description: "a simple command line math utility",
|
||||
Commands: []Command{
|
||||
{
|
||||
Name: "add",
|
||||
Description: "Add 2 and 2",
|
||||
Action: DoAdd},
|
||||
{
|
||||
Name: "subtract",
|
||||
Description: "Subtract 2 and 2",
|
||||
Action: DoSubtract},
|
||||
{
|
||||
Name: "multiply",
|
||||
Description: "Multiply 2 and 2",
|
||||
Action: DoMultiply},
|
||||
{
|
||||
Name: "divide",
|
||||
Description: "Divide 2 and 2",
|
||||
Action: DoDivide}}}
|
||||
|
||||
app.Run("add")
|
||||
}
|
||||
|
||||
func DoAdd(name string) {
|
||||
println("2+2=", 2+2)
|
||||
}
|
||||
|
||||
func DoSubtract(name string) {
|
||||
println("2-2=", 2-2)
|
||||
}
|
||||
|
||||
func DoMultiply(name string) {
|
||||
println("2*2=", 2*2)
|
||||
}
|
||||
|
||||
func DoDivide(name string) {
|
||||
println("2/2=", 2/2)
|
||||
}
|
||||
|
||||
type App struct {
|
||||
Name string
|
||||
Description string
|
||||
Commands []Command
|
||||
}
|
||||
|
||||
type Command struct {
|
||||
Name string
|
||||
Description string
|
||||
Action Action
|
||||
}
|
||||
|
||||
type Action func(name string)
|
||||
|
||||
func (a App) Run(command string) {
|
||||
a.Commands[0].Action(a.Commands[0].Name)
|
||||
}
|
Loading…
Reference in New Issue
Block a user