Reject scan --workers below 1 as a usage error (closes #10)
check / check (push) Failing after 1s

A --workers value of 0 or less used to be quietly raised to 1, so a
typo ran the whole scan on one worker with nothing on stderr to say
why. scan now refuses it before anything is scanned: one line on
stderr and exit 2, like the other usage errors. The clamp in runScan
is gone, and README states the rule and the default.

Model: opus-5-5
This commit is contained in:
2026-10-04 11:33:15 +00:00
parent 8032ea682b
commit 3ac3699a5e
5 changed files with 65 additions and 10 deletions
+17 -2
View File
@@ -51,6 +51,10 @@ const (
// cobra prints for it is the whole message.
var errNoSubcommand = errors.New("no subcommand")
// errWorkersBelowOne is the usage error for a scan --workers value
// below 1.
var errWorkersBelowOne = errors.New("--workers must be at least 1")
// Version is the build version, injected at link time via -ldflags
// (see the Makefile); "dev" for a plain go build.
//
@@ -98,8 +102,7 @@ func run(args []string, stdout, stderr io.Writer) int {
return exitFatal
default:
// A usage error: cobra has already printed the message and
// the usage text.
// A usage error, which cobra has already reported on stderr.
return exitUsage
}
}
@@ -154,6 +157,18 @@ func newRootCommand(stdout, stderr io.Writer) *cobra.Command {
Use: cmdScan + " [--workers N] [-x] PATH...",
Short: "Walk trees and synchronize the scan database",
Args: cobra.MinimumNArgs(1),
PreRunE: func(cmd *cobra.Command, _ []string) error {
if scanWorkers < 1 {
// A usage error, reported in one line: cobra
// prints the message, and run exits 2.
cmd.SilenceUsage = true
return fmt.Errorf("%w, got %d", errWorkersBelowOne,
scanWorkers)
}
return nil
},
RunE: runE(func(ctx context.Context, args []string) error {
ctx, stop := interruptContext(ctx)
defer stop()