engine.#Copy matches docker.#Copy

Signed-off-by: Richard Jones <richard@dagger.io>
This commit is contained in:
Richard Jones 2022-01-27 20:09:12 -07:00
parent 39e206e7d2
commit 7eb10f96fb
No known key found for this signature in database
GPG Key ID: CFB3A382EB166F4C
6 changed files with 29 additions and 30 deletions

View File

@ -69,9 +69,15 @@ package engine
// Copy files from one FS tree to another // Copy files from one FS tree to another
#Copy: { #Copy: {
$dagger: task: _name: "Copy" $dagger: task: _name: "Copy"
// Input of the operation
input: #FS input: #FS
#CopyInfo // Contents to copy
contents: #FS
// Source path (optional)
source: string | *"/"
// Destination path (optional)
dest: string | *"/"
// Output of the operation
output: #FS output: #FS
} }

View File

@ -26,10 +26,8 @@ import (
// Copy action // Copy action
_copy: engine.#Copy & { _copy: engine.#Copy & {
"input": engine.#Scratch "input": engine.#Scratch
source: { contents: input
root: input source: path
"path": path
}
dest: "/" dest: "/"
} }

View File

@ -29,17 +29,17 @@ func (t *copyTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.
return nil, err return nil, err
} }
sourceRoot, err := pctx.FS.FromValue(v.Lookup("source.root")) contents, err := pctx.FS.FromValue(v.Lookup("contents"))
if err != nil { if err != nil {
return nil, err return nil, err
} }
sourceState, err := sourceRoot.State() contentsState, err := contents.State()
if err != nil { if err != nil {
return nil, err return nil, err
} }
sourcePath, err := v.Lookup("source.path").String() sourcePath, err := v.Lookup("source").String()
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -51,7 +51,7 @@ func (t *copyTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.
outputState := inputState.File( outputState := inputState.File(
llb.Copy( llb.Copy(
sourceState, contentsState,
sourcePath, sourcePath,
destPath, destPath,
// FIXME: allow more configurable llb options // FIXME: allow more configurable llb options

View File

@ -30,12 +30,11 @@ engine.#Plan & {
copy: engine.#Copy & { copy: engine.#Copy & {
input: image.output input: image.output
source: { contents: exec.output
root: exec.output source: "/output.txt"
path: "/output.txt"
}
dest: "/output.txt" dest: "/output.txt"
} }
verify_copy: engine.#ReadFile & { verify_copy: engine.#ReadFile & {
input: copy.output input: copy.output
path: "/output.txt" path: "/output.txt"

View File

@ -30,10 +30,8 @@ engine.#Plan & {
copy: engine.#Copy & { copy: engine.#Copy & {
input: image.output input: image.output
source: { contents: exec.output
root: exec.output source: "/output.txt"
path: "/output.txt"
}
dest: "/output.txt" dest: "/output.txt"
} }
verify_copy: engine.#ReadFile & { verify_copy: engine.#ReadFile & {

View File

@ -24,10 +24,8 @@ engine.#Plan & {
copy: engine.#Copy & { copy: engine.#Copy & {
input: busybox1_34_1.output input: busybox1_34_1.output
source: { contents: alpine3_15_0.output
root: alpine3_15_0.output source: "/etc/alpine-release"
path: "/etc/alpine-release"
}
dest: "/alpine3_15_0_release" dest: "/alpine3_15_0_release"
} }