progress: add progress.OSBuildOptions struct
This commit adds a `OSBuildOptions` struct that can be used to pass (optional) options to the `progress.RunOSBuild()` helper. This make it easier to expand with more options.
This commit is contained in:
parent
e51a56b084
commit
a875a16309
2 changed files with 21 additions and 11 deletions
|
|
@ -317,8 +317,18 @@ func (b *debugProgressBar) SetProgress(subLevel int, msg string, done int, total
|
|||
return nil
|
||||
}
|
||||
|
||||
type OSBuildOptions struct {
|
||||
StoreDir string
|
||||
OutputDir string
|
||||
ExtraEnv []string
|
||||
}
|
||||
|
||||
// XXX: merge variant back into images/pkg/osbuild/osbuild-exec.go
|
||||
func RunOSBuild(pb ProgressBar, manifest []byte, store, outputDirectory string, exports, extraEnv []string) error {
|
||||
func RunOSBuild(pb ProgressBar, manifest []byte, exports []string, opts *OSBuildOptions) error {
|
||||
if opts == nil {
|
||||
opts = &OSBuildOptions{}
|
||||
}
|
||||
|
||||
// To keep maximum compatibility keep the old behavior to run osbuild
|
||||
// directly and show all messages unless we have a "real" progress bar.
|
||||
//
|
||||
|
|
@ -328,20 +338,20 @@ func RunOSBuild(pb ProgressBar, manifest []byte, store, outputDirectory string,
|
|||
// just run with the new runOSBuildWithProgress() helper.
|
||||
switch pb.(type) {
|
||||
case *terminalProgressBar, *debugProgressBar:
|
||||
return runOSBuildWithProgress(pb, manifest, store, outputDirectory, exports, extraEnv)
|
||||
return runOSBuildWithProgress(pb, manifest, exports, opts)
|
||||
default:
|
||||
return runOSBuildNoProgress(pb, manifest, store, outputDirectory, exports, extraEnv)
|
||||
return runOSBuildNoProgress(pb, manifest, exports, opts)
|
||||
}
|
||||
}
|
||||
|
||||
func runOSBuildNoProgress(pb ProgressBar, manifest []byte, store, outputDirectory string, exports, extraEnv []string) error {
|
||||
_, err := osbuild.RunOSBuild(manifest, store, outputDirectory, exports, nil, extraEnv, false, os.Stderr)
|
||||
func runOSBuildNoProgress(pb ProgressBar, manifest []byte, exports []string, opts *OSBuildOptions) error {
|
||||
_, err := osbuild.RunOSBuild(manifest, opts.StoreDir, opts.OutputDir, exports, nil, opts.ExtraEnv, false, os.Stderr)
|
||||
return err
|
||||
}
|
||||
|
||||
var osbuildCmd = "osbuild"
|
||||
|
||||
func runOSBuildWithProgress(pb ProgressBar, manifest []byte, store, outputDirectory string, exports, extraEnv []string) (err error) {
|
||||
func runOSBuildWithProgress(pb ProgressBar, manifest []byte, exports []string, opts *OSBuildOptions) (err error) {
|
||||
rp, wp, err := os.Pipe()
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot create pipe for osbuild: %w", err)
|
||||
|
|
@ -351,8 +361,8 @@ func runOSBuildWithProgress(pb ProgressBar, manifest []byte, store, outputDirect
|
|||
|
||||
cmd := exec.Command(
|
||||
osbuildCmd,
|
||||
"--store", store,
|
||||
"--output-directory", outputDirectory,
|
||||
"--store", opts.StoreDir,
|
||||
"--output-directory", opts.OutputDir,
|
||||
"--monitor=JSONSeqMonitor",
|
||||
"--monitor-fd=3",
|
||||
"-",
|
||||
|
|
@ -362,7 +372,7 @@ func runOSBuildWithProgress(pb ProgressBar, manifest []byte, store, outputDirect
|
|||
}
|
||||
|
||||
var stdio bytes.Buffer
|
||||
cmd.Env = append(os.Environ(), extraEnv...)
|
||||
cmd.Env = append(os.Environ(), opts.ExtraEnv...)
|
||||
cmd.Stdin = bytes.NewBuffer(manifest)
|
||||
cmd.Stdout = &stdio
|
||||
cmd.Stderr = &stdio
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue