Some checks failed
Docs Deploy / build_and_deploy (push) Has been cancelled
Generate Docs / cli (push) Has been cancelled
Generate Config Doc / cli (push) Has been cancelled
Go formatting / go-formatting (push) Has been cancelled
Check links / markdown-link-check (push) Has been cancelled
Integration / pre-test (push) Has been cancelled
Integration / test on (push) Has been cancelled
Integration / status (push) Has been cancelled
Lint / Lint Go code (push) Has been cancelled
Test / test (ubuntu-latest) (push) Has been cancelled
58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
package app
|
|
|
|
import (
|
|
"embed"
|
|
"fmt"
|
|
"io/fs"
|
|
"strings"
|
|
|
|
"github.com/gobuffalo/genny/v2"
|
|
"github.com/gobuffalo/plush/v4"
|
|
|
|
"git.cw.tr/mukan-network/mukan-ignite/ignite/pkg/errors"
|
|
"git.cw.tr/mukan-network/mukan-ignite/ignite/pkg/xembed"
|
|
"git.cw.tr/mukan-network/mukan-ignite/ignite/pkg/xgenny"
|
|
"git.cw.tr/mukan-network/mukan-ignite/ignite/templates/field/plushhelpers"
|
|
)
|
|
|
|
//go:embed files/{{protoDir}}/* files/buf.lock files/buf.yaml.plush
|
|
var fsProto embed.FS
|
|
|
|
// NewBufGenerator returns the generator to buf build files.
|
|
func NewBufGenerator(protoDir string) (*genny.Generator, error) {
|
|
subFs, err := fs.Sub(fsProto, "files")
|
|
if err != nil {
|
|
return nil, errors.Errorf("fail to generate sub: %w", err)
|
|
}
|
|
|
|
g := genny.New()
|
|
if err := g.OnlyFS(subFs, nil, nil); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
ctx := plush.NewContext()
|
|
ctx.Set("ProtoDir", protoDir)
|
|
|
|
plushhelpers.ExtendPlushContext(ctx)
|
|
g.Transformer(xgenny.Transformer(ctx))
|
|
g.Transformer(genny.Replace("{{protoDir}}", protoDir))
|
|
|
|
return g, nil
|
|
}
|
|
|
|
func CutTemplatePrefix(name string) (string, bool) {
|
|
return strings.CutPrefix(name, fmt.Sprintf("%s/", "{{protoDir}}"))
|
|
}
|
|
|
|
// BufFiles returns a list of Buf.Build files.
|
|
func BufFiles() ([]string, error) {
|
|
files, err := xembed.FileList(fsProto, "files")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
// remove all .plush extensions.
|
|
for i, file := range files {
|
|
files[i] = strings.TrimSuffix(file, ".plush")
|
|
}
|
|
return files, nil
|
|
}
|