Skip to main content

changeset_operations/verification/
result.rs

1use std::collections::HashSet;
2use std::path::PathBuf;
3
4use changeset_core::PackageInfo;
5use gset::Getset;
6
7#[derive(Debug, Getset)]
8pub struct VerificationResult {
9    #[getset(get, vis = "pub")]
10    affected_packages: Vec<PackageInfo>,
11    #[getset(get, vis = "pub")]
12    transitive_dependents: HashSet<String>,
13    #[getset(get, vis = "pub")]
14    covered_packages: HashSet<String>,
15    #[getset(get, vis = "pub")]
16    uncovered_packages: Vec<PackageInfo>,
17    #[getset(get, vis = "pub")]
18    deleted_changesets: Vec<PathBuf>,
19    #[getset(get, vis = "pub")]
20    none_bump_violations: Vec<String>,
21    #[getset(get, vis = "pub")]
22    project_files: Vec<PathBuf>,
23    #[getset(get, vis = "pub")]
24    ignored_files: Vec<PathBuf>,
25}
26
27impl VerificationResult {
28    pub(crate) fn new(
29        affected_packages: Vec<PackageInfo>,
30        transitive_dependents: HashSet<String>,
31        project_files: Vec<PathBuf>,
32        ignored_files: Vec<PathBuf>,
33    ) -> Self {
34        Self {
35            affected_packages,
36            transitive_dependents,
37            covered_packages: HashSet::new(),
38            uncovered_packages: Vec::new(),
39            deleted_changesets: Vec::new(),
40            none_bump_violations: Vec::new(),
41            project_files,
42            ignored_files,
43        }
44    }
45
46    pub(crate) fn insert_covered_package(&mut self, name: String) {
47        self.covered_packages.insert(name);
48    }
49
50    pub(crate) fn set_uncovered_packages(&mut self, uncovered: Vec<PackageInfo>) {
51        self.uncovered_packages = uncovered;
52    }
53
54    pub(crate) fn set_deleted_changesets(&mut self, deleted: Vec<PathBuf>) {
55        self.deleted_changesets = deleted;
56    }
57
58    pub(crate) fn set_none_bump_violations(&mut self, violations: Vec<String>) {
59        self.none_bump_violations = violations;
60    }
61
62    #[must_use]
63    pub fn is_success(&self) -> bool {
64        self.uncovered_packages.is_empty()
65            && self.deleted_changesets.is_empty()
66            && self.none_bump_violations.is_empty()
67    }
68}