use super::{run_chroot, Job, UiSender};

/// Ek paket gruplarını chroot içinde kurar.
pub struct InstallExtraPackagesJob {
    pub mount: String,
    pub package_groups: Vec<String>,
}

#[async_trait::async_trait]
impl Job for InstallExtraPackagesJob {
    fn name(&self) -> &str { "job_netinstall" }

    async fn run(&self, ui: &UiSender) -> Result<(), String> {
        use crate::steps::netinstall::PACKAGE_GROUPS;

        let mut packages: Vec<&str> = Vec::new();
        for (key, _, pkgs) in PACKAGE_GROUPS {
            if self.package_groups.contains(&key.to_string()) {
                packages.extend_from_slice(pkgs);
            }
        }

        if packages.is_empty() {
            ui.log("Ek paket seçilmedi, atlanıyor.");
            return Ok(());
        }

        let pkg_list = packages.join(" ");
        ui.log(format!("Ek paketler kuruluyor: {}", pkg_list));
        match run_chroot(&self.mount, &["pisi", "install", &pkg_list]).await {
            Ok(_) => ui.log("✓ Ek paketler kuruldu"),
            Err(e) => {
                ui.log(format!("⚠ pisi install uyarısı: {}", e));
                ui.log("⚠ Bu hata kritik değilse kurulum devam edecek.");
            }
        }
        Ok(())
    }
}
