diff --git a/pkg/cue/model/value/value_test.go b/pkg/cue/model/value/value_test.go index 66313aff0..f9cc2b3b5 100644 --- a/pkg/cue/model/value/value_test.go +++ b/pkg/cue/model/value/value_test.go @@ -718,10 +718,10 @@ func TestImports(t *testing.T) { context: stepSessionID: "3w9qkdgn5w"` v, err := NewValue(` import ( - "vela/op" + "vela/custom" ) -id: op.context.stepSessionID +id: custom.context.stepSessionID `+cont, nil, cont) assert.NilError(t, err) diff --git a/pkg/stdlib/packages.go b/pkg/stdlib/packages.go index 646d736f4..83aa46916 100644 --- a/pkg/stdlib/packages.go +++ b/pkg/stdlib/packages.go @@ -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 } diff --git a/pkg/stdlib/packages_test.go b/pkg/stdlib/packages_test.go index dea324159..39d672565 100644 --- a/pkg/stdlib/packages_test.go +++ b/pkg/stdlib/packages_test.go @@ -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) diff --git a/pkg/workflow/tasks/custom/task.go b/pkg/workflow/tasks/custom/task.go index 5dceabf4a..7df19bd59 100644 --- a/pkg/workflow/tasks/custom/task.go +++ b/pkg/workflow/tasks/custom/task.go @@ -265,7 +265,7 @@ func (t *TaskLoader) makeValue(ctx wfContext.Context, templ string, id string, p } contextTempl += "\n" + pCtx.ExtendedContextFile() - return value.NewValue(templ+contextTempl, t.pd, contextTempl, value.ProcessScript, value.TagFieldOrder) + return value.NewValue(templ+contextTempl, t.pd, "", value.ProcessScript, value.TagFieldOrder) } type executor struct {