Allow for nil buildkit References

Signed-off-by: Joel Longtine <joel@dagger.io>
This commit is contained in:
Joel Longtine 2021-12-21 10:42:05 -07:00
parent 75d5ab8f01
commit a90ff8ab94
6 changed files with 20 additions and 15 deletions

View File

@ -24,7 +24,7 @@ func (t *copyTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.
return nil, err return nil, err
} }
inputState, err := input.Result().ToState() inputState, err := input.State()
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -34,7 +34,7 @@ func (t *copyTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.
return nil, err return nil, err
} }
sourceState, err := sourceRoot.Result().ToState() sourceState, err := sourceRoot.State()
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -26,7 +26,7 @@ func (t execTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.S
if err != nil { if err != nil {
return nil, err return nil, err
} }
st, err := input.Result().ToState() st, err := input.State()
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -246,7 +246,7 @@ func (t *execTask) mountFS(pctx *plancontext.Context, dest string, mnt *compiler
} }
} }
st, err := contents.Result().ToState() st, err := contents.State()
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -3,7 +3,6 @@ package task
import ( import (
"context" "context"
"github.com/moby/buildkit/client/llb"
"go.dagger.io/dagger/compiler" "go.dagger.io/dagger/compiler"
"go.dagger.io/dagger/plancontext" "go.dagger.io/dagger/plancontext"
"go.dagger.io/dagger/solver" "go.dagger.io/dagger/solver"
@ -17,13 +16,7 @@ type scratchTask struct {
} }
func (t *scratchTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { func (t *scratchTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) {
st := llb.Scratch() fs := pctx.FS.New(nil)
result, err := s.Solve(ctx, st, pctx.Platform.Get())
if err != nil {
return nil, err
}
fs := pctx.FS.New(result)
return compiler.NewValue().FillFields(map[string]interface{}{ return compiler.NewValue().FillFields(map[string]interface{}{
"output": fs.MarshalCUE(), "output": fs.MarshalCUE(),

View File

@ -60,7 +60,7 @@ func (t *writeFileTask) Run(ctx context.Context, pctx *plancontext.Context, s so
return nil, err return nil, err
} }
inputState, err := input.Result().ToState() inputState, err := input.State()
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -6,6 +6,7 @@ import (
"cuelang.org/go/cue" "cuelang.org/go/cue"
"github.com/google/uuid" "github.com/google/uuid"
"github.com/moby/buildkit/client/llb"
bkgw "github.com/moby/buildkit/frontend/gateway/client" bkgw "github.com/moby/buildkit/frontend/gateway/client"
"go.dagger.io/dagger/compiler" "go.dagger.io/dagger/compiler"
"go.dagger.io/dagger/stdlib" "go.dagger.io/dagger/stdlib"
@ -32,6 +33,17 @@ func (fs *FS) Result() bkgw.Reference {
return fs.result return fs.result
} }
// func (fs *FS) FS() *solver.BuildkitFS {
// return solver.NewBuildkitFS(fs.result)
// }
func (fs *FS) State() (llb.State, error) {
if fs.Result() == nil {
return llb.State{}, nil
}
return fs.Result().ToState()
}
func (fs *FS) MarshalCUE() *compiler.Value { func (fs *FS) MarshalCUE() *compiler.Value {
v := compiler.NewValue() v := compiler.NewValue()
if err := v.FillPath(fsIDPath, fs.id); err != nil { if err := v.FillPath(fsIDPath, fs.id); err != nil {

View File

@ -22,10 +22,10 @@ engine.#Plan & {
args: [ args: [
"sh", "-c", "sh", "-c",
#""" #"""
ls -al test "$(ls -A /)" != ""
test "$(ls -A /scratch)" = ""
"""#, """#,
] ]
} }
} }
} }