diff options
Diffstat (limited to 'mingling_cli/src/linter/registry.rs')
| -rw-r--r-- | mingling_cli/src/linter/registry.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/mingling_cli/src/linter/registry.rs b/mingling_cli/src/linter/registry.rs new file mode 100644 index 0000000..79f3225 --- /dev/null +++ b/mingling_cli/src/linter/registry.rs @@ -0,0 +1,33 @@ +use mingling::{LazyInit, Program, macros::program_setup}; +use serde::Deserialize; + +use crate::ThisProgram; + +#[derive(Debug, Default, Clone, Deserialize)] +pub struct ResLintRegistry { + pub lints: Vec<LintEntry>, +} + +#[derive(Debug, Clone, Deserialize)] +pub struct LintEntry { + pub name: String, + pub title: String, + pub summary: String, + pub metadata: LintMetadata, +} + +#[derive(Debug, Clone, Deserialize)] +pub struct LintMetadata { + pub active_on: String, + pub author: String, + pub default: String, +} + +#[program_setup] +pub fn lint_registry_setup(p: &mut Program<ThisProgram>) { + p.with_resource(ResLintRegistry::lazy_init(|| { + let registry: ResLintRegistry = serde_json::from_str(include_str!("../../registry.json")) + .expect("failed to parse embedded registry.json"); + registry + })); +} |
