forked from pisilinux-rs/yali-rs
80e3559d0d
- 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.
117 lines
4.6 KiB
Rust
117 lines
4.6 KiB
Rust
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(())
|
||
}
|
||
}
|