#[derive(Debug, StructOpt)] struct CommonOpt { #[structopt(short = "d", long = "debug", env = "KANIDM_DEBUG")] /// Logging level. quiet, default, filter, verbose, perffull debug: Option, #[structopt(parse(from_os_str), short = "c", long = "config", env = "KANIDM_CONFIG")] /// Path to the server's configuration file. If it does not exist, it will be created. config_path: PathBuf, } #[derive(Debug, StructOpt)] struct BackupOpt { #[structopt(parse(from_os_str))] /// Output path for the backup content. path: PathBuf, #[structopt(flatten)] commonopts: CommonOpt, } #[derive(Debug, StructOpt)] struct RestoreOpt { #[structopt(parse(from_os_str))] /// Restore from this path. Should be created with "backup". path: PathBuf, #[structopt(flatten)] commonopts: CommonOpt, } #[derive(Debug, StructOpt)] struct RecoverAccountOpt { #[structopt(short)] /// The account name to recover credentials for. name: String, #[structopt(flatten)] commonopts: CommonOpt, } #[derive(Debug, StructOpt)] struct DomainOpt { #[structopt(short)] /// The new domain name. new_domain_name: String, #[structopt(flatten)] commonopts: CommonOpt, } #[derive(Debug, StructOpt)] enum KanidmdOpt { #[structopt(name = "server")] /// Start the IDM Server Server(CommonOpt), #[structopt(name = "backup")] /// Backup the database content (offline) Backup(BackupOpt), #[structopt(name = "restore")] /// Restore the database content (offline) Restore(RestoreOpt), #[structopt(name = "verify")] /// Verify database and entity consistency. Verify(CommonOpt), #[structopt(name = "recover_account")] /// Recover an account's password RecoverAccount(RecoverAccountOpt), // #[structopt(name = "reset_server_id")] // ResetServerId(CommonOpt), #[structopt(name = "reindex")] /// Reindex the database (offline) Reindex(CommonOpt), #[structopt(name = "vacuum")] /// Vacuum the database to reclaim space or change db_fs_type/page_size (offline) Vacuum(CommonOpt), #[structopt(name = "domain_name_change")] /// Change the IDM domain name DomainChange(DomainOpt), }