mirror of
https://github.com/genuinetools/reg.git
synced 2024-09-17 16:11:01 -04:00
83 lines
2.2 KiB
Go
83 lines
2.2 KiB
Go
|
package build // import "github.com/docker/docker/integration-cli/cli/build"
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/docker/docker/internal/test/fakecontext"
|
||
|
"gotest.tools/icmd"
|
||
|
)
|
||
|
|
||
|
type testingT interface {
|
||
|
Fatal(args ...interface{})
|
||
|
Fatalf(string, ...interface{})
|
||
|
}
|
||
|
|
||
|
// WithStdinContext sets the build context from the standard input with the specified reader
|
||
|
func WithStdinContext(closer io.ReadCloser) func(*icmd.Cmd) func() {
|
||
|
return func(cmd *icmd.Cmd) func() {
|
||
|
cmd.Command = append(cmd.Command, "-")
|
||
|
cmd.Stdin = closer
|
||
|
return func() {
|
||
|
// FIXME(vdemeester) we should not ignore the error here…
|
||
|
closer.Close()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// WithDockerfile creates / returns a CmdOperator to set the Dockerfile for a build operation
|
||
|
func WithDockerfile(dockerfile string) func(*icmd.Cmd) func() {
|
||
|
return func(cmd *icmd.Cmd) func() {
|
||
|
cmd.Command = append(cmd.Command, "-")
|
||
|
cmd.Stdin = strings.NewReader(dockerfile)
|
||
|
return nil
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// WithoutCache makes the build ignore cache
|
||
|
func WithoutCache(cmd *icmd.Cmd) func() {
|
||
|
cmd.Command = append(cmd.Command, "--no-cache")
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// WithContextPath sets the build context path
|
||
|
func WithContextPath(path string) func(*icmd.Cmd) func() {
|
||
|
return func(cmd *icmd.Cmd) func() {
|
||
|
cmd.Command = append(cmd.Command, path)
|
||
|
return nil
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// WithExternalBuildContext use the specified context as build context
|
||
|
func WithExternalBuildContext(ctx *fakecontext.Fake) func(*icmd.Cmd) func() {
|
||
|
return func(cmd *icmd.Cmd) func() {
|
||
|
cmd.Dir = ctx.Dir
|
||
|
cmd.Command = append(cmd.Command, ".")
|
||
|
return nil
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// WithBuildContext sets up the build context
|
||
|
func WithBuildContext(t testingT, contextOperators ...func(*fakecontext.Fake) error) func(*icmd.Cmd) func() {
|
||
|
// FIXME(vdemeester) de-duplicate that
|
||
|
ctx := fakecontext.New(t, "", contextOperators...)
|
||
|
return func(cmd *icmd.Cmd) func() {
|
||
|
cmd.Dir = ctx.Dir
|
||
|
cmd.Command = append(cmd.Command, ".")
|
||
|
return closeBuildContext(t, ctx)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// WithFile adds the specified file (with content) in the build context
|
||
|
func WithFile(name, content string) func(*fakecontext.Fake) error {
|
||
|
return fakecontext.WithFile(name, content)
|
||
|
}
|
||
|
|
||
|
func closeBuildContext(t testingT, ctx *fakecontext.Fake) func() {
|
||
|
return func() {
|
||
|
if err := ctx.Close(); err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
}
|
||
|
}
|