push cmd stuff to lib
This commit is contained in:
parent
13cad25620
commit
b2317046d1
|
@ -17,7 +17,7 @@ warren build - Runs go build and populates the following variables:
|
|||
BuildDate from system time
|
||||
`
|
||||
|
||||
var buildCmd = &Command{
|
||||
var buildCmd = &warren.Command{
|
||||
Name: "build",
|
||||
Usage: "",
|
||||
Summary: "build the go server in the current directory",
|
||||
|
@ -25,7 +25,7 @@ var buildCmd = &Command{
|
|||
Run: buildRun,
|
||||
}
|
||||
|
||||
func buildRun(cmd *Command, args ...string) {
|
||||
func buildRun(cmd *warren.Command, args ...string) {
|
||||
if len(args) > 0 && args[0] == "help" {
|
||||
fmt.Print(cmd.Help)
|
||||
return
|
||||
|
|
|
@ -11,7 +11,7 @@ var deployUsage = `
|
|||
warren deploy - Deploys the go server and support files
|
||||
`
|
||||
|
||||
var deployCmd = &Command{
|
||||
var deployCmd = &warren.Command{
|
||||
Name: "deploy",
|
||||
Usage: "",
|
||||
Summary: "deploy the go server and support files",
|
||||
|
@ -43,7 +43,7 @@ func cp(dst, src string) error {
|
|||
return exec.Command("cp", src, dst, "-r").Run()
|
||||
}
|
||||
|
||||
func deployRun(cmd *Command, args ...string) {
|
||||
func deployRun(cmd *warren.Command, args ...string) {
|
||||
if len(args) > 0 && args[0] == "help" {
|
||||
fmt.Print(cmd.Help)
|
||||
return
|
||||
|
|
|
@ -15,7 +15,7 @@ var runUsage = `
|
|||
warren run - Interfaces with warrend to manage running instances
|
||||
`
|
||||
|
||||
var runCmd = &Command{
|
||||
var runCmd = &warren.Command{
|
||||
Name: "run",
|
||||
Usage: "",
|
||||
Summary: "Interface to warrend to manage running instances",
|
||||
|
@ -23,7 +23,7 @@ var runCmd = &Command{
|
|||
Run: runRun,
|
||||
}
|
||||
|
||||
func runRun(cmd *Command, args ...string) {
|
||||
func runRun(cmd *warren.Command, args ...string) {
|
||||
if len(args) == 0 || args[0] == "help" {
|
||||
fmt.Print(cmd.Help)
|
||||
return
|
||||
|
|
|
@ -3,8 +3,8 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/dballard/warren/lib/warren"
|
||||
"os"
|
||||
"strings"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
|
@ -24,19 +24,16 @@ Commands:{{range .}}
|
|||
{{.Name | printf "%-10s"}} {{.Summary}}{{end}}
|
||||
`))
|
||||
|
||||
var commands = []*Command{
|
||||
buildCmd,
|
||||
deployCmd,
|
||||
runCmd,
|
||||
}
|
||||
|
||||
func usage() {
|
||||
fmt.Println(BuildGitBranch, " ", BuildGitHash, " ", BuildDate)
|
||||
fmt.Print(usagePrefix)
|
||||
usageTmpl.Execute(os.Stdout, commands)
|
||||
warren.PrintCommandUsage()
|
||||
}
|
||||
|
||||
func main() {
|
||||
warren.RegisterCommand(buildCmd)
|
||||
warren.RegisterCommand(deployCmd)
|
||||
warren.RegisterCommand(runCmd)
|
||||
|
||||
flag.Usage = usage
|
||||
flag.Parse()
|
||||
|
@ -47,14 +44,8 @@ func main() {
|
|||
return
|
||||
}
|
||||
|
||||
var cmd *Command
|
||||
name := args[0]
|
||||
for _, c := range commands {
|
||||
if strings.HasPrefix(c.Name, name) {
|
||||
cmd = c
|
||||
break
|
||||
}
|
||||
}
|
||||
var cmd *warren.Command = warren.GetCommand(name)
|
||||
|
||||
if cmd == nil {
|
||||
fmt.Printf("error: unknown command %q\n", name)
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package main
|
||||
package warren
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"os"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
// shamelessly snagged from the go tool
|
||||
|
@ -18,6 +20,8 @@ type Command struct {
|
|||
Help string
|
||||
}
|
||||
|
||||
var commands map[string]*Command = make(map[string]*Command)
|
||||
|
||||
func (c *Command) Exec(args []string) {
|
||||
c.Flag.Usage = func() {
|
||||
// helpFunc(c, c.Name)
|
||||
|
@ -25,3 +29,20 @@ func (c *Command) Exec(args []string) {
|
|||
c.Flag.Parse(args)
|
||||
c.Run(c, c.Flag.Args()...)
|
||||
}
|
||||
|
||||
func RegisterCommand(c *Command) {
|
||||
commands[c.Name] = c
|
||||
}
|
||||
|
||||
func GetCommand(name string) *Command {
|
||||
return commands[name]
|
||||
}
|
||||
|
||||
var usageTmpl = template.Must(template.New("usage").Parse(`
|
||||
Commands:{{range .}}
|
||||
{{.Name | printf "%-10s"}} {{.Summary}}{{end}}
|
||||
`))
|
||||
|
||||
func PrintCommandUsage() {
|
||||
usageTmpl.Execute(os.Stdout, commands)
|
||||
}
|
Loading…
Reference in New Issue