Skip to content

Commit

Permalink
Bug Fix #130: Forwarded all fatal messages to stderr
Browse files Browse the repository at this point in the history
  • Loading branch information
F1bonacc1 committed Jan 28, 2024
1 parent cc5a927 commit 554dbf5
Show file tree
Hide file tree
Showing 14 changed files with 45 additions and 35 deletions.
2 changes: 1 addition & 1 deletion src/cmd/down.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ var downCmd = &cobra.Command{
pcClient := client.NewClient(*pcFlags.Address, *pcFlags.PortNum, *pcFlags.LogLength)
err := pcClient.ShutDownProject()
if err != nil {
logFatal(err, "failed to stop project")
log.Fatal().Err(err).Msg("failed to stop project")
}
log.Info().Msgf("Project stopped")
},
Expand Down
3 changes: 2 additions & 1 deletion src/cmd/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cmd
import (
"fmt"
"github.com/f1bonacc1/process-compose/src/client"
"github.com/rs/zerolog/log"

"github.com/spf13/cobra"
)
Expand All @@ -15,7 +16,7 @@ var listCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
processNames, err := client.GetProcessesName(*pcFlags.Address, *pcFlags.PortNum)
if err != nil {
logFatal(err, "failed to list processes")
log.Fatal().Err(err).Msg("failed to list processes")
}
for _, proc := range processNames {
fmt.Println(proc)
Expand Down
3 changes: 1 addition & 2 deletions src/cmd/logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ var logsCmd = &cobra.Command{
}
err := logger.ReadProcessLogs(*pcFlags.Address, *pcFlags.PortNum, name, *pcFlags.LogTailLength, *pcFlags.LogFollow, os.Stdout)
if err != nil {
log.Error().Msgf("Failed to fetch logs for process %s: %v", name, err)
return
log.Fatal().Err(err).Msgf("Failed to fetch logs for process %s", name)
}
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)
Expand Down
2 changes: 1 addition & 1 deletion src/cmd/ports.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ var portsCmd = &cobra.Command{
name := args[0]
ports, err := client.GetProcessPorts(*pcFlags.Address, *pcFlags.PortNum, name)
if err != nil {
logFatal(err, "failed to get process %s ports", name)
log.Fatal().Err(err).Msgf("failed to get process %s ports", name)
return
}
log.Info().Msgf("Process %s TCP ports: %v", name, ports.TcpPorts)
Expand Down
7 changes: 2 additions & 5 deletions src/cmd/project_runner.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package cmd

import (
"fmt"
"github.com/f1bonacc1/process-compose/src/admitter"
"github.com/f1bonacc1/process-compose/src/app"
"github.com/f1bonacc1/process-compose/src/loader"
Expand All @@ -19,8 +18,7 @@ func getProjectRunner(process []string, noDeps bool, mainProcess string, mainPro
}
project, err := loader.Load(opts)
if err != nil {
fmt.Println(err)
log.Fatal().Msg(err.Error())
log.Fatal().Err(err).Msg("Failed to load project")
}

prjOpts := app.ProjectOpts{}
Expand All @@ -34,8 +32,7 @@ func getProjectRunner(process []string, noDeps bool, mainProcess string, mainPro
WithNoDeps(noDeps),
)
if err != nil {
fmt.Println(err)
log.Fatal().Msg(err.Error())
log.Fatal().Err(err).Msg("Failed to initialize the project")
}
return runner
}
Expand Down
3 changes: 2 additions & 1 deletion src/cmd/restart.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cmd
import (
"fmt"
"github.com/f1bonacc1/process-compose/src/client"
"github.com/rs/zerolog/log"
"github.com/spf13/cobra"
)

Expand All @@ -15,7 +16,7 @@ var restartCmd = &cobra.Command{
name := args[0]
err := client.RestartProcess(*pcFlags.Address, *pcFlags.PortNum, name)
if err != nil {
logFatal(err, "failed to restart process %s", name)
log.Fatal().Err(err).Msgf("failed to restart process %s", name)
}
fmt.Printf("Process %s restarted\n", name)
},
Expand Down
26 changes: 22 additions & 4 deletions src/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/spf13/cobra"
"io"
"os"
"path"
"time"
Expand Down Expand Up @@ -88,10 +89,27 @@ func setupLogger() *os.File {
if err != nil {
logFatal(err, "Failed to open log file: %s", *pcFlags.LogFile)
}
log.Logger = log.Output(zerolog.ConsoleWriter{
Out: file,
TimeFormat: "06-01-02 15:04:05.000",
})
writers := []io.Writer{
&zerolog.FilteredLevelWriter{

Level: zerolog.DebugLevel,
Writer: zerolog.LevelWriterAdapter{Writer: zerolog.ConsoleWriter{
Out: file,
TimeFormat: "06-01-02 15:04:05.000",
}},
},
&zerolog.FilteredLevelWriter{

Level: zerolog.FatalLevel,
Writer: zerolog.LevelWriterAdapter{Writer: zerolog.ConsoleWriter{
Out: os.Stderr,
TimeFormat: "06-01-02 15:04:05.000",
}},
},
}
writer := zerolog.MultiLevelWriter(writers...)

log.Logger = zerolog.New(writer).With().Timestamp().Logger()
zerolog.TimeFieldFormat = time.RFC3339Nano
zerolog.SetGlobalLevel(zerolog.DebugLevel)
return file
Expand Down
4 changes: 2 additions & 2 deletions src/cmd/scale.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ var scaleCmd = &cobra.Command{
name := args[0]
count, err := strconv.Atoi(args[1])
if err != nil {
logFatal(err, "second argument must be an integer")
log.Fatal().Err(err).Msg("second argument must be an integer")
}
err = client.ScaleProcess(*pcFlags.Address, *pcFlags.PortNum, name, count)
if err != nil {
logFatal(err, "failed to scale process %s", name)
log.Fatal().Err(err).Msgf("failed to scale process %s", name)
}
log.Info().Msgf("Process %s scaled to %s", name, args[1])
},
Expand Down
7 changes: 3 additions & 4 deletions src/cmd/start.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
/*
Copyright © 2022 NAME HERE <EMAIL ADDRESS>
*/
package cmd

import (
"fmt"
"github.com/f1bonacc1/process-compose/src/client"
"github.com/rs/zerolog/log"
"github.com/spf13/cobra"
)

Expand All @@ -18,7 +16,8 @@ var startCmd = &cobra.Command{
name := args[0]
err := client.StartProcess(*pcFlags.Address, *pcFlags.PortNum, name)
if err != nil {
logFatal(err, "failed to start process %s", name)
log.Fatal().Err(err).Msgf("failed to start process %s", name)

}
fmt.Printf("Process %s started\n", name)
},
Expand Down
6 changes: 2 additions & 4 deletions src/cmd/state.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
/*
Copyright © 2023 NAME HERE <EMAIL ADDRESS>
*/
package cmd

import (
"fmt"
"github.com/f1bonacc1/process-compose/src/client"
"github.com/f1bonacc1/process-compose/src/types"
"github.com/fatih/color"
"github.com/rs/zerolog/log"
"github.com/spf13/cobra"
"strconv"
"strings"
Expand All @@ -26,7 +24,7 @@ var stateCmd = &cobra.Command{
pcClient := client.NewClient(*pcFlags.Address, *pcFlags.PortNum, *pcFlags.LogLength)
state, err := pcClient.GetProjectState(withMemoryUsage)
if err != nil {
logFatal(err, "failed to get project state")
log.Fatal().Err(err).Msg("failed to get project state")
}
//pretty print state
printState(state)
Expand Down
3 changes: 2 additions & 1 deletion src/cmd/stop.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cmd
import (
"fmt"
"github.com/f1bonacc1/process-compose/src/client"
"github.com/rs/zerolog/log"
"github.com/spf13/cobra"
)

Expand All @@ -13,7 +14,7 @@ var stopCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
stopped, err := client.StopProcesses(*pcFlags.Address, *pcFlags.PortNum, args)
if err != nil {
logFatal(err, "failed to stop processes %v", args)
log.Fatal().Err(err).Msgf("failed to stop processes %v", args)
}
fmt.Printf("Processes %v stopped\n", stopped)
},
Expand Down
3 changes: 1 addition & 2 deletions src/command/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
"runtime"
)


func BuildCommand(cmd string, args []string) *CmdWrapper {
return &CmdWrapper{
cmd: exec.Command(cmd, args...),
Expand Down Expand Up @@ -58,6 +57,6 @@ func DefaultShellConfig() *ShellConfig {
func ValidateShellConfig(shell ShellConfig) {
_, err := exec.LookPath(shell.ShellCommand)
if err != nil {
log.Fatal().Msgf("Couldn't find %s", shell.ShellCommand)
log.Fatal().Err(err).Msgf("Couldn't find %s", shell.ShellCommand)
}
}
2 changes: 1 addition & 1 deletion src/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func getPortDefault() int {
if found {
port, err := strconv.Atoi(val)
if err != nil {
log.Fatal().Msgf("Invalid port number: %s", val)
log.Fatal().Err(err).Msgf("Invalid port number: %s", val)
return DefaultPortNum
}
return port
Expand Down
9 changes: 3 additions & 6 deletions src/loader/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,7 @@ func loadProjectFromFile(inputFile string) *types.Project {
if errors.Is(err, os.ErrNotExist) {
log.Error().Msgf("File %s doesn't exist", inputFile)
}
fmt.Printf("Failed to read %s - %s\n", inputFile, err.Error())
log.Fatal().Msg(err.Error())
log.Fatal().Err(err).Msgf("Failed to read %s", inputFile)
}

// .env is optional we don't care if it errors
Expand All @@ -93,13 +92,11 @@ func loadProjectFromFile(inputFile string) *types.Project {
}
err = yaml.Unmarshal(yamlFile, project)
if err != nil {
fmt.Printf("Failed to parse %s - %s\n", inputFile, err.Error())
log.Fatal().Msgf("Failed to parse %s - %s", inputFile, err.Error())
log.Fatal().Err(err).Msgf("Failed to parse %s", inputFile)
}

if err != nil {
fmt.Printf("Failed to validate %s - %s\n", inputFile, err.Error())
log.Fatal().Msgf("Failed to validate %s - %s", inputFile, err.Error())
log.Fatal().Err(err).Msgf("Failed to validate %s", inputFile)
}
log.Info().Msgf("Loaded project from %s", inputFile)
return project
Expand Down

0 comments on commit 554dbf5

Please sign in to comment.