Skip to main content

cargo_declared/
lib.rs

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}