Initial commit. Just sketching some possible API ideas

This commit is contained in:
Jeremy Saenz 2013-07-13 12:13:48 -07:00
commit 460c0de4ea

60
cli.go Normal file
View 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)
}