From 57ace37ec455ab808ae4ee1113a26ee29ab2a15d Mon Sep 17 00:00:00 2001 From: Ed Page Date: Tue, 6 Apr 2021 21:28:40 -0500 Subject: [PATCH] feat(config): Error on invalid types Fixes #221 --- src/policy.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/policy.rs b/src/policy.rs index 099f268c3..39b20126d 100644 --- a/src/policy.rs +++ b/src/policy.rs @@ -153,8 +153,18 @@ impl<'s> ConfigEngine<'s> { type_matcher.add_defaults(); let mut types: std::collections::HashMap<_, _> = Default::default(); for (type_name, type_engine) in type_.into_iter() { - for glob in type_engine.extend_glob.iter() { - type_matcher.add(type_name.as_str(), glob.as_str())?; + if type_engine.extend_glob.is_empty() { + if type_matcher + .definitions() + .iter() + .all(|def| def.name() != type_name.as_str()) + { + anyhow::bail!("Unknown type definition `{}`, pass `--type-list` to see valid names or set `extend_globs` to add a new one.", type_name); + } + } else { + for glob in type_engine.extend_glob.iter() { + type_matcher.add(type_name.as_str(), glob.as_str())?; + } } let mut new_type_engine = default.clone();