Files
yali-rs/src/jobs/finish.rs
T
Erkan IŞIK 80e3559d0d refactor: split huge jobs/mod.rs into modular files & modernize slideshow
- Split src/jobs/mod.rs into specialized domain files under src/jobs/ (autologin, bootloader, execution, finish, keyboard, location, netinstall, network, partition, users) for better modularity and cleaner architecture.
- Integrated chrono-tz and enabled serde features on chrono in Cargo.toml.
- Added missing assets (remixicon font, icons, slides images/configs).
- Integrated localized slideshow presentation directly into UI, reading configurations from TOML.
- Updated Makefile to correctly target and install slideshow files into system directories.
- Cleaned up obsolete bin utility slides_test.rs.
2026-08-10 16:51:35 +03:00

117 lines
4.6 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
use super::{run_chroot, Job, UiSender};
/// COMAR servislerini ve tetikleyicilerini yapılandırır.
pub struct RunComarJob {
#[allow(dead_code)]
pub mount: String,
}
#[async_trait::async_trait]
impl Job for RunComarJob {
fn name(&self) -> &str { "job_comar" }
async fn run(&self, ui: &UiSender) -> Result<(), String> {
// pisi configure-pending: paket post-install scriptlerini çalıştırır.
// Yapılandırılacak paket yoksa çıkış kodu sıfır dışı olabilir — fatal değil.
// pisi cp işlemi kurulum sonrası atlanıyor (kullanıcı isteği).
let _ = ui;
// ui.log("pisi paketleri yapılandırılıyor (COMAR)…");
// match run_chroot(&self.mount, &["pisi", "cp"]).await {
// Ok(_) => {
// ui.log("✓ pisi paketleri yapılandırıldı");
// }
// Err(e) => {
// // "no packages to configure" gibi durumlar hata değil
// if e.contains("no packages") || e.contains("Nothing to do") {
// ui.log(" pisi: yapılandırılacak paket yok, atlanıyor");
// } else {
// // Gerçek hata — uyar ama kurulumu durdurma
// ui.log(format!("pisi paketleri yapılandırma uyarısı: {}", e));
// ui.log("Bu uyarı kritik değilse kurulum devam edecek.");
// }
// }
// }
Ok(())
}
}
/// ldconfig: paylaşımlı kütüphane önbelleğini yeniden oluşturur.
pub struct RunLdconfigJob {
pub mount: String,
}
#[async_trait::async_trait]
impl Job for RunLdconfigJob {
fn name(&self) -> &str { "job_ldconfig" }
async fn run(&self, ui: &UiSender) -> Result<(), String> {
ui.log("ldconfig çalıştırılıyor…");
match run_chroot(&self.mount, &["ldconfig"]).await {
Ok(_) => ui.log("✓ ldconfig tamamlandı"),
Err(e) => ui.log(format!("⚠ ldconfig uyarısı: {}", e)),
}
Ok(())
}
}
/// update-environment: PisiLinux init/betiklerini yeniden yapılandırır.
pub struct UpdateEnvironmentJob {
pub mount: String,
}
#[async_trait::async_trait]
impl Job for UpdateEnvironmentJob {
fn name(&self) -> &str { "job_update_env" }
async fn run(&self, ui: &UiSender) -> Result<(), String> {
ui.log("update-environment çalıştırılıyor…");
match run_chroot(&self.mount, &["update-environment"]).await {
Ok(_) => ui.log("✓ update-environment tamamlandı"),
Err(e) => ui.log(format!("⚠ update-environment uyarısı: {}", e)),
}
Ok(())
}
}
/// Live ortam izlerini hedef sistemden temizler.
pub struct CleanupLiveJob {
pub mount: String,
}
#[async_trait::async_trait]
impl Job for CleanupLiveJob {
fn name(&self) -> &str { "job_cleanup_live" }
async fn run(&self, ui: &UiSender) -> Result<(), String> {
let mt = &self.mount;
ui.log("Live ortam izleri temizleniyor…");
// run/livemedia
let _ = tokio::fs::remove_dir_all(format!("{}/run/livemedia", mt)).await;
// var/cache/pisi/packages
let _ = tokio::fs::remove_dir_all(format!("{}/var/cache/pisi/packages", mt)).await;
// YALI desktop dosyaları
//let _ = tokio::fs::remove_file(format!("{}/usr/share/applications/yali.desktop", mt)).await;
//let _ = tokio::fs::remove_file(format!("{}/usr/share/applications/yali-bin.desktop", mt)).await;
let _ = tokio::fs::remove_dir_all(format!("{}/bootmnt", mt)).await;
//pisi kullanıcısını sil (ev diziniyle birlikte), YALI paketlerini kaldır
let _ = run_chroot(&self.mount, &["userdel", "-r", "pisi"]).await;
let _ = run_chroot(&self.mount, &["pisi", "rm", "yali-rs"]).await;
// live paket deposunu kaldır
let _ = run_chroot(&self.mount, &["pisi", "rr", "live"]).await;
// depolarları yeniden ekle (stable2 + contrib)
ui.log("Depolar Ekleniyor…");
let _ = run_chroot(&self.mount, &["pisi", "ar", "stable2", "https://stable2.pisilinux.org/pisi-index.xml.xz"]).await;
let _ = run_chroot(&self.mount, &["pisi", "ar", "contrib", "https://contrib.pisilinux.org/pisi-index.xml.xz"]).await;
// depoları aktif et
ui.log("Depolar aktif ediliyor...");
let _ = run_chroot(&self.mount, &["pisi", "er", "contrib", "stable2"]).await;
// paket listelerini güncelle
ui.log("Depolar Güncelleniyor...");
let _ = run_chroot(&self.mount, &["pisi", "ur"]).await;
ui.log("✓ Live temizlik tamamlandı");
Ok(())
}
}