Skip to content

Commit

Permalink
Merge pull request #2 from ksckaan1/decolorize-log-file-output
Browse files Browse the repository at this point in the history
Decolorize log file output
  • Loading branch information
ksckaan1 authored Dec 14, 2024
2 parents 729986b + 2293638 commit 85306f3
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
23 changes: 23 additions & 0 deletions internal/domain/core/service/project/decolorizer.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package project

import (
"io"
"regexp"
)

type decolorizer struct {
w io.Writer
}

func (d *decolorizer) Write(p []byte) (n int, err error) {
decolorized := rgxANSI.ReplaceAll(p, nil)
_, err = d.w.Write(decolorized)
if err != nil {
return 0, err
}
return len(p), nil
}

const ansi = "[\u001B\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[a-zA-Z\\d]*)*)?\u0007)|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PRZcf-ntqry=><~]))"

var rgxANSI = regexp.MustCompile(ansi)
8 changes: 4 additions & 4 deletions internal/domain/core/service/project/runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,24 +81,24 @@ func (p *Project) prepareLogFiles(commandName string, runner *model.Runner, cmd
}
closers = append(closers, stdErrFile)

cmd.Stderr = io.MultiWriter(os.Stderr, stdErrFile)
cmd.Stderr = io.MultiWriter(os.Stderr, &decolorizer{stdErrFile})

stdOutFile, err2 := p.createLogFile(commandName+".stdout", runner.Log.Overwrite)
if err2 != nil {
return nil, fmt.Errorf("create log file: %w", err2)
}
closers = append(closers, stdOutFile)

cmd.Stdout = io.MultiWriter(os.Stdout, stdOutFile)
cmd.Stdout = io.MultiWriter(os.Stdout, &decolorizer{stdOutFile})
} else {
logFile, err2 := p.createLogFile(commandName, runner.Log.Overwrite)
if err2 != nil {
return nil, fmt.Errorf("create log file: %w", err2)
}
closers = append(closers, logFile)

cmd.Stderr = io.MultiWriter(os.Stderr, logFile)
cmd.Stdout = io.MultiWriter(os.Stdout, logFile)
cmd.Stderr = io.MultiWriter(os.Stderr, &decolorizer{logFile})
cmd.Stdout = io.MultiWriter(os.Stdout, &decolorizer{logFile})
}

return closers, nil
Expand Down

0 comments on commit 85306f3

Please sign in to comment.