3
0
corteza/pkg/codegen-v2/codegen.go
2021-07-08 11:22:11 +02:00

79 lines
1.7 KiB
Go
Generated

package main
import (
"fmt"
"github.com/cortezaproject/corteza-server/pkg/codegen-v2/internal/def"
"github.com/cortezaproject/corteza-server/pkg/codegen-v2/internal/tpl"
"text/template"
)
// rbac generates one rbac definition file per service
// <service>/service/rbac.gen.go
//
// Contains all RBAC related definitions
func accessControlService(t *template.Template, dd []*def.Document) (err error) {
const (
template = "access_control.go.tpl"
outputPathTpl = "%s/service/access_control.gen.go"
)
for component, perComponent := range partByComponent(dd) {
w := tpl.Wrap{
Package: "service",
Component: component,
Def: perComponent,
}
w.Imports = append(w.Imports, cImport(component, "types"))
err = tpl.GoTemplate(fmt.Sprintf(outputPathTpl, component), t.Lookup(template), w)
if err != nil {
return
}
}
return
}
// rbac generates one rbac definition file per service
// <service>/service/rbac.gen.go
//
// Contains all RBAC related definitions
func rbacTypes(t *template.Template, dd []*def.Document) (err error) {
const (
template = "rbac.go.tpl"
outputPathTpl = "%s/types/rbac.gen.go"
)
for component, perComponent := range partByComponent(dd) {
w := tpl.Wrap{
Package: "types",
Component: component,
Def: perComponent,
}
err = tpl.GoTemplate(fmt.Sprintf(outputPathTpl, component), t.Lookup(template), w)
if err != nil {
return
}
}
return
}
func partByComponent(dd []*def.Document) map[string][]*def.Document {
var (
parted = make(map[string][]*def.Document)
)
for _, d := range dd {
parted[d.Component] = append(parted[d.Component], d)
}
return parted
}
func cImport(c, s string) string {
return fmt.Sprintf("github.com/cortezaproject/corteza-server/%s/%s", c, s)
}