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

Add --panicOnWarning flag #9360

Merged
merged 1 commit into from
Jan 6, 2022
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion commands/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ func (cc *hugoBuilderCommon) handleFlags(cmd *cobra.Command) {
cmd.Flags().Bool("enableGitInfo", false, "add Git revision, date and author info to the pages")
cmd.Flags().BoolVar(&cc.gc, "gc", false, "enable to run some cleanup tasks (remove unused cache files) after the build")
cmd.Flags().StringVar(&cc.poll, "poll", "", "set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes")

cmd.Flags().BoolVar(&loggers.PanicOnWarning, "panicOnWarning", false, "panic on first WARNING log")
cmd.Flags().Bool("templateMetrics", false, "display metrics about template executions")
cmd.Flags().Bool("templateMetricsHints", false, "calculate some improvement hints when combined with --templateMetrics")
cmd.Flags().BoolP("forceSyncStatic", "", false, "copy all files when static is changed.")
Expand Down
2 changes: 1 addition & 1 deletion commands/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func newSystemErrorF(format string, a ...interface{}) commandError {
// Catch some of the obvious user errors from Cobra.
// We don't want to show the usage message for every error.
// The below may be to generic. Time will show.
var userErrorRegexp = regexp.MustCompile("argument|flag|shorthand")
var userErrorRegexp = regexp.MustCompile("unknown flag")

func isUserError(err error) bool {
if cErr, ok := err.(commandError); ok && cErr.isUserError() {
Expand Down
15 changes: 13 additions & 2 deletions common/loggers/loggers.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,11 @@ import (
jww "github.com/spf13/jwalterweatherman"
)

// Counts ERROR logs to the global jww logger.
var GlobalErrorCounter *jww.Counter
var (
// Counts ERROR logs to the global jww logger.
GlobalErrorCounter *jww.Counter
PanicOnWarning bool
)

func init() {
GlobalErrorCounter = &jww.Counter{}
Expand Down Expand Up @@ -130,12 +133,20 @@ func (l *logger) Info() *log.Logger {
return l.INFO
}

const panicOnWarningMessage = "Warning trapped. Remvove the --panicOnWarning flag to continue."

func (l *logger) Warnf(format string, v ...interface{}) {
l.WARN.Printf(format, v...)
if PanicOnWarning {
panic(panicOnWarningMessage)
}
}

func (l *logger) Warnln(v ...interface{}) {
l.WARN.Println(v...)
if PanicOnWarning {
panic(panicOnWarningMessage)
}
}

func (l *logger) Warn() *log.Logger {
Expand Down
9 changes: 7 additions & 2 deletions helpers/general.go
Original file line number Diff line number Diff line change
Expand Up @@ -331,12 +331,14 @@ func (l *DistinctLogger) Warnf(format string, v ...interface{}) {
l.Logger.Warnf(format, v...)
})
}

func (l *DistinctLogger) Warnln(v ...interface{}) {
logStatement := fmt.Sprint(v...)
l.printIfNotPrinted("warnln", logStatement, func() {
l.Logger.Warnln(v...)
})
}

func (l *DistinctLogger) Errorf(format string, v ...interface{}) {
logStatement := fmt.Sprint(v...)
l.printIfNotPrinted("errorf", logStatement, func() {
Expand Down Expand Up @@ -396,7 +398,6 @@ var (
func InitLoggers() {
DistinctErrorLog.Reset()
DistinctWarnLog.Reset()

}

// Deprecated informs about a deprecation, but only once for a given set of arguments' values.
Expand All @@ -408,7 +409,11 @@ func Deprecated(item, alternative string, err bool) {
if err {
DistinctErrorLog.Errorf("%s is deprecated and will be removed in Hugo %s. %s", item, hugo.CurrentVersion.Next().ReleaseVersion(), alternative)
} else {
DistinctWarnLog.Warnf("%s is deprecated and will be removed in a future release. %s", item, alternative)
var warnPanicMessage string
if !loggers.PanicOnWarning {
warnPanicMessage = "\n\nRe-run Hugo with the flag --panicOnWarning to get a better error message."
}
DistinctWarnLog.Warnf("%s is deprecated and will be removed in a future release. %s%s", item, alternative, warnPanicMessage)
}
}

Expand Down