From 2f7e37153c5e63473dbfb51af08ad156d0866136 Mon Sep 17 00:00:00 2001 From: sneak Date: Fri, 7 Aug 2026 16:59:56 +0000 Subject: [PATCH] Fix noinlineerr findings: internal/cli (refs #61) --- internal/cli/config.go | 19 +++++++++++++------ internal/cli/config_test.go | 18 ++++++++++++------ internal/cli/database.go | 10 +++++++--- internal/cli/duration.go | 11 ++++++++--- internal/cli/root.go | 6 ++++-- internal/cli/snapshot.go | 3 ++- 6 files changed, 46 insertions(+), 21 deletions(-) diff --git a/internal/cli/config.go b/internal/cli/config.go index c1bc9c4..538a4dd 100644 --- a/internal/cli/config.go +++ b/internal/cli/config.go @@ -236,13 +236,14 @@ on macOS, ~/.config/ on Linux, /etc/vaultik/ as root).`, RunE: func(cmd *cobra.Command, args []string) error { path := configPathForInit() - if _, err := os.Stat(path); err == nil { + _, err := os.Stat(path) + if err == nil { return fmt.Errorf("config file already exists: %s", path) } dir := filepath.Dir(path) - err := os.MkdirAll(dir, 0o755) + err = os.MkdirAll(dir, 0o755) if err != nil { return fmt.Errorf("creating config directory %s: %w", dir, err) } @@ -353,7 +354,8 @@ Examples: return err } - if err := yamlPathSet(root, strings.Split(args[0], "."), args[1]); err != nil { + err = yamlPathSet(root, strings.Split(args[0], "."), args[1]) + if err != nil { return err } @@ -363,11 +365,14 @@ Examples: } mode := os.FileMode(0o600) - if info, err := os.Stat(path); err == nil { + + info, err := os.Stat(path) + if err == nil { mode = info.Mode().Perm() } - if err := os.WriteFile(path, out, mode); err != nil { + err = os.WriteFile(path, out, mode) + if err != nil { return fmt.Errorf("writing config file: %w", err) } @@ -387,7 +392,9 @@ func loadYAMLFile(path string) (*yaml.Node, error) { } var root yaml.Node - if err := yaml.Unmarshal(data, &root); err != nil { + + err = yaml.Unmarshal(data, &root) + if err != nil { return nil, fmt.Errorf("parsing config file: %w", err) } diff --git a/internal/cli/config_test.go b/internal/cli/config_test.go index 24ad8ab..4b9b168 100644 --- a/internal/cli/config_test.go +++ b/internal/cli/config_test.go @@ -120,29 +120,35 @@ func TestYAMLPathSet(t *testing.T) { root := parseTestYAML(t) // Overwrite existing nested value - if err := yamlPathSet(root, splitPath("s3.bucket"), "newbucket"); err != nil { + err := yamlPathSet(root, splitPath("s3.bucket"), "newbucket") + if err != nil { t.Fatalf("set s3.bucket: %v", err) } // Create new nested key with intermediate map - if err := yamlPathSet(root, splitPath("s3.endpoint"), "s3.example.com"); err != nil { + err = yamlPathSet(root, splitPath("s3.endpoint"), "s3.example.com") + if err != nil { t.Fatalf("set s3.endpoint: %v", err) } - if err := yamlPathSet(root, splitPath("newmap.newkey"), "val"); err != nil { + err = yamlPathSet(root, splitPath("newmap.newkey"), "val") + if err != nil { t.Fatalf("set newmap.newkey: %v", err) } // Overwrite a sequence element and append a new one - if err := yamlPathSet(root, splitPath("age_recipients.0"), "age1bbb"); err != nil { + err = yamlPathSet(root, splitPath("age_recipients.0"), "age1bbb") + if err != nil { t.Fatalf("set age_recipients.0: %v", err) } - if err := yamlPathSet(root, splitPath("age_recipients.1"), "age1ccc"); err != nil { + err = yamlPathSet(root, splitPath("age_recipients.1"), "age1ccc") + if err != nil { t.Fatalf("append age_recipients.1: %v", err) } - if err := yamlPathSet(root, splitPath("age_recipients.5"), "age1ddd"); err == nil { + err = yamlPathSet(root, splitPath("age_recipients.5"), "age1ddd") + if err == nil { t.Error("expected out-of-range append to fail") } diff --git a/internal/cli/database.go b/internal/cli/database.go index a6532fb..9270d08 100644 --- a/internal/cli/database.go +++ b/internal/cli/database.go @@ -64,7 +64,8 @@ Use --force to skip the confirmation prompt.`, dbPath := cfg.IndexPath // Check if database exists - if _, err := os.Stat(dbPath); os.IsNotExist(err) { + _, err = os.Stat(dbPath) + if os.IsNotExist(err) { fmt.Printf("Database does not exist: %s\n", dbPath) return nil @@ -76,7 +77,9 @@ Use --force to skip the confirmation prompt.`, fmt.Print("Are you sure? Type 'yes' to confirm: ") var confirm string - if _, err := fmt.Scanln(&confirm); err != nil || confirm != "yes" { + + _, err = fmt.Scanln(&confirm) + if err != nil || confirm != "yes" { fmt.Println("Aborted.") return nil @@ -84,7 +87,8 @@ Use --force to skip the confirmation prompt.`, } // Delete the database file - if err := os.Remove(dbPath); err != nil { + err = os.Remove(dbPath) + if err != nil { return fmt.Errorf("failed to delete database: %w", err) } diff --git a/internal/cli/duration.go b/internal/cli/duration.go index 8fd2350..1bcee2d 100644 --- a/internal/cli/duration.go +++ b/internal/cli/duration.go @@ -19,7 +19,8 @@ import ( // Can combine units: "1y6mo", "2w3d", "1d12h30m" func parseDuration(s string) (time.Duration, error) { // First try standard Go duration parsing - if d, err := time.ParseDuration(s); err == nil { + d, err := time.ParseDuration(s) + if err == nil { return d, nil } @@ -78,10 +79,14 @@ func parseDuration(s string) (time.Duration, error) { default: // Try parsing as standard Go duration unit testStr := "1" + unit - if _, err := time.ParseDuration(testStr); err == nil { + + _, err = time.ParseDuration(testStr) + if err == nil { // It's a valid Go duration unit, parse the full value fullStr := fmt.Sprintf("%g%s", value, unit) - if d, err = time.ParseDuration(fullStr); err != nil { + + d, err = time.ParseDuration(fullStr) + if err != nil { return 0, fmt.Errorf("invalid duration %q: %w", fullStr, err) } } else { diff --git a/internal/cli/root.go b/internal/cli/root.go index 2e53dad..315c5e4 100644 --- a/internal/cli/root.go +++ b/internal/cli/root.go @@ -75,7 +75,8 @@ func GetRootFlags() RootFlags { // so the user gets a clear error instead of a downstream YAML parser failure. func ResolveConfigPath() (string, error) { if path := rootFlags.ConfigPath; path != "" { - if _, err := os.Stat(path); err != nil { + _, err := os.Stat(path) + if err != nil { return "", fmt.Errorf("config file from --config not found: %s (run 'vaultik config init --config %s' to create it)", path, path) } @@ -91,7 +92,8 @@ func ResolveConfigPath() (string, error) { } for _, path := range defaultConfigPaths() { - if _, err := os.Stat(path); err == nil { + _, err := os.Stat(path) + if err == nil { return path, nil } } diff --git a/internal/cli/snapshot.go b/internal/cli/snapshot.go index b8b6793..8f5b1b5 100644 --- a/internal/cli/snapshot.go +++ b/internal/cli/snapshot.go @@ -418,7 +418,8 @@ nuke --force' — it is the single supported entry point for that.`, } } - if err := v.Shutdowner.Shutdown(); err != nil { + err = v.Shutdowner.Shutdown() + if err != nil { log.Error("Failed to shutdown", "error", err) } }()