From a5f4d805062bb963e027584e553f8f35df3d9f4a Mon Sep 17 00:00:00 2001 From: stephen mcquay Date: Mon, 29 Jun 2015 23:24:02 -0700 Subject: [PATCH] one binary with subcommands --- src/mcquay.me/yay/cmd/yay/main.go | 48 +++++++++---------- .../yay/{cmd/dance/main.go => dance.go} | 13 ++--- .../yay/{cmd/shrug/main.go => shrug.go} | 13 ++--- src/mcquay.me/yay/yay.go | 26 ++++++++++ 4 files changed, 55 insertions(+), 45 deletions(-) rename src/mcquay.me/yay/{cmd/dance/main.go => dance.go} (69%) rename src/mcquay.me/yay/{cmd/shrug/main.go => shrug.go} (68%) create mode 100644 src/mcquay.me/yay/yay.go diff --git a/src/mcquay.me/yay/cmd/yay/main.go b/src/mcquay.me/yay/cmd/yay/main.go index bce79d0..6578545 100644 --- a/src/mcquay.me/yay/cmd/yay/main.go +++ b/src/mcquay.me/yay/cmd/yay/main.go @@ -1,33 +1,31 @@ package main -import "mcquay.me/yay" +import ( + "fmt" + "os" -type Yay struct { - yay.Sequence -} + "mcquay.me/yay" +) -func NewYay() *Yay { - y := &Yay{ - yay.Sequence{ - Frames: [][]rune{ - []rune(`.o.`), - []rune(`.o.`), - []rune(`.o.`), - []rune(`.o.`), - []rune(`.o.`), - []rune(`.o.`), - []rune(`-o-`), - []rune(`\o/`), - []rune(`\o/`), - []rune(`\o/`), - []rune(`-o-`), - }, - }, - } - return y -} +const usage = "usage: yay " func main() { - t := yay.NewViewPort(NewYay()) + cmd := "yay" + if len(os.Args) > 1 { + cmd = os.Args[1] + } + var t *yay.ViewPort + + switch cmd { + case "yay": + t = yay.NewViewPort(yay.NewYay()) + case "shrug": + t = yay.NewViewPort(yay.NewShrug()) + case "dance": + t = yay.NewViewPort(yay.NewDance()) + default: + fmt.Fprintf(os.Stderr, "%s\n", usage) + os.Exit(1) + } t.Run() } diff --git a/src/mcquay.me/yay/cmd/dance/main.go b/src/mcquay.me/yay/dance.go similarity index 69% rename from src/mcquay.me/yay/cmd/dance/main.go rename to src/mcquay.me/yay/dance.go index fe97554..b36365e 100644 --- a/src/mcquay.me/yay/cmd/dance/main.go +++ b/src/mcquay.me/yay/dance.go @@ -1,14 +1,12 @@ -package main - -import "mcquay.me/yay" +package yay type Dance struct { - yay.Sequence + Sequence } func NewDance() *Dance { d := &Dance{ - yay.Sequence{ + Sequence{ Frames: [][]rune{ []rune(`<('o'<) `), []rune(` ('-') `), @@ -22,8 +20,3 @@ func NewDance() *Dance { } return d } - -func main() { - t := yay.NewViewPort(NewDance()) - t.Run() -} diff --git a/src/mcquay.me/yay/cmd/shrug/main.go b/src/mcquay.me/yay/shrug.go similarity index 68% rename from src/mcquay.me/yay/cmd/shrug/main.go rename to src/mcquay.me/yay/shrug.go index 0b2131f..f869c91 100644 --- a/src/mcquay.me/yay/cmd/shrug/main.go +++ b/src/mcquay.me/yay/shrug.go @@ -1,14 +1,12 @@ -package main - -import "mcquay.me/yay" +package yay type Shrug struct { - yay.Sequence + Sequence } func NewShrug() *Shrug { return &Shrug{ - yay.Sequence{ + Sequence{ Frames: [][]rune{ []rune(`¯\_(ツ )_/¯`), []rune(`¯\_(ツ )_/¯`), @@ -20,8 +18,3 @@ func NewShrug() *Shrug { }, } } - -func main() { - t := yay.NewViewPort(NewShrug()) - t.Run() -} diff --git a/src/mcquay.me/yay/yay.go b/src/mcquay.me/yay/yay.go new file mode 100644 index 0000000..85646f9 --- /dev/null +++ b/src/mcquay.me/yay/yay.go @@ -0,0 +1,26 @@ +package yay + +type Yay struct { + Sequence +} + +func NewYay() *Yay { + y := &Yay{ + Sequence{ + Frames: [][]rune{ + []rune(`.o.`), + []rune(`.o.`), + []rune(`.o.`), + []rune(`.o.`), + []rune(`.o.`), + []rune(`.o.`), + []rune(`-o-`), + []rune(`\o/`), + []rune(`\o/`), + []rune(`\o/`), + []rune(`-o-`), + }, + }, + } + return y +}