{"record":{"id":"83fc765a96cc1bab","repo":"jdx/mise","slug":"path-raw-id-unknown-template-engine-other","errorCode":null,"errorMessage":"\"{path_raw}\".{id}: unknown template engine '{other}' (expected \"tera\"), ignoring entry","messagePattern":"\"(.+?)\"\\.(.+?): unknown template engine '(.+?)' \\(expected \"tera\"\\), ignoring entry","errorType":"validation","errorClass":"eyre::Report","httpStatus":null,"severity":"warning","filePath":"src/system/edits.rs","lineNumber":275,"sourceCode":"                        \"\\\"{path_raw}\\\".{id}: block and source are mutually exclusive, ignoring entry\"\n                    )\n                }\n                (Some(inline), None) => BlockSource::Inline(inline),\n                (None, Some(src)) => {\n                    let src = file::replace_path(&src);\n                    BlockSource::File(if src.is_relative() {\n                        base.join(src)\n                    } else {\n                        src\n                    })\n                }\n                (None, None) => unreachable!(\"is_block\"),\n            };\n            let template = match entry.template.as_deref() {\n                None => false,\n                Some(\"tera\") => true,\n                Some(other) => {\n                    bail!(\n                        \"\\\"{path_raw}\\\".{id}: unknown template engine '{other}' (expected \\\"tera\\\"), ignoring entry\"\n                    )\n                }\n            };\n            let comment = entry\n                .comment\n                .unwrap_or_else(|| infer_comment(&path).to_string());\n            EditOp::Block {\n                source,\n                template,\n                comment,\n            }\n        }\n        (false, Some(line)) => {\n            // a \"line\" is matched against the file's individual lines, so an\n            // embedded newline could never converge — use a block for\n            // multi-line content\n            if line.contains('\\n') {","sourceCodeStart":257,"sourceCodeEnd":293,"githubUrl":"https://github.com/jdx/mise/blob/9dcfcaa0dc8747a2577d3270b69bb9d8313b2807/src/system/edits.rs#L257-L293","documentation":"The optional template field of a [dotfiles] block edit names the engine used to render content. Only \"tera\" is supported; any other value is warned about and the entry skipped. The field is a free string precisely so configs written for newer mise versions with new engines warn and skip here instead of breaking config parsing on older versions.","triggerScenarios":"{ block = '...', template = \"jinja\" } or template = \"handlebars\" in a [dotfiles] edit entry.","commonSituations":"Assuming mise supports the template engine from another dotfile manager; typo \"Tera\" with capital T; copying config from a tool that names a different engine.","solutions":["Use template = \"tera\" (lowercase, exact)","Drop template entirely for literal content — rendering is then skipped","If you need a different engine, render the content before mise and reference the result via source ="],"exampleFix":"# before\n[dotfiles]\n\"~/.gitconfig-user/name\" = { block = \"{{ name }}\", template = \"jinja\" }\n\n# after\n[dotfiles]\n\"~/.gitconfig-user/name\" = { block = \"{{ name }}\", template = \"tera\" }","handlingStrategy":"type-guard","validationCode":null,"typeGuard":"fn is_supported_template(v: Option<&str>) -> bool {\n    matches!(v, None | Some(\"tera\"))\n}","tryCatchPattern":null,"preventionTips":["Use template = \"tera\" exactly (lowercase); omit the key for literal content","Pre-render content with other engines and reference the result via source ="],"tags":["dotfiles","edits","template","tera","validation"],"backgroundTag":"unsupported-value","analyzedSha":"9dcfcaa0dc8747a2577d3270b69bb9d8313b2807","analyzedAt":"2026-08-17T14:28:50.624Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}