{"record":{"id":"9cb7d0d06b0effe1","repo":"ahmetb/kubectx","slug":"unsupported-option-q","errorCode":null,"errorMessage":"unsupported option %q","messagePattern":"unsupported option %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"cmd/kubens/flags.go","lineNumber":83,"sourceCode":"\t\tif !force {\n\t\t\tif !slices.Contains([]string{\"-f\", \"--force\"}, argv[0]) {\n\t\t\t\treturn UnsupportedOp{Err: fmt.Errorf(\"unsupported arguments %q\", argv)}\n\t\t\t}\n\n\t\t\t// -f|--force {namespace}\n\t\t\tforce = true\n\t\t\tname = argv[1]\n\t\t}\n\n\t\treturn getSwitchOp(name, force)\n\t}\n\n\treturn UnsupportedOp{Err: fmt.Errorf(\"too many arguments\")}\n}\n\nfunc getSwitchOp(v string, force bool) Op {\n\tif strings.HasPrefix(v, \"-\") && v != \"-\" {\n\t\treturn UnsupportedOp{Err: fmt.Errorf(\"unsupported option %q\", v)}\n\t}\n\treturn SwitchOp{Target: v, Force: force}\n}\n","sourceCodeStart":65,"sourceCodeEnd":87,"githubUrl":"https://github.com/ahmetb/kubectx/blob/12ad6fb22e8c546ee2b54e7de38aa51c906832f7/cmd/kubens/flags.go#L65-L87","documentation":"getSwitchOp checks the target namespace string before building a SwitchOp. If the target starts with \"-\" (and is not the bare \"-\"), it is treated as an unknown option rather than a namespace, and UnsupportedOp with \"unsupported option %q\" is returned. This prevents flags from being silently interpreted as namespace names.","triggerScenarios":"Calling kubens with an unrecognized flag in the namespace position, e.g. `kubens --force` (missing the actual namespace) or `kubens -n foo`.","commonSituations":"Users carrying over kubectl-style flags (-n, --namespace) that kubens does not support; forgetting the namespace after -f; copy-pasted commands from other tools.","solutions":["Provide the namespace as a bare positional argument: `kubens <namespace>`","Remove kubectl-only flags like -n/--namespace; kubens switches namespace directly","Use only the supported flags -f/--force, always together with a namespace","Run `kubens --help` for the accepted syntax"],"exampleFix":"// before\nkubens -n kube-system   # -n unsupported\n// after\nkubens kube-system","handlingStrategy":"validation","validationCode":"target := args[len(args)-1]\nif strings.HasPrefix(target, \"-\") {\n    return fmt.Errorf(\"namespace cannot start with '-': %q\", target)\n}","typeGuard":null,"tryCatchPattern":"op := kubens.ParseArgs(argv)\nif so, ok := op.(kubens.SwitchOp); ok {\n    if strings.HasPrefix(so.Target, \"-\") {\n        // shouldn't happen (getSwitchOp rejects), but guard anyway\n    }\n} else if uo, ok := op.(kubens.UnsupportedOp); ok {\n    fmt.Fprintf(stderr, \"unsupported option: %v\\n\", uo.Err)\n    os.Exit(2)\n}","preventionTips":["Never pass kubectl-only flags (-n, --namespace) to kubens","Always supply the namespace after -f/--force","Prefer the bare positional form `kubens <ns>` in scripts","Check UnsupportedOp before dispatching the returned Op"],"tags":["cli","usage","flags","go"],"backgroundTag":"unsupported-cli-option","analyzedSha":"12ad6fb22e8c546ee2b54e7de38aa51c906832f7","analyzedAt":"2026-09-02T12:23:10.107Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T16:17:10.729Z"}