mirror of
https://github.com/rustic-rs/rustic.git
synced 2025-10-26 11:18:51 +00:00
feat(check): Allow to only check trees+packs for given snapshots (#1230)
see #251 Co-authored-by: simonsan <14062932+simonsan@users.noreply.github.com>
This commit is contained in:
parent
238ae99450
commit
2b8ee0f2e6
@ -4,11 +4,15 @@ use crate::{commands::open_repository, status_err, Application, RUSTIC_APP};
|
||||
|
||||
use abscissa_core::{Command, Runnable, Shutdown};
|
||||
use anyhow::Result;
|
||||
use rustic_core::CheckOptions;
|
||||
use rustic_core::{CheckOptions, SnapshotGroupCriterion};
|
||||
|
||||
/// `check` subcommand
|
||||
#[derive(clap::Parser, Command, Debug)]
|
||||
pub(crate) struct CheckCmd {
|
||||
/// Snapshots to check. If none is given, use filter options to filter from all snapshots
|
||||
#[clap(value_name = "ID")]
|
||||
ids: Vec<String>,
|
||||
|
||||
/// Check options
|
||||
#[clap(flatten)]
|
||||
opts: CheckOptions,
|
||||
@ -27,7 +31,16 @@ impl CheckCmd {
|
||||
fn inner_run(&self) -> Result<()> {
|
||||
let config = RUSTIC_APP.config();
|
||||
let repo = open_repository(&config.repository)?;
|
||||
repo.check(self.opts)?;
|
||||
|
||||
let groups = repo.get_snapshot_group(&self.ids, SnapshotGroupCriterion::new(), |sn| {
|
||||
config.snapshot_filter.matches(sn)
|
||||
})?;
|
||||
let trees = groups
|
||||
.into_iter()
|
||||
.flat_map(|(_, snaps)| snaps)
|
||||
.map(|snap| snap.tree)
|
||||
.collect();
|
||||
repo.check_with_trees(self.opts, trees)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user