github.com/ssdev-go/moby@v17.12.1-ce-rc2+incompatible/integration-cli/cli/build/build.go (about) 1 package build 2 3 import ( 4 "io" 5 "strings" 6 7 "github.com/docker/docker/integration-cli/cli/build/fakecontext" 8 "github.com/gotestyourself/gotestyourself/icmd" 9 ) 10 11 type testingT interface { 12 Fatal(args ...interface{}) 13 Fatalf(string, ...interface{}) 14 } 15 16 // WithStdinContext sets the build context from the standard input with the specified reader 17 func WithStdinContext(closer io.ReadCloser) func(*icmd.Cmd) func() { 18 return func(cmd *icmd.Cmd) func() { 19 cmd.Command = append(cmd.Command, "-") 20 cmd.Stdin = closer 21 return func() { 22 // FIXME(vdemeester) we should not ignore the error hereā¦ 23 closer.Close() 24 } 25 } 26 } 27 28 // WithDockerfile creates / returns a CmdOperator to set the Dockerfile for a build operation 29 func WithDockerfile(dockerfile string) func(*icmd.Cmd) func() { 30 return func(cmd *icmd.Cmd) func() { 31 cmd.Command = append(cmd.Command, "-") 32 cmd.Stdin = strings.NewReader(dockerfile) 33 return nil 34 } 35 } 36 37 // WithoutCache makes the build ignore cache 38 func WithoutCache(cmd *icmd.Cmd) func() { 39 cmd.Command = append(cmd.Command, "--no-cache") 40 return nil 41 } 42 43 // WithContextPath sets the build context path 44 func WithContextPath(path string) func(*icmd.Cmd) func() { 45 return func(cmd *icmd.Cmd) func() { 46 cmd.Command = append(cmd.Command, path) 47 return nil 48 } 49 } 50 51 // WithExternalBuildContext use the specified context as build context 52 func WithExternalBuildContext(ctx *fakecontext.Fake) func(*icmd.Cmd) func() { 53 return func(cmd *icmd.Cmd) func() { 54 cmd.Dir = ctx.Dir 55 cmd.Command = append(cmd.Command, ".") 56 return nil 57 } 58 } 59 60 // WithBuildContext sets up the build context 61 func WithBuildContext(t testingT, contextOperators ...func(*fakecontext.Fake) error) func(*icmd.Cmd) func() { 62 // FIXME(vdemeester) de-duplicate that 63 ctx := fakecontext.New(t, "", contextOperators...) 64 return func(cmd *icmd.Cmd) func() { 65 cmd.Dir = ctx.Dir 66 cmd.Command = append(cmd.Command, ".") 67 return closeBuildContext(t, ctx) 68 } 69 } 70 71 // WithFile adds the specified file (with content) in the build context 72 func WithFile(name, content string) func(*fakecontext.Fake) error { 73 return fakecontext.WithFile(name, content) 74 } 75 76 func closeBuildContext(t testingT, ctx *fakecontext.Fake) func() { 77 return func() { 78 if err := ctx.Close(); err != nil { 79 t.Fatal(err) 80 } 81 } 82 }