diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-08-06 17:23:34 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-08-09 02:56:28 +0800 |
| commit | f191aeb3b7e783c781a6d9256a8d5609aea69e7f (patch) | |
| tree | c7bb78f59ed488582b41049f2b6ccffaac52a8f2 /mingling_cli/src/linter/registry.rs | |
| parent | 5d741c3e32edf7c2667efbbc20d64fed8f4804f3 (diff) | |
feat(linter): refactor lint registry into program resource
Extract lint registry loading from cmd_explain into a shared
program-level resource initialized via setup.
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..5241c29 --- /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 LintRegistry { + 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(LintRegistry::lazy_init(|| { + let registry: LintRegistry = serde_json::from_str(include_str!("../../registry.json")) + .expect("failed to parse embedded registry.json"); + registry + })); +} |
