diff --git a/plan/task/scratch.go b/plan/task/scratch.go new file mode 100644 index 00000000..e27a5da4 --- /dev/null +++ b/plan/task/scratch.go @@ -0,0 +1,31 @@ +package task + +import ( + "context" + + "github.com/moby/buildkit/client/llb" + "go.dagger.io/dagger/compiler" + "go.dagger.io/dagger/plancontext" + "go.dagger.io/dagger/solver" +) + +func init() { + Register("Scratch", func() Task { return &scratchTask{} }) +} + +type scratchTask struct { +} + +func (t *scratchTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { + st := llb.Scratch() + 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{}{ + "output": fs.MarshalCUE(), + }) +} diff --git a/tests/tasks.bats b/tests/tasks.bats index 090106ca..dda02fb9 100644 --- a/tests/tasks.bats +++ b/tests/tasks.bats @@ -88,3 +88,8 @@ setup() { "$DAGGER" --europa up ./build_auth.cue } +@test "task: #Scratch" { + cd "$TESTDIR"/tasks/scratch + "$DAGGER" --europa up ./scratch.cue -l debug +} + diff --git a/tests/tasks/scratch/cue.mod/module.cue b/tests/tasks/scratch/cue.mod/module.cue new file mode 100644 index 00000000..f8af9cef --- /dev/null +++ b/tests/tasks/scratch/cue.mod/module.cue @@ -0,0 +1 @@ +module: "" diff --git a/tests/tasks/scratch/cue.mod/pkg/.gitignore b/tests/tasks/scratch/cue.mod/pkg/.gitignore new file mode 100644 index 00000000..2d4dc1ae --- /dev/null +++ b/tests/tasks/scratch/cue.mod/pkg/.gitignore @@ -0,0 +1,3 @@ +# generated by dagger +alpha.dagger.io +dagger.lock diff --git a/tests/tasks/scratch/scratch.cue b/tests/tasks/scratch/scratch.cue new file mode 100644 index 00000000..2d1472c0 --- /dev/null +++ b/tests/tasks/scratch/scratch.cue @@ -0,0 +1,31 @@ +package main + +import ( + "alpha.dagger.io/europa/dagger/engine" +) + +engine.#Plan & { + actions: { + image: engine.#Pull & { + source: "alpine:3.15.0@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3" + } + + scratch: engine.#Scratch + + exec: engine.#Exec & { + input: image.output + mounts: fs: { + dest: "/scratch" + contents: scratch.output + } + workdir: "/" + args: [ + "sh", "-c", + #""" + ls -al + """#, + ] + } + + } +}