Skip to content

Commit

Permalink
feat: environment error logging
Browse files Browse the repository at this point in the history
relates to #1085
  • Loading branch information
JanDeDobbeleer committed Oct 20, 2021
1 parent 7e9247b commit 94b743c
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
28 changes: 27 additions & 1 deletion src/environment.go
Expand Up @@ -143,6 +143,14 @@ func (t *tracer) trace(start time.Time, function string, args ...string) {
log.Println(trace)
}

func (t *tracer) error(message string) {
if !t.debug {
return
}
trace := fmt.Sprintf("error: %s", message)
log.Println(trace)
}

type environment struct {
args *args
cwd string
Expand Down Expand Up @@ -185,6 +193,7 @@ func (env *environment) getcwd() string {
}
dir, err := os.Getwd()
if err != nil {
env.tracer.error(err.Error())
return ""
}
env.cwd = correctPath(dir)
Expand All @@ -197,6 +206,7 @@ func (env *environment) hasFiles(pattern string) bool {
pattern = cwd + env.getPathSeperator() + pattern
matches, err := filepath.Glob(pattern)
if err != nil {
env.tracer.error(err.Error())
return false
}
return len(matches) > 0
Expand All @@ -207,6 +217,7 @@ func (env *environment) hasFilesInDir(dir, pattern string) bool {
pattern = dir + env.getPathSeperator() + pattern
matches, err := filepath.Glob(pattern)
if err != nil {
env.tracer.error(err.Error())
return false
}
return len(matches) > 0
Expand All @@ -222,6 +233,7 @@ func (env *environment) getFileContent(file string) string {
defer env.tracer.trace(time.Now(), "getFileContent", file)
content, err := ioutil.ReadFile(file)
if err != nil {
env.tracer.error(err.Error())
return ""
}
return string(content)
Expand All @@ -231,6 +243,7 @@ func (env *environment) getFoldersList(path string) []string {
defer env.tracer.trace(time.Now(), "getFoldersList", path)
content, err := os.ReadDir(path)
if err != nil {
env.tracer.error(err.Error())
return nil
}
var folderNames []string
Expand Down Expand Up @@ -260,6 +273,7 @@ func (env *environment) getHostName() (string, error) {
defer env.tracer.trace(time.Now(), "getHostName")
hostName, err := os.Hostname()
if err != nil {
env.tracer.error(err.Error())
return "", err
}
return cleanHostName(hostName), nil
Expand Down Expand Up @@ -305,6 +319,7 @@ func (env *environment) runCommand(command string, args ...string) (string, erro
err := cmd.Start()
if err != nil {
errorStr := fmt.Sprintf("cmd.Start() failed with '%s'", err)
env.tracer.error(errorStr)
return "", errors.New(errorStr)
}
// cmd.Wait() should be called only after we finish reading
Expand All @@ -320,6 +335,7 @@ func (env *environment) runCommand(command string, args ...string) (string, erro
wg.Wait()
err = cmd.Wait()
if err != nil {
env.tracer.error(err.Error())
if exitErr, ok := err.(*exec.ExitError); ok {
return "", &commandError{
err: exitErr.Error(),
Expand All @@ -328,7 +344,9 @@ func (env *environment) runCommand(command string, args ...string) (string, erro
}
}
if stdoutErr != nil || stderrErr != nil {
return "", errors.New("failed to capture stdout or stderr")
errString := "failed to capture stdout or stderr"
env.tracer.error(errString)
return "", errors.New(errString)
}
stderrStr := normalizeOutput(stderr)
if len(stderrStr) > 0 {
Expand All @@ -353,6 +371,7 @@ func (env *environment) hasCommand(command string) bool {
env.cmdCache.set(command, path)
return true
}
env.tracer.error(err.Error())
return false
}

Expand All @@ -379,6 +398,7 @@ func (env *environment) getBatteryInfo() ([]*battery.Battery, error) {
batteries, err := battery.GetAll()
// actual error, return it
if err != nil && len(batteries) == 0 {
env.tracer.error(err.Error())
return nil, err
}
// there are no batteries found
Expand All @@ -399,6 +419,7 @@ func (env *environment) getBatteryInfo() ([]*battery.Battery, error) {
}
// another error occurred (possibly unmapped use-case), return it
if err != nil {
env.tracer.error(err.Error())
return nil, err
}
// everything is fine
Expand All @@ -414,13 +435,15 @@ func (env *environment) getShellName() string {
p, _ := process.NewProcess(int32(pid))
name, err := p.Name()
if err != nil {
env.tracer.error(err.Error())
return unknown
}
if name == "cmd.exe" {
p, _ = p.Parent()
name, err = p.Name()
}
if err != nil {
env.tracer.error(err.Error())
return unknown
}
// Cache the shell value to speed things up.
Expand All @@ -438,11 +461,13 @@ func (env *environment) doGet(url string, timeout int) ([]byte, error) {
}
response, err := client.Do(request)
if err != nil {
env.tracer.error(err.Error())
return nil, err
}
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
env.tracer.error(err.Error())
return nil, err
}
return body, nil
Expand All @@ -468,6 +493,7 @@ func (env *environment) hasParentFilePath(path string) (*fileInfo, error) {
currentFolder = dir
continue
}
env.tracer.error(err.Error())
return nil, errors.New("no match at root level")
}
}
Expand Down
3 changes: 3 additions & 0 deletions src/environment_unix.go
Expand Up @@ -36,6 +36,9 @@ func (env *environment) isWsl() bool {
func (env *environment) getTerminalWidth() (int, error) {
defer env.tracer.trace(time.Now(), "getTerminalWidth")
width, err := terminal.Width()
if err != nil {
env.tracer.error(err.Error())
}
return int(width), err
}

Expand Down
4 changes: 4 additions & 0 deletions src/environment_windows.go
Expand Up @@ -27,6 +27,7 @@ func (env *environment) isRunningAsRoot() bool {
0, 0, 0, 0, 0, 0,
&sid)
if err != nil {
env.tracer.error(err.Error())
return false
}
defer func() {
Expand All @@ -40,6 +41,7 @@ func (env *environment) isRunningAsRoot() bool {

member, err := token.IsMember(sid)
if err != nil {
env.tracer.error(err.Error())
return false
}

Expand Down Expand Up @@ -73,10 +75,12 @@ func (env *environment) getTerminalWidth() (int, error) {
defer env.tracer.trace(time.Now(), "getTerminalWidth")
handle, err := syscall.Open("CONOUT$", syscall.O_RDWR, 0)
if err != nil {
env.tracer.error(err.Error())
return 0, err
}
info, err := winterm.GetConsoleScreenBufferInfo(uintptr(handle))
if err != nil {
env.tracer.error(err.Error())
return 0, err
}
// return int(float64(info.Size.X) * 0.57), nil
Expand Down

0 comments on commit 94b743c

Please sign in to comment.