From c195ca2ab2de507fab967c9d5f2bad8f4f7834d0 Mon Sep 17 00:00:00 2001 From: Aykhan Shahsuvarov Date: Mon, 17 Aug 2026 20:11:47 +0400 Subject: [PATCH] refactor: print stderr via fmt.Fprint with lipgloss.Sprintln instead of lipgloss.Fprintln --- .golangci.yaml | 8 ++------ cmd/cli/main.go | 14 +++++++------- internal/config/config.go | 28 ++++++++++++++-------------- 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 35cf16e..23e5478 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -55,10 +55,6 @@ linters: - wastedassign settings: - errcheck: - exclude-functions: - - charm.land/lipgloss/v2.Println - - charm.land/lipgloss/v2.Fprintln(os.Stderr) staticcheck: checks: - "all" @@ -86,9 +82,9 @@ linters: text: "SA5011" - linters: + - errcheck - gosec - text: "G104" - source: "lipgloss\\.(Print|Printf|Println|Fprint|Fprintf|Fprintln)\\(" + source: "lipgloss\\.Println\\(" formatters: enable: diff --git a/cmd/cli/main.go b/cmd/cli/main.go index 3d1f4f5..c492843 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -33,13 +33,13 @@ func main() { utilsErr.OnType(func(err types.FieldValidationErrors) error { for _, fieldErr := range err.Errors { if fieldErr.Value == "" { - lipgloss.Fprintln(os.Stderr, + fmt.Fprint(os.Stderr, lipgloss.Sprintln( config.StyleYellow.Render(fmt.Sprintf("[VALIDATION] Field '%s': ", fieldErr.Field))+fieldErr.Err.Error(), - ) + )) } else { - lipgloss.Fprintln(os.Stderr, + fmt.Fprint(os.Stderr, lipgloss.Sprintln( config.StyleYellow.Render(fmt.Sprintf("[VALIDATION] Field '%s' (%s): ", fieldErr.Field, fieldErr.Value))+fieldErr.Err.Error(), - ) + )) } } os.Exit(1) @@ -59,17 +59,17 @@ func main() { ) _ = utilsErr.MustHandle(err, utilsErr.OnType(func(err types.ProxyDialError) error { - lipgloss.Fprintln(os.Stderr, config.StyleRed.Render("[PROXY] ")+err.Error()) + fmt.Fprint(os.Stderr, lipgloss.Sprintln(config.StyleRed.Render("[PROXY] ")+err.Error())) os.Exit(1) return nil }), utilsErr.OnSentinel(types.ErrScriptEmpty, func(err error) error { - lipgloss.Fprintln(os.Stderr, config.StyleRed.Render("[SCRIPT] ")+err.Error()) + fmt.Fprint(os.Stderr, lipgloss.Sprintln(config.StyleRed.Render("[SCRIPT] ")+err.Error())) os.Exit(1) return nil }), utilsErr.OnType(func(err types.ScriptLoadError) error { - lipgloss.Fprintln(os.Stderr, config.StyleRed.Render("[SCRIPT] ")+err.Error()) + fmt.Fprint(os.Stderr, lipgloss.Sprintln(config.StyleRed.Render("[SCRIPT] ")+err.Error())) os.Exit(1) return nil }), diff --git a/internal/config/config.go b/internal/config/config.go index 7128746..9cef997 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -248,7 +248,7 @@ func (config Config) MarshalYAML() (any, error) { func (config Config) Print() bool { configYAML, err := yaml.Marshal(config) if err != nil { - lipgloss.Fprintln(os.Stderr, StyleRed.Render("Error marshaling config to yaml: "+err.Error())) + fmt.Fprint(os.Stderr, lipgloss.Sprintln(StyleRed.Render("Error marshaling config to yaml: "+err.Error()))) os.Exit(1) } @@ -267,13 +267,13 @@ func (config Config) Print() bool { glamour.WithWordWrap(0), ) if err != nil { - lipgloss.Fprintln(os.Stderr, StyleRed.Render(err.Error())) + fmt.Fprint(os.Stderr, lipgloss.Sprintln(StyleRed.Render(err.Error()))) os.Exit(1) } content, err := renderer.Render("```yaml\n" + string(configYAML) + "```") if err != nil { - lipgloss.Fprintln(os.Stderr, StyleRed.Render(err.Error())) + fmt.Fprint(os.Stderr, lipgloss.Sprintln(StyleRed.Render(err.Error()))) os.Exit(1) } @@ -283,7 +283,7 @@ func (config Config) Print() bool { m, err := p.Run() if err != nil { - lipgloss.Fprintln(os.Stderr, StyleRed.Render(err.Error())) + fmt.Fprint(os.Stderr, lipgloss.Sprintln(StyleRed.Render(err.Error()))) os.Exit(1) } @@ -613,11 +613,11 @@ func ReadAllConfigs() *Config { _ = utilsErr.MustHandle(err, utilsErr.OnType(func(err types.CLIUnexpectedArgsError) error { cliParser.PrintHelp() - lipgloss.Fprintln(os.Stderr, + fmt.Fprint(os.Stderr, lipgloss.Sprintln( StyleYellow.Render( "\nUnexpected CLI arguments provided: ", )+strings.Join(err.Args, ", "), - ) + )) os.Exit(1) return nil }), @@ -635,20 +635,20 @@ func ReadAllConfigs() *Config { _ = utilsErr.MustHandle(err, utilsErr.OnType(func(err types.ConfigFileReadError) error { cliParser.PrintHelp() - lipgloss.Fprintln(os.Stderr, + fmt.Fprint(os.Stderr, lipgloss.Sprintln( StyleYellow.Render( fmt.Sprintf("\nFailed to read config file (%s): ", configFile.Path())+err.Error(), ), - ) + )) os.Exit(1) return nil }), utilsErr.OnType(func(err types.UnmarshalError) error { - lipgloss.Fprintln(os.Stderr, + fmt.Fprint(os.Stderr, lipgloss.Sprintln( StyleYellow.Render( fmt.Sprintf("\nFailed to parse config file (%s): ", configFile.Path())+err.Error(), ), - ) + )) os.Exit(1) return nil }), @@ -751,13 +751,13 @@ func validateScriptSource(script string) error { func printParseErrors(parserName string, errors ...types.FieldParseError) { for _, fieldErr := range errors { if fieldErr.Value == "" { - lipgloss.Fprintln(os.Stderr, + fmt.Fprint(os.Stderr, lipgloss.Sprintln( StyleYellow.Render(fmt.Sprintf("[%s] Field '%s': ", parserName, fieldErr.Field))+fieldErr.Err.Error(), - ) + )) } else { - lipgloss.Fprintln(os.Stderr, + fmt.Fprint(os.Stderr, lipgloss.Sprintln( StyleYellow.Render(fmt.Sprintf("[%s] Field '%s' (%s): ", parserName, fieldErr.Field, fieldErr.Value))+fieldErr.Err.Error(), - ) + )) } } }