diff --git a/pkg/compiler/backend/common.go b/pkg/compiler/backend/common.go index c1d107c8..8209bd22 100644 --- a/pkg/compiler/backend/common.go +++ b/pkg/compiler/backend/common.go @@ -21,7 +21,6 @@ import ( "github.com/mudler/luet/pkg/compiler" "github.com/mudler/luet/pkg/config" - . "github.com/mudler/luet/pkg/logger" "github.com/google/go-containerregistry/pkg/crane" "github.com/pkg/errors" @@ -53,11 +52,6 @@ func runCommand(cmd *exec.Cmd) (string, error) { ans := "" writer := NewBackendWriter(!config.LuetCfg.GetGeneral().ShowBuildOutput) - if config.LuetCfg.GetGeneral().ShowBuildOutput { - // We have realtime output from command. Quiet spinner. - SpinnerStop() - } - cmd.Stdout = writer cmd.Stderr = writer @@ -82,9 +76,7 @@ func runCommand(cmd *exec.Cmd) (string, error) { return "", errors.Wrap(err, errMsg) } - if config.LuetCfg.GetGeneral().ShowBuildOutput { - Spinner(22) - } else { + if !config.LuetCfg.GetGeneral().ShowBuildOutput { ans = writer.GetCombinedOutput() } diff --git a/pkg/compiler/backend/simpledocker.go b/pkg/compiler/backend/simpledocker.go index dfd3cd3c..98a42ca5 100644 --- a/pkg/compiler/backend/simpledocker.go +++ b/pkg/compiler/backend/simpledocker.go @@ -53,6 +53,11 @@ func (*SimpleDocker) BuildImage(opts compiler.CompilerBackendOptions) error { } buildarg := []string{"build", "-f", dockerfileName, "-t", name, context} + if !config.LuetCfg.GetGeneral().ShowBuildOutput { + Spinner(22) + defer SpinnerStop() + } + Info(":whale2: Building image " + name) cmd := exec.Command("docker", buildarg...) cmd.Dir = path @@ -61,12 +66,18 @@ func (*SimpleDocker) BuildImage(opts compiler.CompilerBackendOptions) error { return err } + if !config.LuetCfg.GetGeneral().ShowBuildOutput { + SpinnerStop() + } + Info(":whale: Building image " + name + " done") if os.Getenv("DOCKER_SQUASH") == "true" { Info(":whale: Squashing image " + name) var client *docker.Client + Spinner(22) + client, err = docker.NewClientFromEnv() if err != nil { return errors.Wrap(err, "could not connect to the Docker daemon") @@ -75,6 +86,7 @@ func (*SimpleDocker) BuildImage(opts compiler.CompilerBackendOptions) error { if err != nil { return errors.Wrap(err, "Failed squashing image") } + Info(":whale: Squashing image " + name + " done") } @@ -96,11 +108,16 @@ func (*SimpleDocker) DownloadImage(opts compiler.CompilerBackendOptions) error { name := opts.ImageName buildarg := []string{"pull", name} Debug(":whale: Downloading image " + name) + + Spinner(22) + defer SpinnerStop() + cmd := exec.Command("docker", buildarg...) out, err := cmd.CombinedOutput() if err != nil { return errors.Wrap(err, "Failed pulling image: "+string(out)) } + Info(":whale: Downloaded image:", name) return nil } @@ -137,6 +154,10 @@ func (*SimpleDocker) RemoveImage(opts compiler.CompilerBackendOptions) error { func (*SimpleDocker) Push(opts compiler.CompilerBackendOptions) error { name := opts.ImageName pusharg := []string{"push", name} + + Spinner(22) + defer SpinnerStop() + out, err := exec.Command("docker", pusharg...).CombinedOutput() if err != nil { return errors.Wrap(err, "Failed pushing image: "+string(out)) @@ -165,6 +186,10 @@ func (*SimpleDocker) ExportImage(opts compiler.CompilerBackendOptions) error { buildarg := []string{"save", name, "-o", path} Debug(":whale: Saving image " + name) + + Spinner(22) + defer SpinnerStop() + out, err := exec.Command("docker", buildarg...).CombinedOutput() if err != nil { return errors.Wrap(err, "Failed exporting image: "+string(out)) @@ -189,10 +214,16 @@ func (b *SimpleDocker) ExtractRootfs(opts compiler.CompilerBackendOptions, keepP defer os.RemoveAll(tempexport) // clean up imageExport := filepath.Join(tempexport, "image.tar") + + Spinner(22) + defer SpinnerStop() + if err := b.ExportImage(compiler.CompilerBackendOptions{ImageName: name, Destination: imageExport}); err != nil { return errors.Wrap(err, "failed while extracting rootfs for "+name) } + SpinnerStop() + src := imageExport if src == "" && opts.ImageName != "" { diff --git a/pkg/compiler/backend/simpleimg.go b/pkg/compiler/backend/simpleimg.go index 54aae668..a85757f8 100644 --- a/pkg/compiler/backend/simpleimg.go +++ b/pkg/compiler/backend/simpleimg.go @@ -21,6 +21,7 @@ import ( "strings" "github.com/mudler/luet/pkg/compiler" + "github.com/mudler/luet/pkg/config" . "github.com/mudler/luet/pkg/logger" "github.com/pkg/errors" @@ -46,6 +47,12 @@ func (*SimpleImg) BuildImage(opts compiler.CompilerBackendOptions) error { buildarg := []string{"build", "-f", dockerfileName, "-t", name, context} Info(":tea: Building image " + name) + + if !config.LuetCfg.GetGeneral().ShowBuildOutput { + Spinner(22) + defer SpinnerStop() + } + cmd := exec.Command("img", buildarg...) cmd.Dir = path _, err := runCommand(cmd) @@ -73,11 +80,13 @@ func (*SimpleImg) RemoveImage(opts compiler.CompilerBackendOptions) error { } func (*SimpleImg) DownloadImage(opts compiler.CompilerBackendOptions) error { - name := opts.ImageName buildarg := []string{"pull", name} - Debug(":tea: Downloading image " + name) + + Spinner(22) + defer SpinnerStop() + cmd := exec.Command("img", buildarg...) out, err := cmd.CombinedOutput() if err != nil { @@ -138,6 +147,10 @@ func (*SimpleImg) ExportImage(opts compiler.CompilerBackendOptions) error { path := opts.Destination buildarg := []string{"save", "-o", path, name} Debug(":tea: Saving image " + name) + + Spinner(22) + defer SpinnerStop() + out, err := exec.Command("img", buildarg...).CombinedOutput() if err != nil { return errors.Wrap(err, "Failed exporting image: "+string(out)) @@ -158,8 +171,13 @@ func (s *SimpleImg) ExtractRootfs(opts compiler.CompilerBackendOptions, keepPerm } os.RemoveAll(path) + buildarg := []string{"unpack", "-o", path, name} Debug(":tea: Extracting image " + name) + + Spinner(22) + defer SpinnerStop() + out, err := exec.Command("img", buildarg...).CombinedOutput() if err != nil { return errors.Wrap(err, "Failed extracting image: "+string(out)) diff --git a/pkg/compiler/compiler.go b/pkg/compiler/compiler.go index f3ce50f9..0c97054f 100644 --- a/pkg/compiler/compiler.go +++ b/pkg/compiler/compiler.go @@ -148,8 +148,6 @@ func (cs *LuetCompiler) CompileWithReverseDeps(keepPermissions bool, ps Compilat } func (cs *LuetCompiler) CompileParallel(keepPermissions bool, ps CompilationSpecs) ([]Artifact, []error) { - Spinner(22) - defer SpinnerStop() all := make(chan CompilationSpec) artifacts := []Artifact{} mutex := &sync.Mutex{}