Aurora-Print/Core/main.rs
2025-10-24 13:01:16 +02:00

54 lines
1.5 KiB
Rust
Raw Permalink 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.

mod web_server;
mod state;
mod console_ui;
mod config;
mod chromium;
mod headless;
use state::{SharedState, Status};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Aurora Core gestartet!");
//config Datei Lesen
let exe_dir = std::env::current_exe()?.parent().unwrap().to_path_buf();
let mut cfg = config::read_config(&exe_dir)?;
// Gemeinsamen Status anlegen
let state: SharedState = std::sync::Arc::new(std::sync::Mutex::new(Status {
web_server_active: false,
plugin_engine_active: false,
chromium: Default::default(),
headless: Default::default(),
loaded_plugins: vec![],
running_jobs: vec![],
}));
// UI sofort anzeigen läuft in eigenem Thread
let ui_state = state.clone();
let ui_thread = std::thread::spawn(move || {
// UI blockiert hier bis q/ESC aber nur in DIESEM Thread
let _ = console_ui::start_ui(ui_state);
});
//Chromium Check + Download
chromium::start_check(&mut cfg, &exe_dir, state.clone()).await?;
// Webserver im Hintergrund starten
let _server = web_server::start(state.clone(), cfg.server.port).await?;
// Headless Engine starten (Stub → Starting → Ready)
headless::start(state.clone()).await?;
// Main-Thread bleibt bis UI beendet wird (q/ESC)
let _ = ui_thread.join();
// (Optional) Nach UI-Ende Webserver-Task abbrechen:
// _server.abort();
Ok(())
}