fix: passes servarr-name global switch to both the tui and cli

servarr-name global switch was documented but not fully implemented in commit fd6fcfc. this commit fully implements the feature
This commit is contained in:
solareon committed 2026-09-25 07:30:01 -04:00
1 parent e779f70187
commit 5279d37ea2
2 files changed
+55 -12

No files matched your search

+29 -2
View File
@@ -171,13 +171,40 @@ async fn main() -> Result<()> {
cancellation_token.clone(), cancellation_token.clone(),
))); )));
if args.command.is_none() {
if let Some(name) = args.global.servarr_name.as_deref() {
let mut app = app.lock().await;
anyhow::ensure!(
app.server_tabs.select_tab_by_title(name.trim()),
"A Servarr titled '{}' was not found in your configuration file",
name.trim()
);
}
}
match args.command { match args.command {
Some(command) => match command { Some(command) => match command {
Command::Radarr(_) | Command::Sonarr(_) | Command::Lidarr(_) => { Command::Radarr(_) | Command::Sonarr(_) | Command::Lidarr(_) => {
if spinner_disabled { if spinner_disabled {
start_cli_no_spinner(config, reqwest_client, cancellation_token, app, command).await; start_cli_no_spinner(
config,
reqwest_client,
cancellation_token,
app,
command,
args.global.servarr_name.as_deref(),
)
.await;
} else { } else {
start_cli_with_spinner(config, reqwest_client, cancellation_token, app, command).await; start_cli_with_spinner(
config,
reqwest_client,
cancellation_token,
app,
command,
args.global.servarr_name.as_deref(),
)
.await;
} }
} }
Command::Completions { shell } => { Command::Completions { shell } => {
+26 -10
View File
@@ -23,6 +23,7 @@ use tokio_util::sync::CancellationToken;
use crate::app::{App, AppConfig, log_and_print_error}; use crate::app::{App, AppConfig, log_and_print_error};
use crate::cli::{self, Command}; use crate::cli::{self, Command};
use crate::models::Route;
use crate::network::Network; use crate::network::Network;
use crate::ui::theme::ThemeDefinitionsWrapper; use crate::ui::theme::ThemeDefinitionsWrapper;
@@ -285,12 +286,16 @@ pub(super) async fn start_cli_with_spinner(
cancellation_token: CancellationToken, cancellation_token: CancellationToken,
app: Arc<Mutex<App<'_>>>, app: Arc<Mutex<App<'_>>>,
command: Command, command: Command,
servarr_name: Option<&str>,
) { ) {
config.verify_config_present_for_cli(&command); config.verify_config_present_for_cli(&command);
{ {
let mut app = app.lock().await; let mut app = app.lock().await;
app.cli_mode = true; app.cli_mode = true;
select_cli_configuration(&mut app, &config, &command, None); select_cli_configuration(&mut app, &config, &command, servarr_name).unwrap_or_else(|error| {
log_and_print_error(error.to_string());
process::exit(1);
});
} }
let pb = render_spinner(); let pb = render_spinner();
let app_nw = Arc::clone(&app); let app_nw = Arc::clone(&app);
@@ -314,12 +319,16 @@ pub(super) async fn start_cli_no_spinner(
cancellation_token: CancellationToken, cancellation_token: CancellationToken,
app: Arc<Mutex<App<'_>>>, app: Arc<Mutex<App<'_>>>,
command: Command, command: Command,
servarr_name: Option<&str>,
) { ) {
config.verify_config_present_for_cli(&command); config.verify_config_present_for_cli(&command);
{ {
let mut app = app.lock().await; let mut app = app.lock().await;
app.cli_mode = true; app.cli_mode = true;
select_cli_configuration(&mut app, &config, &command, None); select_cli_configuration(&mut app, &config, &command, servarr_name).unwrap_or_else(|error| {
log_and_print_error(error.to_string());
process::exit(1);
});
} }
let app_nw = Arc::clone(&app); let app_nw = Arc::clone(&app);
let mut network = Network::new(&app_nw, cancellation_token, reqwest_client); let mut network = Network::new(&app_nw, cancellation_token, reqwest_client);
@@ -338,16 +347,22 @@ pub fn select_cli_configuration(
app: &mut App<'_>, app: &mut App<'_>,
config: &AppConfig, config: &AppConfig,
command: &Command, command: &Command,
servarr_name_arg: Option<String>, servarr_name_arg: Option<&str>,
) { ) -> Result<()> {
if let Some(servarr_name) = servarr_name_arg { if let Some(servarr_name) = servarr_name_arg {
let trimmed_name = servarr_name.trim(); let trimmed_name = servarr_name.trim();
if !app.server_tabs.select_tab_by_title(trimmed_name) { let selected_index = app.server_tabs.tabs.iter().position(|tab| {
log_and_print_error(format!( tab.title == trimmed_name
"A Servarr titled '{trimmed_name}' was not found in your configuration file" && matches!(
)); (&tab.route, command),
process::exit(1); (Route::Radarr(..), Command::Radarr(_))
} | (Route::Sonarr(..), Command::Sonarr(_))
| (Route::Lidarr(..), Command::Lidarr(_))
)
});
app.server_tabs.index = selected_index.ok_or_else(|| {
anyhow!("A Servarr titled '{trimmed_name}' matching this command was not found in your configuration file")
})?;
} else { } else {
match command { match command {
Command::Radarr(_) => { Command::Radarr(_) => {
@@ -368,4 +383,5 @@ pub fn select_cli_configuration(
_ => (), _ => (),
} }
} }
Ok(())
} }