{"record":{"id":"ed741844bd9d45e7","repo":"jdx/mise","slug":"invalid-compose-dependency-value-supported-ki","errorCode":null,"errorMessage":"invalid compose dependency '{value}': supported kinds are package, file, directory, service, user, and group","messagePattern":"invalid compose dependency '(.+?)': supported kinds are package, file, directory, service, user, and group","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/compose.rs","lineNumber":1143,"sourceCode":"    {\n        bail!(\n            \"invalid compose project_name '{name}': use lowercase letters, digits, dashes, and underscores\"\n        );\n    }\n    Ok(())\n}\n\nfn parse_dependency(value: &str) -> Result<ResourceId> {\n    let Some((kind, name)) = value.split_once(':') else {\n        bail!(\"invalid compose dependency '{value}': expected '<kind>:<name>'\");\n    };\n    if name.is_empty()\n        || !matches!(\n            kind,\n            \"package\" | \"file\" | \"directory\" | \"service\" | \"user\" | \"group\"\n        )\n    {\n        bail!(\n            \"invalid compose dependency '{value}': supported kinds are package, file, directory, service, user, and group\"\n        );\n    }\n    Ok(ResourceId::new(kind, name))\n}\n\nfn validate_values(kind: &str, values: &[String]) -> Result<()> {\n    if let Some(value) = values\n        .iter()\n        .find(|value| value.is_empty() || value.starts_with('-') || value.contains('\\0'))\n    {\n        bail!(\"invalid compose {kind} value '{value}'\");\n    }\n    Ok(())\n}\n\nfn validate_command(kind: &str, command: &[String]) -> Result<()> {\n    if command","sourceCodeStart":1125,"sourceCodeEnd":1161,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/system/compose.rs#L1125-L1161","documentation":"After splitting a dependency into kind and name, both must be valid: the name must be non-empty and the kind must be one of package, file, directory, service, user, or group. Otherwise this error is thrown listing the supported kinds.","triggerScenarios":"A dependency like `volume:data` (unsupported kind), `service:` (empty name), or a typo such as `pakage:foo`.","commonSituations":"Misspelling a kind, inventing a kind not in the supported set, or leaving the name blank after the colon.","solutions":["Use one of the supported kinds: package, file, directory, service, user, group","Ensure a non-empty name follows the colon (e.g. `service:db`)","Fix typos in the kind (e.g. `pakage` -> `package`)"],"exampleFix":"// before\ndepends = [\"volume:data\", \"service:\"]\n// after\ndepends = [\"directory:/srv/data\", \"service:db\"]","handlingStrategy":"validation","validationCode":"const KINDS: [&str; 6] = [\"package\",\"file\",\"directory\",\"service\",\"user\",\"group\"];\nfn check_dep(v: &str) -> Result<(), String> {\n    let (k, n) = v.split_once(':').ok_or(\"missing ':'\")?;\n    if n.is_empty() { return Err(\"empty name\".into()); }\n    if !KINDS.contains(&k) { return Err(format!(\"kind '{}' unsupported\", k)); }\n    Ok(())\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep a checked list of supported dependency kinds at hand","Fix typos in kinds; autocomplete against the enum","Reject empty names in config validation"],"tags":["validation","naming","enum"],"backgroundTag":"invalid-enum-value","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}