aboutsummaryrefslogtreecommitdiff
path: root/cmd/krino/common.go
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-09-14 22:32:00 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-09-14 22:32:00 +0200
commit8227de6a887c8600746b06d1287cb2b00de77e28 (patch)
treed3370476344ee22c699270457d05c846453ad0d7 /cmd/krino/common.go
parenta91b713dcec4d17f76155f0cd6b26903c59b9c19 (diff)
downloadkrino-8227de6a887c8600746b06d1287cb2b00de77e28.tar.gz
krino-8227de6a887c8600746b06d1287cb2b00de77e28.zip
plan 10: commands refuse global flags they do not use
Diffstat (limited to 'cmd/krino/common.go')
-rw-r--r--cmd/krino/common.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/cmd/krino/common.go b/cmd/krino/common.go
index 15c32f6..5b6869a 100644
--- a/cmd/krino/common.go
+++ b/cmd/krino/common.go
@@ -33,6 +33,30 @@ func minAgeOverride(g *globals) (d time.Duration, set bool, err error) {
return d, true, nil
}
+// refuseUnusedFlags refuses the global flags a command does not use -
+// -y and -n unless usesYesDry, and --json and -v - instead of silently
+// ignoring them, so "krino -n new ...", meant as a preview, cannot write
+// config (re-review cli F4). It reports whether it refused.
+func refuseUnusedFlags(g *globals, stderr io.Writer, cmd string, usesYesDry bool) (int, bool) {
+ var given []string
+ if !usesYesDry && g.yes {
+ given = append(given, "-y")
+ }
+ if !usesYesDry && g.dry {
+ given = append(given, "-n")
+ }
+ if g.json {
+ given = append(given, "--json")
+ }
+ if g.verbose {
+ given = append(given, "-v")
+ }
+ if len(given) == 0 {
+ return 0, false
+ }
+ return usageError(stderr, fmt.Sprintf("%s does not take %s", cmd, strings.Join(given, ", "))), true
+}
+
// cacheDir is where every directory's keyword cache lives (spec ยง6.1).
func cacheDir() string {
return filepath.Join(xdg.CacheHome(), "krino")