Added more stuff
This commit is contained in:
45
launcher/src/prism.rs
Normal file
45
launcher/src/prism.rs
Normal 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(())
|
||||
}
|
Reference in New Issue
Block a user