mod backup_restore;
mod cleanup;
mod diff;
mod edit;
mod list;
mod status;
mod upgrade;
use clap::Parser;
use thiserror::Error;
pub(crate) use backup_restore::{run_backup, run_restore};
pub(crate) use cleanup::run_cleanup;
pub(crate) use diff::run_diff;
pub(crate) use edit::run_edit;
pub(crate) use list::run_list;
pub(crate) use status::run_status;
pub(crate) use upgrade::run_upgrade;
use crate::newtypes::HoardName;
pub use backup_restore::Error as BackupRestoreError;
pub use edit::Error as EditError;
#[derive(Debug, Error)]
pub enum Error {
#[error("error while printing help message: {0}")]
PrintHelp(#[from] clap::Error),
#[error("failed to back up: {0}")]
Backup(#[source] BackupRestoreError),
#[error("error while running or saving consistency checks: {0}")]
Checkers(#[from] crate::checkers::Error),
#[error("error after cleaning up {success_count} log files: {error}")]
Cleanup {
success_count: u32,
#[source]
error: crate::checkers::history::operation::Error,
},
#[error("error while running hoard diff: {0}")]
Diff(#[source] crate::hoard::iter::Error),
#[error("error while running hoard edit: {0}")]
Edit(#[from] edit::Error),
#[error("failed to restore: {0}")]
Restore(#[source] backup_restore::Error),
#[error("error while running hoard status: {0}")]
Status(#[source] crate::hoard::iter::Error),
#[error("error while running hoard upgrade: {0}")]
Upgrade(#[from] upgrade::Error),
}
#[derive(Clone, PartialEq, Eq, Debug, Parser)]
pub enum Command {
Validate,
Cleanup,
Backup {
hoards: Vec<HoardName>,
},
Restore {
hoards: Vec<HoardName>,
},
List,
Edit,
Diff {
hoard: HoardName,
#[clap(long, short)]
verbose: bool,
},
Status,
Upgrade,
}
impl Default for Command {
fn default() -> Self {
Self::Validate
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_command_is_validate() {
assert_eq!(Command::Validate, Command::default());
}
}