flowrs-tui 0.1.15

Flowrs is a Terminal User Interface (TUI) for Apache Airflow
use std::path::PathBuf;

use inquire::Select;

use super::model::RemoveCommand;
use crate::airflow::config::FlowrsConfig;
use anyhow::Result;

impl RemoveCommand {
    pub fn run(&self) -> Result<()> {
        let path = self.file.as_ref().map(PathBuf::from);
        let mut config = FlowrsConfig::from_file(&path)?;

        if let Some(mut servers) = config.servers.clone() {
            let name = match self.name {
                None => Select::new(
                    "name",
                    servers.iter().map(|server| server.name.clone()).collect(),
                )
                .prompt()?,
                Some(ref name) => name.to_string(),
            };
            servers.retain(|server| server.name != name && server.managed.is_none());
            config.servers = Some(servers);
            config.write_to_file()?;

            println!("✅ Config '{}' removed successfully!", name);
        };
        Ok(())
    }
}