summaryrefslogtreecommitdiff
path: root/src/cmd/list_backup_versions.rs
blob: c78ccfc5ef3a1593e0f66f055dedb6ff5ce24c2e (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 clap::Parser;

/// List supported backup schema versions.
#[derive(Debug, Parser)]
pub struct ListSchemaVersions {
    /// List only the default version.
    #[clap(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(())
    }
}