Added more stuff

This commit is contained in:
2024-06-22 16:54:12 -06:00
parent be43b49838
commit f4d7cc157b
7 changed files with 177 additions and 27 deletions

45
launcher/src/prism.rs Normal file
View File

@ -0,0 +1,45 @@
use std::{env, io::{Cursor, Seek}, path::PathBuf};
use flate2::read::GzDecoder;
use tar::Archive;
use crate::{ftp, java, system_dirs::get_local_data_directory};
pub fn check_prism() -> bool {
let path = get_local_data_directory().join("prism");
path.exists()
}
pub fn install_prism() -> Result<(), Box<dyn std::error::Error>>{
if check_prism() {
return Ok(());
}
java::install_java(21);
let path = PathBuf::new().join("prism").join(format!("prism-{}",if env::consts::OS == "windows" {"win.zip"} else {"lin.tar.gz"}));
let size = ftp::ftp_get_size(path.clone())?;
let mut buff = Cursor::new(vec![]);
let mut total = 0;
ftp::ftp_retr(path, &mut buff, |data| {
total += data;
println!("Downloading Prism: {}MB / {}MB", total/(1024*1024), size/(1024*1024));
}).unwrap();
std::fs::create_dir_all(get_local_data_directory().join("prism"))?;
buff.rewind()?;
if env::consts::OS != "windows" {
let tar = GzDecoder::new(buff);
let mut archive = Archive::new(tar);
if !archive.unpack(get_local_data_directory().join("prism")).is_ok() {
std::fs::remove_dir_all(get_local_data_directory().join("prism"));
}
} else {
if !zip_extract::extract(buff, get_local_data_directory().join("prism").as_path(), true).is_ok() {
std::fs::remove_dir_all(get_local_data_directory().join("prism"));
}
}
let buff = Cursor::new(vec![]);
ftp::ftp_retr(PathBuf, writer, callback)
Ok(())
}