{"record":{"id":"c7aad2d6dc50d84a","repo":"cilium/cilium","slug":"dest-is-required","errorCode":null,"errorMessage":"--dest is required","messagePattern":"--dest is required","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cilium-dbg/cmd/build-config.go","lineNumber":98,"sourceCode":"\n\tSource: []string{\n\t\tresolver.KindConfigMap + \":cilium-config\",\n\t\tresolver.KindNodeConfig + \":\" + os.Getenv(\"CILIUM_K8S_NAMESPACE\"),\n\t},\n\tAllowConfigKeys: []string{},\n\tDenyConfigKeys:  []string{},\n}\n\ntype buildConfig struct {\n\tcfg        buildConfigCfg\n\tlog        *slog.Logger\n\tclient     k8sClient.Clientset\n\tshutdowner hive.Shutdowner\n}\n\nfunc newBuildConfig(lc cell.Lifecycle, cfg buildConfigCfg, log *slog.Logger, client k8sClient.Clientset, shutdowner hive.Shutdowner) (*buildConfig, error) {\n\tif cfg.Dest == \"\" {\n\t\treturn nil, fmt.Errorf(\"--dest is required\")\n\t}\n\n\tobj := &buildConfig{\n\t\tcfg:        cfg,\n\t\tlog:        log,\n\t\tclient:     client,\n\t\tshutdowner: shutdowner,\n\t}\n\n\tlc.Append(cell.Hook{OnStart: obj.onStart})\n\n\treturn obj, nil\n}\n\nfunc (bc *buildConfig) onStart(ctx cell.HookContext) error {\n\tsources := []resolver.ConfigSource{}\n\tfor _, sourceSpec := range bc.cfg.Source {\n\t\tif sourceSpec == \"\" {","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/cilium/cilium/blob/ac7b90affa4baf0642e6685319d56907b3a73a6d/cilium-dbg/cmd/build-config.go#L80-L116","documentation":"Startup validation in newBuildConfig for the cilium-dbg build-config cell: the mandatory --dest flag (buildConfigCfg.Dest) is empty, so the command refuses to start. The command's whole purpose is writing resolved configurations to a destination directory, so a destination is required.","triggerScenarios":"Launching `cilium-dbg build-config` (or embedding the hive cell) without setting --dest, or with --dest set to an empty string (e.g. an unset environment variable interpolated into the flag).","commonSituations":"Missing flag in a Kubernetes manifest or systemd unit; DEST='' from an empty env var; typos in the flag name so it is silently ignored.","solutions":["Add the required flag: `cilium-dbg build-config --dest /tmp/cilium/config ...`.","Ensure the variable feeding --dest is non-empty at launch time; fail fast in your wrapper if it is unset.","Check flag spelling/casing so the value actually binds to cfg.Dest."],"exampleFix":"// before\n// exec cilium-dbg build-config --node-name \"$NODE_NAME\"\n\n// after\n// exec cilium-dbg build-config --node-name \"$NODE_NAME\" --dest /var/lib/cilium/config","handlingStrategy":"validation","validationCode":"if [ -z \"$DEST_DIR\" ]; then\n  echo \"--dest is required\" >&2; exit 2\nfi\nexec cilium-dbg build-config --dest \"$DEST_DIR\" \"$@\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always set --dest explicitly in manifests, units, and scripts.","Fail fast in wrappers when the value feeding --dest is empty.","Use :\"${DEST:?DEST unset}\" style shell guards to catch unset variables."],"tags":["cli","configuration","cilium","missing-flag"],"backgroundTag":"missing-required-flag","analyzedSha":"ac7b90affa4baf0642e6685319d56907b3a73a6d","analyzedAt":"2026-08-31T18:27:15.868Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}