3
0

Small codegen bits changes, add adoc template for events

This commit is contained in:
Denis Arh 2020-05-27 11:06:10 +02:00
parent 529a8b52dd
commit ef47a0d612
13 changed files with 108 additions and 24 deletions

View File

@ -267,7 +267,7 @@ func procDef(path, output string) {
checkPlaceholders(e.Error, "log", e.Log)
}
internal.WriteTo(tpl, tplData, "actions.gen.go.tpl", output)
internal.WriteFormattedTo(tpl, tplData, "actions.gen.go.tpl", output)
}
func (a actionDef) SeverityConstName() string {

View File

@ -0,0 +1,31 @@
// This is a autogenerated file
//
// Generated from:
// - corteza-server/src/{{$.Service}}/service/events.yaml
// - corteza-server/codegen/v2/events/events.gen.adoc.tpl
//
// To regenerate:
// ./event-gen --service {{$.Service}} --docs ../corteza-docs/src/extdev/development/events/
//
= {{ $.ResourceString }}
.List of events on `{{ $.ResourceString }}`
{{- range $event := makeEvents $.Events }}
- `{{ $event }}`
{{- end }}
.Event arguments for `{{ $.ResourceString }}`
[%header,cols=3*]
|===
|Name
|Type
|Immutable
{{- range $p := $.Events.Properties }}
|`{{ camelCase $p.Name }}`
|`{{ $p.Type }}`
|{{ $p.Immutable }}
{{- end }}
|===

View File

@ -169,6 +169,8 @@ func (res *{{ camelCase .ResourceIdent "base" }}) Decode(results map[string][]by
}
}
}
{{ else }}
// Do not decode {{ $prop.Name }}; marked as immutable
{{ end -}}
{{ end -}}

View File

@ -12,7 +12,7 @@ import (
)
const (
templateFile = "codegen/v2/events/*.go.tpl"
templateFiles = "codegen/v2/events/*.tpl"
)
type (
@ -43,6 +43,7 @@ type (
Command string
YAML string
Service string
Package string
// List of imports
@ -58,20 +59,26 @@ type (
}
)
// Use for generating .go and .adoc files from yaml
//
// To generate .go files, run for each service:
// ./event-gen --service messaging
//
// To generate .adoc files, run for each service + add path to docs
//// ./event-gen --service system --docs ../corteza-docs/src/extdev/development/events/
func main() {
tpl := template.New("").Funcs(map[string]interface{}{
"camelCase": internal.CamelCase,
"makeEvents": makeEvents,
})
tpl = template.Must(tpl.ParseGlob(templateFile))
tpl = template.Must(tpl.ParseGlob(templateFiles))
var (
definitionsPathStr string
serviceStr string
docsPathStr string
overwrite bool
// outputFile string
decoder *yaml.Decoder
@ -88,8 +95,9 @@ func main() {
)
flag.StringVar(&definitionsPathStr, "definitions", "", "Location of event definitions file (generated from service if omitted) and output dir")
flag.StringVar(&serviceStr, "service", "", "Comma separated list of imports")
flag.StringVar(&serviceStr, "service", "", "Service name (system, compose, messaging)")
flag.BoolVar(&overwrite, "overwrite", false, "Overwrite all files")
flag.StringVar(&docsPathStr, "docs", "", "Path to docs (generates .adoc files with documentation)")
flag.Parse()
@ -110,6 +118,7 @@ func main() {
tplData.Command = "go run ./codegen/v2/events --service " + serviceStr
tplData.YAML = definitionsPathStr + yamlDefFileName
tplData.Package = "event"
tplData.Service = serviceStr
defs := eventDefMap{}
cli.HandleError(decoder.Decode(&defs))
@ -174,17 +183,27 @@ func main() {
tplData.Events = evDef
var (
usrOutput = fmt.Sprintf("%s%s.go", definitionsPathStr, fname)
genOutput = fmt.Sprintf("%s/%s.gen.go", definitionsPathStr, fname)
)
switch true {
case len(docsPathStr) > 0:
var (
docOutput = fmt.Sprintf("%s/%s/%s.gen.adoc", docsPathStr, serviceStr, fname)
)
_, err := os.Stat(usrOutput)
if overwrite || os.IsNotExist(err) {
internal.WriteTo(tpl, tplData, "events.go.tpl", usrOutput)
internal.WritePlainTo(tpl, tplData, "events.gen.adoc.tpl", docOutput)
default:
var (
usrOutput = fmt.Sprintf("%s%s.go", definitionsPathStr, fname)
genOutput = fmt.Sprintf("%s/%s.gen.go", definitionsPathStr, fname)
)
_, err := os.Stat(usrOutput)
if overwrite || os.IsNotExist(err) {
internal.WriteFormattedTo(tpl, tplData, "events.go.tpl", usrOutput)
}
internal.WriteFormattedTo(tpl, tplData, "events.gen.go.tpl", genOutput)
}
internal.WriteTo(tpl, tplData, "events.gen.go.tpl", genOutput)
}
}

View File

@ -10,11 +10,11 @@ import (
"text/template"
)
func WriteTo(tpl *template.Template, payload interface{}, name, dst string) {
func WriteFormattedTo(tpl *template.Template, payload interface{}, tplName, dst string) {
var output io.WriteCloser
buf := bytes.Buffer{}
if err := tpl.ExecuteTemplate(&buf, name, payload); err != nil {
if err := tpl.ExecuteTemplate(&buf, tplName, payload); err != nil {
cli.HandleError(err)
} else {
fmtsrc, err := format.Source(buf.Bytes())
@ -39,3 +39,27 @@ func WriteTo(tpl *template.Template, payload interface{}, name, dst string) {
}
}
}
func WritePlainTo(tpl *template.Template, payload interface{}, tplName, dst string) {
var output io.WriteCloser
buf := bytes.Buffer{}
if err := tpl.ExecuteTemplate(&buf, tplName, payload); err != nil {
cli.HandleError(err)
} else {
if dst == "" || dst == "-" {
output = os.Stdout
} else {
// cli.HandleError(os.Remove(dst))
if output, err = os.Create(dst); err != nil {
cli.HandleError(err)
}
defer output.Close()
}
if _, err := output.Write(buf.Bytes()); err != nil {
cli.HandleError(err)
}
}
}

View File

@ -6,7 +6,7 @@ package event
// system/service/event/events.yaml
//
// Regenerate with:
// go run codegen/v2/events.go --service system
// go run ./codegen/v2/events --service system
//
import (
@ -448,6 +448,8 @@ func (res *applicationBase) Decode(results map[string][]byte) (err error) {
}
}
// Do not decode oldApplication; marked as immutable
if res.invoker != nil {
if r, ok := results["invoker"]; ok {
if err = json.Unmarshal(r, res.invoker); err != nil {

View File

@ -6,7 +6,7 @@ package event
// system/service/event/events.yaml
//
// Regenerate with:
// go run codegen/v2/events.go --service system
// go run ./codegen/v2/events --service system
//
import (

View File

@ -6,7 +6,7 @@ package event
// system/service/event/events.yaml
//
// Regenerate with:
// go run codegen/v2/events.go --service system
// go run ./codegen/v2/events --service system
//
import (

View File

@ -6,7 +6,7 @@ package event
// system/service/event/events.yaml
//
// Regenerate with:
// go run codegen/v2/events.go --service system
// go run ./codegen/v2/events --service system
//
import (
@ -448,6 +448,8 @@ func (res *roleBase) Decode(results map[string][]byte) (err error) {
}
}
// Do not decode oldRole; marked as immutable
if res.invoker != nil {
if r, ok := results["invoker"]; ok {
if err = json.Unmarshal(r, res.invoker); err != nil {

View File

@ -6,7 +6,7 @@ package event
// system/service/event/events.yaml
//
// Regenerate with:
// go run codegen/v2/events.go --service system
// go run ./codegen/v2/events --service system
//
import (

View File

@ -6,7 +6,7 @@ package event
// system/service/event/events.yaml
//
// Regenerate with:
// go run codegen/v2/events.go --service system
// go run ./codegen/v2/events --service system
//
import (
@ -160,6 +160,8 @@ func (res *sinkBase) Decode(results map[string][]byte) (err error) {
}
}
// Do not decode request; marked as immutable
if res.invoker != nil {
if r, ok := results["invoker"]; ok {
if err = json.Unmarshal(r, res.invoker); err != nil {

View File

@ -6,7 +6,7 @@ package event
// system/service/event/events.yaml
//
// Regenerate with:
// go run codegen/v2/events.go --service system
// go run ./codegen/v2/events --service system
//
import (

View File

@ -6,7 +6,7 @@ package event
// system/service/event/events.yaml
//
// Regenerate with:
// go run codegen/v2/events.go --service system
// go run ./codegen/v2/events --service system
//
import (
@ -448,6 +448,8 @@ func (res *userBase) Decode(results map[string][]byte) (err error) {
}
}
// Do not decode oldUser; marked as immutable
if res.invoker != nil {
if r, ok := results["invoker"]; ok {
if err = json.Unmarshal(r, res.invoker); err != nil {