44 lines
1.1 KiB
Rust
44 lines
1.1 KiB
Rust
use std::{error::Error, fs, process::Command};
|
|
|
|
use shy_launcher::{config::Config, downloader};
|
|
|
|
#[tokio::main(flavor = "current_thread")]
|
|
async fn main() -> Result<(), Box<dyn Error>> {
|
|
println!("Starting app launcher...");
|
|
let config = Config::load("config.json")?;
|
|
|
|
println!("Starting download...");
|
|
downloader::download(config.downloads()).await;
|
|
|
|
println!("Verifying file presence...");
|
|
for download in config.downloads() {
|
|
let filename = download.filename();
|
|
if !fs::exists(filename)? {
|
|
panic!("Required file {} not present", filename);
|
|
}
|
|
println!("[ok] {}", filename);
|
|
}
|
|
|
|
println!("Freeing memory...");
|
|
if unsafe { libc::malloc_trim(0) } == 1 {
|
|
println!("Freed up some memory.");
|
|
}
|
|
|
|
println!("Launching app...");
|
|
println!();
|
|
println!("--------------------------");
|
|
println!();
|
|
|
|
let mut child = Command::new(config.run())
|
|
.args(config.args())
|
|
.spawn()?;
|
|
|
|
let exit = child.wait()?;
|
|
|
|
println!();
|
|
println!("--------------------------");
|
|
println!();
|
|
println!("Child exited: {exit}");
|
|
|
|
Ok(())
|
|
} |