From 5dac13c6c808131ca71c269f67a64350e35e6687 Mon Sep 17 00:00:00 2001 From: kolaente Date: Mon, 1 Feb 2021 18:06:10 +0100 Subject: [PATCH] Add command to generate a new event --- magefile.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/magefile.go b/magefile.go index 39ffa899d..83590f43c 100644 --- a/magefile.go +++ b/magefile.go @@ -24,6 +24,7 @@ import ( "context" "crypto/sha256" "fmt" + "github.com/iancoleman/strcase" "io" "io/ioutil" "os" @@ -294,6 +295,13 @@ func moveFile(src, dst string) error { return nil } +const InfoColor = "\033[1;32m%s\033[0m" + +func printSuccess(text string, args ...interface{}) { + text = fmt.Sprintf(text, args...) + fmt.Printf(InfoColor+"\n", text) +} + // Formats the code using go fmt func Fmt() { mg.Deps(initVars) @@ -747,14 +755,56 @@ func init() { }) } ` - f, err := os.Create(RootPath + "/pkg/migration/" + date + ".go") + filename := "/pkg/migration/" + date + ".go" + f, err := os.Create(RootPath + filename) defer f.Close() if err != nil { return err } - _, err = f.WriteString(migration) - return err + if _, err := f.WriteString(migration); err != nil { + return err + } + + printSuccess("Migration has been created at %s!", filename) + + return nil +} + +// Create a new event. Takes the name of the event as the first argument and the module where the event should be created as the second argument. Events will be appended to the pkg//events.go file. +func (Dev) CreateEvent(name, module string) error { + + name = strcase.ToCamel(name) + + if !strings.HasSuffix(name, "Event") { + name += "Event" + } + + eventName := strings.ReplaceAll(strcase.ToDelimited(name, '.'), ".event", "") + + newEventCode := ` +type ` + name + ` struct { +} + +func (t *` + name + `) TopicName() string { + return "` + eventName + `" +} +` + filename := "./pkg/" + module + "/events.go" + f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) + if err != nil { + return err + } + + defer f.Close() + + if _, err = f.WriteString(newEventCode); err != nil { + return err + } + + printSuccess("The new event has been created successfully! Head over to %s and adjust its content.", filename) + + return nil } type configOption struct {