mirror of
https://github.com/kubevela/kubevela.git
synced 2026-05-16 06:16:52 +00:00
[Backport-1.4]: optimize imports packages to reduce 75% cpu with better performance (#4355)
* Feat: optimize imports packages Signed-off-by: FogDong <dongtianxin.tx@alibaba-inc.com> * fix test Signed-off-by: FogDong <dongtianxin.tx@alibaba-inc.com>
This commit is contained in:
@@ -19,20 +19,32 @@ package stdlib
|
||||
import (
|
||||
"embed"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"cuelang.org/go/cue/build"
|
||||
"k8s.io/klog/v2"
|
||||
)
|
||||
|
||||
func init() {
|
||||
var err error
|
||||
BuiltinImports, err = initBuiltinImports()
|
||||
if err != nil {
|
||||
klog.ErrorS(err, "Unable to init builtin imports")
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
//go:embed pkgs op.cue ql.cue
|
||||
fs embed.FS
|
||||
// BuiltinImports is the builtin imports for cue
|
||||
BuiltinImports []*build.Instance
|
||||
)
|
||||
|
||||
// GetPackages Get Stdlib packages
|
||||
func GetPackages(tagTempl string) (map[string]string, error) {
|
||||
|
||||
func GetPackages() (map[string]string, error) {
|
||||
files, err := fs.ReadDir("pkgs")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -63,16 +75,32 @@ func GetPackages(tagTempl string) (map[string]string, error) {
|
||||
}
|
||||
|
||||
return map[string]string{
|
||||
"vela/op": opContent + "\n" + tagTempl,
|
||||
"vela/ql": qlContent + "\n" + tagTempl,
|
||||
"vela/op": opContent,
|
||||
"vela/ql": qlContent,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// AddImportsFor install imports for build.Instance.
|
||||
func AddImportsFor(inst *build.Instance, tagTempl string) error {
|
||||
pkgs, err := GetPackages(tagTempl)
|
||||
inst.Imports = append(inst.Imports, BuiltinImports...)
|
||||
if tagTempl != "" {
|
||||
p := &build.Instance{
|
||||
PkgName: filepath.Base("vela/custom"),
|
||||
ImportPath: "vela/custom",
|
||||
}
|
||||
if err := p.AddFile("-", tagTempl); err != nil {
|
||||
return err
|
||||
}
|
||||
inst.Imports = append(inst.Imports, p)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func initBuiltinImports() ([]*build.Instance, error) {
|
||||
imports := make([]*build.Instance, 0)
|
||||
pkgs, err := GetPackages()
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
for path, content := range pkgs {
|
||||
p := &build.Instance{
|
||||
@@ -80,9 +108,9 @@ func AddImportsFor(inst *build.Instance, tagTempl string) error {
|
||||
ImportPath: path,
|
||||
}
|
||||
if err := p.AddFile("-", content); err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
inst.Imports = append(inst.Imports, p)
|
||||
imports = append(imports, p)
|
||||
}
|
||||
return nil
|
||||
return imports, nil
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ import (
|
||||
)
|
||||
|
||||
func TestGetPackages(t *testing.T) {
|
||||
pkgs, err := GetPackages("context: _")
|
||||
pkgs, err := GetPackages()
|
||||
assert.NilError(t, err)
|
||||
var r cue.Runtime
|
||||
for path, content := range pkgs {
|
||||
@@ -36,8 +36,8 @@ func TestGetPackages(t *testing.T) {
|
||||
|
||||
builder := &build.Instance{}
|
||||
builder.AddFile("-", `
|
||||
import "vela/op"
|
||||
out: op.context`)
|
||||
import "vela/custom"
|
||||
out: custom.context`)
|
||||
err = AddImportsFor(builder, "context: id: \"xxx\"")
|
||||
assert.NilError(t, err)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user