mirror of
				https://github.com/Tim-Paik/neutauri.git
				synced 2024-10-12 23:29:41 +00:00 
			
		
		
		
	update cli
This commit is contained in:
		| @ -11,3 +11,7 @@ new_mime_guess = "4.0" | ||||
| serde = {version = "1.0", features = ["derive"]} | ||||
| toml = "0.5" | ||||
| wry = "0.12" | ||||
|  | ||||
| [profile.release.package.wry] | ||||
| debug = true | ||||
| debug-assertions = true | ||||
							
								
								
									
										49
									
								
								neutauri_bundler/src/bundle.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								neutauri_bundler/src/bundle.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | ||||
| use crate::data; | ||||
| use std::{fs, io::Write}; | ||||
|  | ||||
| #[cfg(windows)] | ||||
| const RUNTIME_DATA: &[u8] = include_bytes!("../../target/release/neutauri_runtime.exe"); | ||||
| #[cfg(not(windows))] | ||||
| const RUNTIME_DATA: &[u8] = include_bytes!("../../target/release/neutauri_runtime"); | ||||
|  | ||||
| fn options() -> fs::OpenOptions { | ||||
|     #[cfg(not(windows))] | ||||
|     use std::os::unix::prelude::OpenOptionsExt; | ||||
|     let mut options = fs::OpenOptions::new(); | ||||
|     options.write(true); | ||||
|     options.create(true); | ||||
|     options.truncate(true); | ||||
|     #[cfg(not(windows))] | ||||
|     options.mode(0o755); | ||||
|     options | ||||
| } | ||||
|  | ||||
| pub fn bundle(config_path: String) -> std::io::Result<()> { | ||||
|     let config_path = std::path::Path::new(&config_path).canonicalize()?; | ||||
|     let config: data::Config = toml::from_str(fs::read_to_string(&config_path)?.as_str()) | ||||
|         .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; | ||||
|     let source = match config_path.parent() { | ||||
|         Some(path) => path.join(&config.source).canonicalize()?, | ||||
|         None => config.source.canonicalize()?, | ||||
|     }; | ||||
|     let target = match config_path.parent() { | ||||
|         Some(path) => data::normalize_path(&path.join(&config.target)), | ||||
|         None => data::normalize_path(&config.target), | ||||
|     }; | ||||
|     let target = if target.extension() == None && cfg!(windows) { | ||||
|         target.with_extension("exe") | ||||
|     } else { | ||||
|         target | ||||
|     }; | ||||
|     if target.extension() == Some(std::ffi::OsStr::new("neu")) { | ||||
|         data::pack(config_path)?; | ||||
|         return Ok(()); | ||||
|     } | ||||
|     let data = data::Data::build_from_dir(source, config.window_attr()?, config.webview_attr()?)?; | ||||
|     let mut f = options().open(&target)?; | ||||
|     f.write_all(RUNTIME_DATA)?; | ||||
|     f.write_all(&data)?; | ||||
|     f.sync_all()?; | ||||
|     f.flush()?; | ||||
|     Ok(()) | ||||
| } | ||||
| @ -1,65 +1,10 @@ | ||||
| use std::{fs, io::Write}; | ||||
|  | ||||
| mod bundle; | ||||
| mod data; | ||||
|  | ||||
| #[cfg(windows)] | ||||
| const RUNTIME_DATA: &[u8] = include_bytes!("../../target/release/neutauri_runtime.exe"); | ||||
| #[cfg(not(windows))] | ||||
| const RUNTIME_DATA: &[u8] = include_bytes!("../../target/release/neutauri_runtime"); | ||||
|  | ||||
| #[cfg(not(windows))] | ||||
| fn options() -> fs::OpenOptions { | ||||
|     use std::os::unix::prelude::OpenOptionsExt; | ||||
|     let mut options = fs::OpenOptions::new(); | ||||
|     options.write(true); | ||||
|     options.create(true); | ||||
|     options.truncate(true); | ||||
|     options.mode(0o755); | ||||
|     options | ||||
| } | ||||
|  | ||||
| #[cfg(windows)] | ||||
| fn options() -> fs::OpenOptions { | ||||
|     let mut options = fs::OpenOptions::new(); | ||||
|     options.write(true); | ||||
|     options.create(true); | ||||
|     options.truncate(true); | ||||
|     options | ||||
| } | ||||
|  | ||||
| fn main() -> wry::Result<()> { | ||||
| fn main() -> std::io::Result<()> { | ||||
|     let arg = std::env::args() | ||||
|         .nth(1) | ||||
|         .unwrap_or_else(|| "neutauri.toml".into()); | ||||
|     if arg == "--help" || arg == "-h" { | ||||
|         println!("Usage: neutauri_bundler [neutauri.toml]"); | ||||
|         return Ok(()); | ||||
|     } | ||||
|     let config_path = std::path::Path::new(&arg).canonicalize()?; | ||||
|     let config: data::Config = toml::from_str(fs::read_to_string(&config_path)?.as_str()) | ||||
|         .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; | ||||
|     let source = match config_path.parent() { | ||||
|         Some(path) => path.join(&config.source).canonicalize()?, | ||||
|         None => config.source.canonicalize()?, | ||||
|     }; | ||||
|     let target = match config_path.parent() { | ||||
|         Some(path) => data::normalize_path(&path.join(&config.target)), | ||||
|         None => data::normalize_path(&config.target), | ||||
|     }; | ||||
|     let target = if target.extension() == None && cfg!(windows) { | ||||
|         target.with_extension("exe") | ||||
|     } else { | ||||
|         target | ||||
|     }; | ||||
|     if target.extension() == Some(std::ffi::OsStr::new("neu")) { | ||||
|         data::pack(arg)?; | ||||
|         return Ok(()); | ||||
|     } | ||||
|     let data = data::Data::build_from_dir(source, config.window_attr()?, config.webview_attr()?)?; | ||||
|     let mut f = options().open(&target)?; | ||||
|     f.write_all(RUNTIME_DATA)?; | ||||
|     f.write_all(&data)?; | ||||
|     f.sync_all()?; | ||||
|     f.flush()?; | ||||
|     bundle::bundle(arg)?; | ||||
|     Ok(()) | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user