mirror of
https://github.com/moghtech/komodo.git
synced 2026-09-05 00:00:45 +00:00
correct defaults for CLI and only can pass restore folder from cli arg
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
use std::path::Path;
|
||||
|
||||
use anyhow::Context;
|
||||
use colored::Colorize;
|
||||
use komodo_client::entities::{
|
||||
@@ -9,7 +11,11 @@ use crate::config::cli_config;
|
||||
pub async fn handle(command: &DatabaseCommand) -> anyhow::Result<()> {
|
||||
match command {
|
||||
DatabaseCommand::Backup { yes, .. } => backup(*yes).await,
|
||||
DatabaseCommand::Restore { yes, .. } => restore(*yes).await,
|
||||
DatabaseCommand::Restore {
|
||||
restore_folder,
|
||||
yes,
|
||||
..
|
||||
} => restore(restore_folder.as_deref(), *yes).await,
|
||||
DatabaseCommand::Prune { yes, .. } => prune(*yes).await,
|
||||
DatabaseCommand::Copy { yes, .. } => copy(*yes).await,
|
||||
}
|
||||
@@ -74,7 +80,10 @@ async fn backup(yes: bool) -> anyhow::Result<()> {
|
||||
prune_inner().await
|
||||
}
|
||||
|
||||
async fn restore(yes: bool) -> anyhow::Result<()> {
|
||||
async fn restore(
|
||||
restore_folder: Option<&Path>,
|
||||
yes: bool,
|
||||
) -> anyhow::Result<()> {
|
||||
let config = cli_config();
|
||||
|
||||
println!(
|
||||
@@ -110,7 +119,7 @@ async fn restore(yes: bool) -> anyhow::Result<()> {
|
||||
" - Backups Folder".dimmed(),
|
||||
config.backups_folder
|
||||
);
|
||||
if let Some(restore_folder) = &config.restore_folder {
|
||||
if let Some(restore_folder) = restore_folder {
|
||||
println!("{}: {restore_folder:?}", " - Restore Folder".dimmed());
|
||||
}
|
||||
|
||||
@@ -122,7 +131,7 @@ async fn restore(yes: bool) -> anyhow::Result<()> {
|
||||
database::utils::restore(
|
||||
&db.db,
|
||||
&config.backups_folder,
|
||||
config.restore_folder.as_deref(),
|
||||
restore_folder,
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
+7
-15
@@ -86,19 +86,14 @@ pub fn cli_config() -> &'static CliConfig {
|
||||
_ => (None, None, None),
|
||||
};
|
||||
|
||||
let (backups_folder, restore_folder) = match &args.command {
|
||||
let backups_folder = match &args.command {
|
||||
Command::Database {
|
||||
command: DatabaseCommand::Backup { backups_folder, .. },
|
||||
} => (backups_folder.clone(), None),
|
||||
} => backups_folder.clone(),
|
||||
Command::Database {
|
||||
command:
|
||||
DatabaseCommand::Restore {
|
||||
backups_folder,
|
||||
restore_folder,
|
||||
..
|
||||
},
|
||||
} => (backups_folder.clone(), restore_folder.clone()),
|
||||
_ => (None, None),
|
||||
command: DatabaseCommand::Restore { backups_folder, .. },
|
||||
} => backups_folder.clone(),
|
||||
_ => None,
|
||||
};
|
||||
let (uri, address, username, password, db_name) =
|
||||
match &args.command {
|
||||
@@ -172,9 +167,6 @@ pub fn cli_config() -> &'static CliConfig {
|
||||
max_backups: env
|
||||
.komodo_cli_max_backups
|
||||
.unwrap_or(config.max_backups),
|
||||
restore_folder: restore_folder
|
||||
.or(env.komodo_cli_restore_folder)
|
||||
.or(config.restore_folder),
|
||||
database_target: DatabaseConfig {
|
||||
uri: uri
|
||||
.or(env.komodo_cli_database_target_uri)
|
||||
@@ -191,7 +183,7 @@ pub fn cli_config() -> &'static CliConfig {
|
||||
db_name: db_name
|
||||
.or(env.komodo_cli_database_target_db_name)
|
||||
.unwrap_or(config.database_target.db_name),
|
||||
app_name: String::from("komodo_cli"),
|
||||
app_name: config.database_target.app_name,
|
||||
},
|
||||
database: DatabaseConfig {
|
||||
uri: maybe_read_item_from_file(
|
||||
@@ -215,7 +207,7 @@ pub fn cli_config() -> &'static CliConfig {
|
||||
db_name: env
|
||||
.komodo_database_db_name
|
||||
.unwrap_or(config.database.db_name),
|
||||
app_name: String::from("komodo_cli"),
|
||||
app_name: config.database.app_name,
|
||||
},
|
||||
cli_logging: LogConfig {
|
||||
level: args
|
||||
|
||||
@@ -504,30 +504,26 @@ pub struct CliConfig {
|
||||
/// if there are more backups than `max_backups`
|
||||
#[serde(default = "default_max_backups")]
|
||||
pub max_backups: u16,
|
||||
/// A specific restore folder,
|
||||
/// either absolute or relative to the `backups_folder`.
|
||||
///
|
||||
/// Default: None (restores most recent backup).
|
||||
///
|
||||
/// Example: `2025-08-04_05_05_53`
|
||||
pub restore_folder: Option<PathBuf>,
|
||||
// Same as Core
|
||||
/// Configure database connection
|
||||
#[serde(
|
||||
default,
|
||||
default = "default_database_config",
|
||||
alias = "mongo",
|
||||
skip_serializing_if = "DatabaseConfig::is_default"
|
||||
skip_serializing_if = "database_config_is_default"
|
||||
)]
|
||||
pub database: DatabaseConfig,
|
||||
/// Configure restore / copy database connection
|
||||
#[serde(
|
||||
default,
|
||||
default = "default_database_config",
|
||||
alias = "database_copy",
|
||||
skip_serializing_if = "DatabaseConfig::is_default"
|
||||
skip_serializing_if = "database_config_is_default"
|
||||
)]
|
||||
pub database_target: DatabaseConfig,
|
||||
/// Logging configuration
|
||||
#[serde(default, skip_serializing_if = "LogConfig::is_default")]
|
||||
#[serde(
|
||||
default = "default_log_config",
|
||||
skip_serializing_if = "log_config_is_default"
|
||||
)]
|
||||
pub cli_logging: LogConfig,
|
||||
/// Configure additional profiles.
|
||||
#[serde(
|
||||
@@ -547,6 +543,28 @@ fn default_max_backups() -> u16 {
|
||||
14
|
||||
}
|
||||
|
||||
fn default_database_config() -> DatabaseConfig {
|
||||
DatabaseConfig {
|
||||
app_name: String::from("komodo_cli"),
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
fn database_config_is_default(db_config: &DatabaseConfig) -> bool {
|
||||
db_config == &default_database_config()
|
||||
}
|
||||
|
||||
fn default_log_config() -> LogConfig {
|
||||
LogConfig {
|
||||
location: false,
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
fn log_config_is_default(log_config: &LogConfig) -> bool {
|
||||
log_config == &default_log_config()
|
||||
}
|
||||
|
||||
impl Default for CliConfig {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
@@ -554,16 +572,11 @@ impl Default for CliConfig {
|
||||
config_aliases: Default::default(),
|
||||
cli_key: Default::default(),
|
||||
cli_secret: Default::default(),
|
||||
cli_logging: LogConfig {
|
||||
opentelemetry_service_name: String::from("Komodo-CLI"),
|
||||
location: false,
|
||||
..Default::default()
|
||||
},
|
||||
cli_logging: default_log_config(),
|
||||
backups_folder: default_backups_folder(),
|
||||
max_backups: default_max_backups(),
|
||||
restore_folder: Default::default(),
|
||||
database: Default::default(),
|
||||
database_target: Default::default(),
|
||||
database: default_database_config(),
|
||||
database_target: default_database_config(),
|
||||
host: Default::default(),
|
||||
profiles: Default::default(),
|
||||
}
|
||||
@@ -586,7 +599,6 @@ impl CliConfig {
|
||||
cli_logging: self.cli_logging.clone(),
|
||||
backups_folder: self.backups_folder.clone(),
|
||||
max_backups: self.max_backups,
|
||||
restore_folder: self.restore_folder.clone(),
|
||||
database_target: self.database_target.sanitized(),
|
||||
host: self.host.clone(),
|
||||
database: self.database.sanitized(),
|
||||
|
||||
Reference in New Issue
Block a user