1pub mod delta;
2pub mod error;
3pub mod metadata;
4pub mod output;
5
6pub use crate::error::Error;
7use crate::metadata::ParsedMetadata;
8use crate::output::{display_human, display_json, validate_invariant as validate_parsed_invariant};
9
10pub fn parse_metadata(path: Option<std::path::PathBuf>) -> Result<ParsedMetadata, Error> {
11 crate::metadata::parse_metadata(path)
12}
13
14pub fn compute_and_display_human(path: Option<std::path::PathBuf>) -> Result<String, Error> {
15 let parsed = parse_metadata(path)?;
16 display_human(&parsed)
17}
18
19pub fn compute_and_display_json(path: Option<std::path::PathBuf>) -> Result<String, Error> {
20 let parsed = parse_metadata(path)?;
21 display_json(&parsed)
22}
23
24pub fn validate_invariant(path: Option<std::path::PathBuf>) -> Result<bool, Error> {
25 let parsed = parse_metadata(path)?;
26 Ok(validate_parsed_invariant(&parsed))
27}
28
29pub struct CargoDeclared {
30 path: Option<std::path::PathBuf>,
31}
32
33impl CargoDeclared {
34 pub fn new() -> Self {
35 Self { path: None }
36 }
37
38 pub fn with_path(mut self, path: std::path::PathBuf) -> Self {
39 self.path = Some(path);
40 self
41 }
42
43 pub fn run_human(self) -> Result<String, Error> {
44 compute_and_display_human(self.path)
45 }
46
47 pub fn run_json(self) -> Result<String, Error> {
48 compute_and_display_json(self.path)
49 }
50}
51
52impl Default for CargoDeclared {
53 fn default() -> Self {
54 Self::new()
55 }
56}