summaryrefslogtreecommitdiff
path: root/src/cmd/list_backup_versions.rs
blob: 859d91c57ee9b85ad699c13b3b6f07e57a430210 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//! The `backup` subcommand.

use crate::config::ClientConfig;
use crate::dbgen::{schema_version, DEFAULT_SCHEMA_MAJOR, SCHEMA_MAJORS};
use crate::error::ObnamError;

use structopt::StructOpt;

/// List supported backup schema versions.
#[derive(Debug, StructOpt)]
pub struct ListSchemaVersions {
    /// List only the default version.
    #[structopt(long)]
    default_only: bool,
}

impl ListSchemaVersions {
    /// Run the command.
    pub fn run(&self, _config: &ClientConfig) -> Result<(), ObnamError> {
        if self.default_only {
            let schema = schema_version(DEFAULT_SCHEMA_MAJOR)?;
            println!("{}", schema);
        } else {
            for major in SCHEMA_MAJORS {
                let schema = schema_version(*major)?;
                println!("{}", schema);
            }
        }
        Ok(())
    }
}