{"record":{"id":"2515fee62ff20ac1","repo":"jdx/mise","slug":"the-packslip-of-declares-a-shell-completion","errorCode":null,"errorMessage":"the packslip of {} declares a {shell} completion, but none of the files it names are in the install: the resource fetch failed or was skipped","messagePattern":"the packslip of (.+?) declares a (.+?) completion, but none of the files it names are in the install: the resource fetch failed or was skipped","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/packslip.rs","lineNumber":1170,"sourceCode":"        bail!(\n            \"{} was not installed from a packslip, so mise does not know its completions\",\n            tv.style()\n        );\n    };\n    let artifact = selected_artifact(\n        &statement,\n        tv.request.options().get_string(\"variant\").as_deref(),\n    );\n    let sources = completion_sources(\n        &statement,\n        &install_path,\n        shell,\n        artifact.as_ref(),\n        Some(tool),\n    );\n    if sources.is_empty() {\n        if declares_completion(&statement, shell) {\n            bail!(\n                \"the packslip of {} declares a {shell} completion, but none of the files it names are in the install: the resource fetch failed or was skipped\",\n                tv.style()\n            );\n        }\n        bail!(\n            \"the packslip of {} declares no {shell} completion\",\n            tv.style()\n        );\n    }\n    // A completion is asked for the moment a shell completes the command,\n    // which is when the user was going to run it anyway, so an `exec`\n    // source runs on demand with no setting; the specification's Running\n    // an exec entry says so. Because it runs the tool, its result is\n    // cached beside the install so the command runs once per version and\n    // shell rather than at every tab.\n    let bin = completion_bin(&statement, Some(tool)).ok_or_else(|| {\n        eyre!(\n            \"{} provides several executables; name the command to complete\",","sourceCodeStart":1152,"sourceCodeEnd":1188,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/packslip.rs#L1152-L1188","documentation":"The tool's packslip statement declares that it ships a completion for this shell, but completion_sources() found none of the named completion files actually present in the install directory. This means the resource fetch that should have copied those files into the install failed or was skipped, leaving the declared resources missing on disk.","triggerScenarios":"Running `mise completion <shell> --tool <tool>` where declares_completion(&statement, shell) is true but the files the packslip names do not exist under the install path — e.g. the resource fetch was interrupted, skipped for a variant mismatch, or failed during install.","commonSituations":"Install completed with resource download failures; installing a variant whose resources were not fetched; read-only or partially-extracted installs; offline installs that skipped resources.","solutions":["Reinstall the tool so resources are fetched: `mise uninstall <tool> && mise install <tool>`.","Check install logs with MISE_DEBUG=1 during install to see why the resource fetch failed or was skipped.","Verify network access and that the release's resources are downloadable; then reinstall.","If a variant option is set, confirm the variant's resources exist in the packslip."],"exampleFix":"// before: partial install, resources missing\nmise install gh\nmise completion bash --tool gh  # fails\n// after\nmise uninstall gh && mise install gh\nmise completion bash --tool gh","handlingStrategy":"retry","validationCode":"let files = declared_completion_files(&statement, install_path);\nlet missing: Vec<_> = files.iter().filter(|f| !f.exists()).collect();\nif !missing.is_empty() { eprintln!(\"resources missing: {missing:?}; reinstall\"); }","typeGuard":"fn resources_present(install: &Path, shell: &str) -> bool {\n    install.join(\"resources\").join(\"completions\").join(shell).exists()\n}","tryCatchPattern":"loop {\n    match completion_script(&config, tool, shell) {\n        Ok(s) => break Ok(s),\n        Err(e) if e.to_string().contains(\"resource fetch failed or was skipped\") => { reinstall(tool)?; continue; }\n        Err(e) => break Err(e),\n    }\n}","preventionTips":["Ensure stable network access during installs so resource fetches are not skipped.","Check install output for resource-fetch warnings before using completions.","Reinstall after interrupted or offline installs."],"tags":["completions","packslip","missing-files","install"],"backgroundTag":"file-not-found","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}