Remediate all lint findings under the canonical golangci-lint config
Fix every finding surfaced by the canonical .golangci.yml with golangci-lint v2.12.2 (refs #61), behavior-preserving throughout: - err113: dynamic errors replaced with package-level sentinels and %w wrapping; direct comparisons converted to errors.Is - goprintffuncname: printf-style helpers renamed with an f suffix (ui.Writer message methods, cli.ReportErrorf, database.Fatalf, vaultik stdoutf) and all call sites updated - revive: stuttering type names renamed (blob.Handler, blob.WithReader, blob.ChunkPosition, storage.URL, storage.Info), doc comments added, unused parameters blanked, package comments added - contextcheck/noctx: ctx threaded through blob.Packer (AddChunk/Flush/FinalizeBlob/PackChunks) and scanner call sites; context-aware exec and sql variants used - funlen/cyclop/gocognit/nestif/dupl: oversized or duplicated functions split into focused helpers across production and test code - paralleltest/tparallel/thelper/usetesting/testpackage: tests parallelized where safe (global log.Initialize kept in the serial phase), helpers marked, t.TempDir adopted, external test packages where only exported API is used - gosec: integer conversions clamped or justified, header timeouts added, remaining findings suppressed with per-site justifications - mnd/goconst/lll/wsl_v5/nlreturn/noinlineerr/errcheck and other mechanical findings fixed directly Remove the deprecated log.LogOptions alias (callers migrated to log.Options). make check is green.
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
// Package log provides the application-wide structured logger: slog
|
||||
// with a colorized TTY handler on terminals and JSON output otherwise.
|
||||
package log
|
||||
|
||||
import (
|
||||
@@ -12,12 +14,12 @@ import (
|
||||
"golang.org/x/term"
|
||||
)
|
||||
|
||||
// LogLevel represents the logging level.
|
||||
type LogLevel int
|
||||
// Level represents the logging level.
|
||||
type Level int
|
||||
|
||||
const (
|
||||
// LevelFatal represents a fatal error level that will exit the program.
|
||||
LevelFatal LogLevel = iota
|
||||
LevelFatal Level = iota
|
||||
// LevelError represents an error level.
|
||||
LevelError
|
||||
// LevelWarn represents a warning level.
|
||||
@@ -38,6 +40,7 @@ type Config struct {
|
||||
Quiet bool
|
||||
}
|
||||
|
||||
//nolint:gochecknoglobals // package-level logger is the package's purpose
|
||||
var logger *slog.Logger
|
||||
|
||||
// Initialize sets up the global logger based on the provided configuration.
|
||||
@@ -45,18 +48,19 @@ func Initialize(cfg Config) {
|
||||
// Determine log level based on configuration
|
||||
var level slog.Level
|
||||
|
||||
if cfg.Cron || cfg.Quiet {
|
||||
switch {
|
||||
case cfg.Cron || cfg.Quiet:
|
||||
// In cron/quiet mode keep warnings and errors visible — the
|
||||
// whole point of --cron is to stay silent only on total
|
||||
// success, so that anything cron emails to root is genuinely
|
||||
// "something went wrong, look at it." A backup with stuck
|
||||
// permission errors or skipped files should NOT be silent.
|
||||
level = slog.LevelWarn
|
||||
} else if cfg.Debug || strings.Contains(os.Getenv("GODEBUG"), "vaultik") {
|
||||
case cfg.Debug || strings.Contains(os.Getenv("GODEBUG"), "vaultik"):
|
||||
level = slog.LevelDebug
|
||||
} else if cfg.Verbose {
|
||||
case cfg.Verbose:
|
||||
level = slog.LevelInfo
|
||||
} else {
|
||||
default:
|
||||
level = slog.LevelWarn
|
||||
}
|
||||
|
||||
@@ -78,9 +82,13 @@ func Initialize(cfg Config) {
|
||||
slog.SetDefault(logger)
|
||||
}
|
||||
|
||||
// callerSkipFrames is the number of stack frames between runtime.Caller
|
||||
// and the code that invoked the package-level logging function.
|
||||
const callerSkipFrames = 2
|
||||
|
||||
// getCaller returns the caller information as a string
|
||||
func getCaller(skip int) string {
|
||||
_, file, line, ok := runtime.Caller(skip)
|
||||
func getCaller() string {
|
||||
_, file, line, ok := runtime.Caller(callerSkipFrames)
|
||||
if !ok {
|
||||
return "unknown"
|
||||
}
|
||||
@@ -92,7 +100,7 @@ func getCaller(skip int) string {
|
||||
func Fatal(msg string, args ...any) {
|
||||
if logger != nil {
|
||||
// Add caller info to args
|
||||
args = append(args, "caller", getCaller(2))
|
||||
args = append(args, "caller", getCaller())
|
||||
logger.Error(msg, args...)
|
||||
}
|
||||
|
||||
@@ -107,7 +115,7 @@ func Fatalf(format string, args ...any) {
|
||||
// Error logs an error message.
|
||||
func Error(msg string, args ...any) {
|
||||
if logger != nil {
|
||||
args = append(args, "caller", getCaller(2))
|
||||
args = append(args, "caller", getCaller())
|
||||
logger.Error(msg, args...)
|
||||
}
|
||||
}
|
||||
@@ -120,7 +128,7 @@ func Errorf(format string, args ...any) {
|
||||
// Warn logs a warning message.
|
||||
func Warn(msg string, args ...any) {
|
||||
if logger != nil {
|
||||
args = append(args, "caller", getCaller(2))
|
||||
args = append(args, "caller", getCaller())
|
||||
logger.Warn(msg, args...)
|
||||
}
|
||||
}
|
||||
@@ -133,7 +141,7 @@ func Warnf(format string, args ...any) {
|
||||
// Notice logs a notice message (mapped to Info level).
|
||||
func Notice(msg string, args ...any) {
|
||||
if logger != nil {
|
||||
args = append(args, "caller", getCaller(2))
|
||||
args = append(args, "caller", getCaller())
|
||||
logger.Info(msg, args...)
|
||||
}
|
||||
}
|
||||
@@ -146,7 +154,7 @@ func Noticef(format string, args ...any) {
|
||||
// Info logs an informational message.
|
||||
func Info(msg string, args ...any) {
|
||||
if logger != nil {
|
||||
args = append(args, "caller", getCaller(2))
|
||||
args = append(args, "caller", getCaller())
|
||||
logger.Info(msg, args...)
|
||||
}
|
||||
}
|
||||
@@ -159,7 +167,7 @@ func Infof(format string, args ...any) {
|
||||
// Debug logs a debug message.
|
||||
func Debug(msg string, args ...any) {
|
||||
if logger != nil {
|
||||
args = append(args, "caller", getCaller(2))
|
||||
args = append(args, "caller", getCaller())
|
||||
logger.Debug(msg, args...)
|
||||
}
|
||||
}
|
||||
@@ -179,7 +187,7 @@ func With(args ...any) *slog.Logger {
|
||||
}
|
||||
|
||||
// WithContext returns a logger with the provided context.
|
||||
func WithContext(ctx context.Context) *slog.Logger {
|
||||
func WithContext(_ context.Context) *slog.Logger {
|
||||
return logger
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user