feat: CLI Support for multiple Servarr instances

This commit is contained in:
2025-02-27 20:37:03 -07:00
parent f87e02cd7c
commit fd6fcfc98f
9 changed files with 239 additions and 40 deletions
+33 -1
View File
@@ -303,7 +303,39 @@ impl TabState {
&self.tabs[self.index].config
}
pub fn select_tab_by_title(&mut self, name: &str) -> bool {
if !self.tabs.is_empty() {
let mut found = false;
self.tabs.iter().enumerate().for_each(|(idx, tab)| {
if tab.title == name {
self.index = idx;
found = true;
}
});
return found;
}
false
}
pub fn select_tab_by_config(&mut self, config: &ServarrConfig) -> bool {
if !self.tabs.is_empty() {
let mut found = false;
self.tabs.iter().enumerate().for_each(|(idx, tab)| {
if tab.config == Some(config.clone()) {
self.index = idx;
found = true;
}
});
return found;
}
false
}
pub fn get_active_tab_help(&self) -> &str {
&self.tabs[self.index].help
}
+72
View File
@@ -537,6 +537,78 @@ mod tests {
assert!(active_config.is_none());
}
#[test]
fn test_select_tab_by_title() {
let tabs = create_test_tab_routes();
let mut tab_state = TabState { tabs, index: 0 };
let result = tab_state.select_tab_by_title("Test 2");
assert!(result);
assert_eq!(tab_state.index, 1);
let result = tab_state.select_tab_by_title("Not real");
assert!(!result);
assert_eq!(tab_state.index, 1);
}
#[test]
fn test_select_tab_by_title_empty_tabs_returns_false() {
let mut tab_state = TabState { tabs: vec![], index: 0 };
let result = tab_state.select_tab_by_title("Test 2");
assert!(!result);
assert_eq!(tab_state.index, 0);
}
#[test]
fn test_select_tab_by_config() {
let mut tabs = create_test_tab_routes();
tabs[0].config = Some(ServarrConfig {
name: Some("Test 1".to_owned()),
..ServarrConfig::default()
});
tabs[1].config = Some(ServarrConfig {
host: Some("http://localhost".to_owned()),
port: Some(7878),
..ServarrConfig::default()
});
let mut tab_state = TabState { tabs, index: 0 };
let result = tab_state.select_tab_by_config(&ServarrConfig {
host: Some("http://localhost".to_owned()),
port: Some(7878),
..ServarrConfig::default()
});
assert!(result);
assert_eq!(tab_state.index, 1);
let result = tab_state.select_tab_by_config(&ServarrConfig {
name: Some("Not real".to_owned()),
..ServarrConfig::default()
});
assert!(!result);
assert_eq!(tab_state.index, 1);
}
#[test]
fn test_select_tab_by_config_empty_tabs_returns_false() {
let mut tab_state = TabState { tabs: vec![], index: 0 };
let result = tab_state.select_tab_by_config(&ServarrConfig {
host: Some("http://localhost".to_owned()),
port: Some(7878),
..ServarrConfig::default()
});
assert!(!result);
assert_eq!(tab_state.index, 0);
}
#[test]
fn test_tab_state_get_active_tab_help() {