diff --git a/dagger/pipeline.go b/dagger/pipeline.go index 56a76604..b1fe2c8a 100644 --- a/dagger/pipeline.go +++ b/dagger/pipeline.go @@ -842,6 +842,32 @@ func dockerBuildOpts(op *compiler.Value) (map[string]string, error) { opts["filename"] = filename } + if target := op.Lookup("target"); target.Exists() { + tgr, err := target.String() + if err != nil { + return nil, err + } + opts["target"] = tgr + } + + if hosts := op.Lookup("hosts"); hosts.Exists() { + p := []string{} + fields, err := hosts.Fields() + if err != nil { + return nil, err + } + for _, host := range fields { + s, err := host.Value.String() + if err != nil { + return nil, err + } + p = append(p, host.Label()+"="+s) + } + if len(p) > 0 { + opts["add-hosts"] = strings.Join(p, ",") + } + } + if buildArgs := op.Lookup("buildArg"); buildArgs.Exists() { fields, err := buildArgs.Fields() if err != nil { diff --git a/stdlib/dagger/op/op.cue b/stdlib/dagger/op/op.cue index cbf09096..278259c1 100644 --- a/stdlib/dagger/op/op.cue +++ b/stdlib/dagger/op/op.cue @@ -92,6 +92,8 @@ package op platforms?: [...string] buildArg?: [string]: string label?: [string]: string + target?: string + hosts?: [string]: string } #WriteFile: {