diff --git a/pkg/compiler/backend/common.go b/pkg/compiler/backend/common.go index 1627c5e8..db558e44 100644 --- a/pkg/compiler/backend/common.go +++ b/pkg/compiler/backend/common.go @@ -16,7 +16,6 @@ package backend import ( - "fmt" "os/exec" "github.com/mudler/luet/pkg/compiler" @@ -49,43 +48,29 @@ func NewBackend(s string) compiler.CompilerBackend { return compilerBackend } -func runCommand(cmd *exec.Cmd) (string, error) { +func runCommand(cmd *exec.Cmd) error { + output := "" buffered := !config.LuetCfg.GetGeneral().ShowBuildOutput - if buffered { - Spinner(22) - defer SpinnerStop() - } - - ans := "" writer := NewBackendWriter(buffered) cmd.Stdout = writer cmd.Stderr = writer + if buffered { + Spinner(22) + defer SpinnerStop() + } + err := cmd.Start() if err != nil { - return "", errors.Wrap(err, "Failed starting build") + return errors.Wrap(err, "Failed starting command") } err = cmd.Wait() if err != nil { - return "", errors.Wrap(err, "Failed waiting for building command") + output = writer.GetCombinedOutput() + return errors.Wrapf(err, "Failed running command: %s", output) } - res := cmd.ProcessState.ExitCode() - if res != 0 { - errMsg := fmt.Sprintf("Failed building image (exiting with %d)", res) - if buffered { - errMsg = fmt.Sprintf("Failed building image (exiting with %d): %s", - res, writer.GetCombinedOutput()) - } - - return "", errors.Wrap(err, errMsg) - } - - if buffered { - ans = writer.GetCombinedOutput() - } - - return ans, nil + return nil } diff --git a/pkg/compiler/backend/simpledocker.go b/pkg/compiler/backend/simpledocker.go index 824569c2..6c0e6d56 100644 --- a/pkg/compiler/backend/simpledocker.go +++ b/pkg/compiler/backend/simpledocker.go @@ -56,7 +56,7 @@ func (*SimpleDocker) BuildImage(opts compiler.CompilerBackendOptions) error { Info(":whale2: Building image " + name) cmd := exec.Command("docker", buildarg...) cmd.Dir = path - _, err := runCommand(cmd) + err := runCommand(cmd) if err != nil { return err } diff --git a/pkg/compiler/backend/simpleimg.go b/pkg/compiler/backend/simpleimg.go index c75f9da9..67075513 100644 --- a/pkg/compiler/backend/simpleimg.go +++ b/pkg/compiler/backend/simpleimg.go @@ -49,7 +49,7 @@ func (*SimpleImg) BuildImage(opts compiler.CompilerBackendOptions) error { cmd := exec.Command("img", buildarg...) cmd.Dir = path - _, err := runCommand(cmd) + err := runCommand(cmd) if err != nil { return err } diff --git a/pkg/compiler/backend/writer.go b/pkg/compiler/backend/writer.go index ec2ff8d2..db30a1b5 100644 --- a/pkg/compiler/backend/writer.go +++ b/pkg/compiler/backend/writer.go @@ -1,4 +1,5 @@ // Copyright © 2021 Daniele Rondina +// Ettore Di Giacinto // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -23,21 +24,23 @@ import ( type BackendWriter struct { BufferedOutput bool - Buffer bytes.Buffer + Buffer *bytes.Buffer } func NewBackendWriter(buffered bool) *BackendWriter { return &BackendWriter{ BufferedOutput: buffered, + Buffer: &bytes.Buffer{}, } } func (b *BackendWriter) Write(p []byte) (int, error) { if b.BufferedOutput { return b.Buffer.Write(p) - } else { - Msg("info", false, false, (string(p))) } + + Msg("info", false, false, (string(p))) + return len(p), nil }