Merge pull request #56 from blocklayerhq/isolate-compiler

dagger.Value: make compiler instance private
This commit is contained in:
Andrea Luzzardi 2021-01-20 16:20:55 -08:00 committed by GitHub
commit faecc0a1ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 10 deletions

View File

@ -158,7 +158,7 @@ func (c *Client) Compute(ctx context.Context) (*Value, error) {
// Retrieve output
eg.Go(func() error {
defer outr.Close()
return c.outputfn(ctx, outr, out)
return c.outputfn(ctx, outr, out, cc)
})
return out, eg.Wait()
}
@ -218,7 +218,7 @@ func (c *Client) buildfn(ctx context.Context, ch chan *bk.SolveStatus, w io.Writ
}
// Read tar export stream from buildkit Build(), and extract cue output
func (c *Client) outputfn(ctx context.Context, r io.Reader, out *Value) error {
func (c *Client) outputfn(ctx context.Context, r io.Reader, out *Value, cc *Compiler) error {
lg := log.Ctx(ctx)
tr := tar.NewReader(r)
@ -242,7 +242,6 @@ func (c *Client) outputfn(ctx context.Context, r io.Reader, out *Value) error {
}
lg.Debug().Msg("outputfn: compiling & merging")
cc := out.Compiler()
v, err := cc.Compile(h.Name, tr)
if err != nil {
return err

View File

@ -21,10 +21,6 @@ func (v *Value) CueInst() *cue.Instance {
return v.inst
}
func (v *Value) Compiler() *Compiler {
return v.cc
}
func (v *Value) Wrap(v2 cue.Value) *Value {
return wrapValue(v2, v.inst, v.cc)
}
@ -142,7 +138,7 @@ func (v *Value) RangeStruct(fn func(string, *Value) error) error {
// FIXME: receive string path?
func (v *Value) Merge(x interface{}, path ...string) (*Value, error) {
if xval, ok := x.(*Value); ok {
if xval.Compiler() != v.Compiler() {
if xval.cc != v.cc {
return nil, fmt.Errorf("can't merge values from different compilers")
}
x = xval.val
@ -242,7 +238,7 @@ func (v *Value) Validate(defs ...string) error {
if len(defs) == 0 {
return nil
}
spec := v.Compiler().Spec()
spec := v.cc.Spec()
for _, def := range defs {
if err := spec.Validate(v, def); err != nil {
return err
@ -321,7 +317,7 @@ func (v *Value) ScriptOrComponent() (interface{}, error) {
func (v *Value) Op() (*Op, error) {
// Merge #Op definition from spec to get default values
spec := v.Compiler().Spec()
spec := v.cc.Spec()
v, err := spec.Get("#Op").Merge(v)
if err != nil {
return nil, err