mirror of
https://github.com/git-chglog/git-chglog.git
synced 2026-01-23 02:15:12 +00:00
feat: add Jira integration (#52)
This commit is contained in:
parent
8713d96856
commit
a1c84d7a0d
22 changed files with 742 additions and 331 deletions
59
logger.go
Normal file
59
logger.go
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
package chglog
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"regexp"
|
||||
|
||||
"github.com/fatih/color"
|
||||
emoji "github.com/kyokomi/emoji/v2"
|
||||
)
|
||||
|
||||
// Logger ...
|
||||
type Logger struct {
|
||||
stdout io.Writer
|
||||
stderr io.Writer
|
||||
silent bool
|
||||
noEmoji bool
|
||||
reEmoji *regexp.Regexp
|
||||
}
|
||||
|
||||
// NewLogger ...
|
||||
func NewLogger(stdout, stderr io.Writer, silent, noEmoji bool) *Logger {
|
||||
return &Logger{
|
||||
stdout: stdout,
|
||||
stderr: stderr,
|
||||
silent: silent,
|
||||
noEmoji: noEmoji,
|
||||
reEmoji: regexp.MustCompile(":[\\w\\+_\\-]+:\\s?"),
|
||||
}
|
||||
}
|
||||
|
||||
// Log ...
|
||||
func (l *Logger) Log(msg string) {
|
||||
if !l.silent {
|
||||
l.log(l.stdout, msg+"\n")
|
||||
}
|
||||
}
|
||||
|
||||
// Error ...
|
||||
func (l *Logger) Error(msg string) {
|
||||
prefix := color.New(color.FgWhite, color.BgRed, color.Bold).SprintFunc()
|
||||
l.log(l.stderr, fmt.Sprintf("%s %s\n", prefix(" ERROR "), color.RedString(msg)))
|
||||
}
|
||||
|
||||
func (l *Logger) log(w io.Writer, msg string) {
|
||||
var printer func(io.Writer, ...interface{}) (int, error)
|
||||
|
||||
if l.noEmoji {
|
||||
msg = l.reEmoji.ReplaceAllString(msg, "")
|
||||
printer = fmt.Fprint
|
||||
} else {
|
||||
printer = emoji.Fprint
|
||||
}
|
||||
|
||||
if _, err := printer(w, msg); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue