Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Command logs #842

Merged
merged 4 commits into from
Jan 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 29 additions & 14 deletions bitrise/dependencies.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package bitrise
import (
"errors"
"fmt"
"os"
"os/exec"
"strings"
"time"

Expand Down Expand Up @@ -305,8 +305,9 @@ func InstallWithBrewIfNeeded(brewDep stepmanModels.BrewDepModel, isCIMode bool)

if !isDepInstalled {
// Tool isn't installed -- install it...
log.Infof(`This step requires "%s" to be available, but it is not installed.`, brewDep.GetBinaryName())

if !isCIMode {
log.Infof(`This step requires "%s" to be available, but it is not installed.`, brewDep.GetBinaryName())
allow, err := goinp.AskForBoolWithDefault(`Would you like to install the "`+brewDep.Name+`" package with brew?`, true)
if err != nil {
return err
Expand All @@ -316,11 +317,16 @@ func InstallWithBrewIfNeeded(brewDep stepmanModels.BrewDepModel, isCIMode bool)
}
}

log.Infof("(%s) isn't installed, installing...", brewDep.Name)
if cmdOut, err := command.RunCommandAndReturnCombinedStdoutAndStderr("brew", "install", brewDep.Name); err != nil {
log.Errorf("brew install %s failed -- out: (%s) err: (%s)", brewDep.Name, cmdOut, err)
return err
cmd := command.New("brew", "install", brewDep.Name)
log.Infof("Installing package: %s...", cmd.PrintableCommandArgs())
if out, err := cmd.RunAndReturnTrimmedCombinedOutput(); err != nil {
var exitErr *exec.ExitError
if errors.As(err, &exitErr) {
return fmt.Errorf("command failed with exit status %d (%s): %s", exitErr.ExitCode(), cmd.PrintableCommandArgs(), out)
}
return fmt.Errorf("executing command failed (%s): %w", cmd.PrintableCommandArgs(), err)
}

log.Infof(" * "+colorstring.Green("[OK]")+" %s installed", brewDep.Name)
}

Expand Down Expand Up @@ -360,8 +366,9 @@ func InstallWithAptGetIfNeeded(aptGetDep stepmanModels.AptGetDepModel, isCIMode

if !isDepInstalled {
// Tool isn't installed -- install it...
log.Infof(`This step requires "%s" to be available, but it is not installed.`, aptGetDep.GetBinaryName())

if !isCIMode {
log.Infof(`This step requires "%s" to be available, but it is not installed.`, aptGetDep.GetBinaryName())
allow, err := goinp.AskForBoolWithDefault(`Would you like to install the "`+aptGetDep.Name+`" package with apt-get?`, true)
if err != nil {
return err
Expand All @@ -373,17 +380,25 @@ func InstallWithAptGetIfNeeded(aptGetDep stepmanModels.AptGetDepModel, isCIMode

if !isAptGetUpdated {
cmd := command.New("sudo", "apt-get", "update")
log.Infof(cmd.PrintableCommandArgs())
if err := cmd.SetStdout(os.Stdout).SetStderr(os.Stderr).Run(); err != nil {
log.Errorf("apt-get update failed, error: %s", err)
log.Infof("Updating package information: %s...", cmd.PrintableCommandArgs())
if out, err := cmd.RunAndReturnTrimmedCombinedOutput(); err != nil {
var exitErr *exec.ExitError
if errors.As(err, &exitErr) {
return fmt.Errorf("command failed with exit status %d (%s): %s", exitErr.ExitCode(), cmd.PrintableCommandArgs(), out)
}
return fmt.Errorf("executing command failed (%s): %w", cmd.PrintableCommandArgs(), err)
}
isAptGetUpdated = true
}

log.Infof("(%s) isn't installed, installing...", aptGetDep.Name)
if cmdOut, err := command.RunCommandAndReturnCombinedStdoutAndStderr("sudo", "apt-get", "-y", "install", aptGetDep.Name); err != nil {
log.Errorf("sudo apt-get -y install %s failed -- out: (%s) err: (%s)", aptGetDep.Name, cmdOut, err)
return err
cmd := command.New("sudo", "apt-get", "-y", "install", aptGetDep.Name)
log.Infof("Installing package: %s...", cmd.PrintableCommandArgs())
if out, err := cmd.RunAndReturnTrimmedCombinedOutput(); err != nil {
var exitErr *exec.ExitError
if errors.As(err, &exitErr) {
return fmt.Errorf("command failed with exit status %d (%s): %s", exitErr.ExitCode(), cmd.PrintableCommandArgs(), out)
}
return fmt.Errorf("executing command failed (%s): %w", cmd.PrintableCommandArgs(), err)
}

log.Infof(" * "+colorstring.Green("[OK]")+" %s installed", aptGetDep.Name)
Expand Down
12 changes: 6 additions & 6 deletions cli/json_output.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,20 @@ func (l RawLogger) Print(f Formatable) {
}
}

// JSONLoger ...
type JSONLoger struct {
// JSONLogger ...
type JSONLogger struct {
writer io.Writer
}

// NewDefaultJSONLoger ...
func NewDefaultJSONLoger() JSONLoger {
return JSONLoger{
// NewDefaultJSONLogger ...
func NewDefaultJSONLogger() JSONLogger {
return JSONLogger{
writer: os.Stdout,
}
}

// Print ...
func (l JSONLoger) Print(f Formatable) {
func (l JSONLogger) Print(f Formatable) {
if _, err := fmt.Fprint(l.writer, f.JSON()); err != nil {
log.Printf("failed to print message: %s, error: %s\n", f.JSON(), err)
}
Expand Down
2 changes: 1 addition & 1 deletion cli/plugin_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ func pluginInfo(c *cli.Context) error {
var logger Logger
logger = NewDefaultRawLogger()
if format == output.FormatJSON {
logger = NewDefaultJSONLoger()
logger = NewDefaultJSONLogger()
}
// ---

Expand Down
2 changes: 1 addition & 1 deletion cli/plugin_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func pluginList(c *cli.Context) error {
var logger Logger
logger = NewDefaultRawLogger()
if format == output.FormatJSON {
logger = NewDefaultJSONLoger()
logger = NewDefaultJSONLogger()
}
// ---

Expand Down
2 changes: 1 addition & 1 deletion cli/validate.go
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ func validate(c *cli.Context) error {
if format == output.FormatRaw {
log = NewDefaultRawLogger()
} else if format == output.FormatJSON {
log = NewDefaultJSONLoger()
log = NewDefaultJSONLogger()
} else {
log.Print(NewValidationError(fmt.Sprintf("Invalid format: %s", format)))
os.Exit(1)
Expand Down
2 changes: 1 addition & 1 deletion cli/workflow_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ func workflowList(c *cli.Context) error {
var logger Logger
logger = NewDefaultRawLogger()
if format == output.FormatJSON {
logger = NewDefaultJSONLoger()
logger = NewDefaultJSONLogger()
}

if minimal && idOnly {
Expand Down
2 changes: 0 additions & 2 deletions utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package utils

import (
"fmt"
"os"
"os/exec"
"strings"
"time"
Expand All @@ -11,7 +10,6 @@ import (
// CheckProgramInstalledPath ...
func CheckProgramInstalledPath(clcommand string) (string, error) {
cmd := exec.Command("which", clcommand)
cmd.Stderr = os.Stderr
outBytes, err := cmd.Output()
outStr := string(outBytes)
return strings.TrimSpace(outStr), err
Expand Down