1#![warn(clippy::unwrap_used)]
26#![allow(
28 clippy::cast_precision_loss,
31 clippy::cast_possible_truncation,
32 clippy::cast_sign_loss,
33 clippy::cast_possible_wrap,
34 clippy::missing_errors_doc,
36 clippy::missing_panics_doc,
37 clippy::too_many_lines,
39 clippy::struct_excessive_bools,
41 clippy::fn_params_excessive_bools,
42 clippy::unused_self,
44 clippy::similar_names
46)]
47
48pub mod cli;
49pub mod config;
50pub mod diff;
51#[cfg(feature = "enrichment")]
52pub mod enrichment;
53pub mod error;
54pub mod matching;
55pub mod model;
56pub mod parsers;
57pub mod pipeline;
58pub mod quality;
59pub mod reports;
60pub mod tui;
61pub mod utils;
62
63pub use config::{AppConfig, AppConfigBuilder, ConfigPreset, EnrichmentConfig, TuiConfig};
65pub use config::{
66 BehaviorConfig, FilterConfig, GraphAwareDiffConfig, MatchingConfig, MatchingRulesPathConfig,
67 OutputConfig,
68};
69pub use config::{ConfigError, Validatable};
70pub use config::{DiffConfig, MatrixConfig, MultiDiffConfig, TimelineConfig, ViewConfig};
71pub use diff::{DiffEngine, DiffResult, GraphDiffConfig};
72#[cfg(feature = "enrichment")]
73pub use enrichment::{
74 EnricherConfig, EnrichmentStats, NoOpEnricher, OsvEnricher, OsvEnricherConfig,
75 VulnerabilityEnricher,
76};
77pub use error::{ErrorContext, OptionContext, Result, SbomDiffError};
78pub use matching::{
79 ComponentMatcher, FuzzyMatchConfig, FuzzyMatcher, MatchResult, MatchTier, MatchingRulesConfig,
80 RuleEngine,
81};
82pub use model::{
83 CanonicalId, Component, ComponentSortKey, NormalizedSbom, NormalizedSbomIndex, SbomIndexBuilder,
84};
85pub use parsers::{parse_sbom, parse_sbom_str, SbomParser};
86pub use quality::{QualityGrade, QualityReport, QualityScorer, ScoringProfile};
87#[allow(deprecated)]
88pub use reports::{ReportFormat, ReportGenerator, StreamingReporter, WriterReporter};
89
90pub use tui::{
92 CycleFilter, FilterState, ListNavigation, ListState, OverlayState, SearchState,
93 SearchStateCore, StatusMessage, ViewModelOverlayKind,
94};