func tasks(p *do.Project) { p.Task("bench", nil, func(c *do.Context) { c.Run("LOGXI=* go test -bench . -benchmem", do.M{"$in": "v1/bench"}) }) p.Task("build", nil, func(c *do.Context) { c.Run("go build", do.M{"$in": "v1/cmd/demo"}) }) p.Task("linux-build", nil, func(c *do.Context) { c.Bash(` set -e GOOS=linux GOARCH=amd64 go build scp -F ~/projects/provision/matcherino/ssh.vagrant.config demo devmaster1:~/. `, do.M{"$in": "v1/cmd/demo"}) }) p.Task("etcd-set", nil, func(c *do.Context) { kv := c.Args.NonFlags() if len(kv) != 2 { do.Halt(fmt.Errorf("godo etcd-set -- KEY VALUE")) } c.Run( `curl -L http://127.0.0.1:4001/v2/keys/{{.key}} -XPUT -d value="{{.value}}"`, do.M{"key": kv[0], "value": kv[1]}, ) }) p.Task("etcd-del", nil, func(c *do.Context) { kv := c.Args.Leftover() if len(kv) != 1 { do.Halt(fmt.Errorf("godo etcd-del -- KEY")) } c.Run( `curl -L http://127.0.0.1:4001/v2/keys/{{.key}} -XDELETE`, do.M{"key": kv[0]}, ) }) p.Task("demo", nil, func(c *do.Context) { c.Run("go run main.go", do.M{"$in": "v1/cmd/demo"}) }) p.Task("demo2", nil, func(c *do.Context) { c.Run("go run main.go", do.M{"$in": "v1/cmd/demo2"}) }) p.Task("filter", do.S{"build"}, func(c *do.Context) { c.Run("go build", do.M{"$in": "v1/cmd/filter"}) c.Bash("LOGXI=* ../demo/demo | ./filter", do.M{"$in": "v1/cmd/filter"}) }) p.Task("gifcast", do.S{"build"}, func(*do.Context) { commands := []pair{ { `create a simple app demo`, `cat main.ansi`, }, { `running demo displays only warnings and errors with context`, `demo`, }, { `show all log levels`, `LOGXI=* demo`, }, { `enable/disable loggers with level`, `LOGXI=*=ERR,models demo`, }, { `create custom 256 colors colorscheme, pink==200`, `LOGXI_COLORS=*=black+h,ERR=200+b,key=blue+h demo`, }, { `put keys on newline, set time format, less context`, `LOGXI=* LOGXI_FORMAT=pretty,maxcol=80,t=04:05.000,context=0 demo`, }, { `logxi defaults to fast, unadorned JSON in production`, `demo | cat`, }, } // setup time for ecorder, user presses enter when ready clear() do.Prompt("") intro( "log XI", "structured. faster. friendlier.\n\n\n\n\t::mgutz", 1*time.Second, ) for _, cmd := range commands { typeCommand(cmd.description, cmd.command) do.Bash(cmd.command, do.M{"$in": "v1/cmd/demo"}) time.Sleep(3500 * time.Millisecond) } clear() do.Prompt("") }) p.Task("demo-gif", nil, func(c *do.Context) { c.Bash(`cp ~/Desktop/demo.gif images`) }) p.Task("bench-allocs", nil, func(c *do.Context) { c.Bash(`go test -bench . -benchmem -run=none | grep "allocs\|^Bench"`, do.M{"$in": "v1/bench"}) }).Description("Runs benchmarks with allocs") p.Task("benchjson", nil, func(c *do.Context) { c.Bash("go test -bench=BenchmarkLoggerJSON -benchmem", do.M{"$in": "v1/bench"}) }) p.Task("test", nil, func(c *do.Context) { c.Run("LOGXI=* go test", do.M{"$in": "v1"}) //Run("LOGXI=* go test -run=TestColors", M{"$in": "v1"}) }) p.Task("isolate", do.S{"build"}, func(c *do.Context) { c.Bash("LOGXI=* LOGXI_FORMAT=fit,maxcol=80,t=04:05.000,context=2 demo", do.M{"$in": "v1/cmd/demo"}) }) p.Task("install", nil, func(c *do.Context) { packages := []string{ "github.com/mattn/go-colorable", "github.com/mattn/go-isatty", "github.com/mgutz/ansi", "github.com/stretchr/testify/assert", // needed for benchmarks in bench/ "github.com/Sirupsen/logrus", "gopkg.in/inconshreveable/log15.v2", } for _, pkg := range packages { c.Run("go get -u " + pkg) } }).Description("Installs dependencies") }
func clear() { do.Bash("clear") // leave a single line at top so the window // overlay doesn't have to be exact fmt.Fprintln(stdout, "") }