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: {
$dagger: task: _name: "Copy"
// Input of the operation
input: #FS
#CopyInfo
// Contents to copy
contents: #FS
// Source path (optional)
source: string | *"/"
// Destination path (optional)
dest: string | *"/"
// Output of the operation
output: #FS
}

View File

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

View File

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

View File

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

View File

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

View File

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