diff --git a/Cargo.lock b/Cargo.lock index 3e8d893..ea91ccf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,39 +8,12 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cpufeatures" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" -dependencies = [ - "libc", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - [[package]] name = "dirs-next" version = "2.0.0" @@ -62,16 +35,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "generic-array" -version = "0.14.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "getrandom" version = "0.2.3" @@ -83,12 +46,6 @@ dependencies = [ "wasi", ] -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - [[package]] name = "lazy_static" version = "1.4.0" @@ -101,12 +58,6 @@ version = "0.2.98" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790" -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - [[package]] name = "redox_syscall" version = "0.2.9" @@ -131,7 +82,6 @@ name = "runrs" version = "0.1.0" dependencies = [ "rust_util", - "sha256", ] [[package]] @@ -152,29 +102,6 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088" -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer", - "cfg-if", - "cpufeatures", - "digest", - "opaque-debug", -] - -[[package]] -name = "sha256" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e84a7f596c081d359de5e06a83877138bc3c4483591e1af1916e1472e6e146e" -dependencies = [ - "hex", - "sha2", -] - [[package]] name = "term" version = "0.7.0" @@ -196,18 +123,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "typenum" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - [[package]] name = "wasi" version = "0.10.2+wasi-snapshot-preview1" diff --git a/Cargo.toml b/Cargo.toml index de3a0c2..f9c274e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,4 +10,3 @@ readme = "README.md" [dependencies] rust_util = "0.6.41" -sha256 = "1.0.3" diff --git a/external/rust-script/src/main.rs b/external/rust-script/src/main.rs index 355ae5d..97de59a 100644 --- a/external/rust-script/src/main.rs +++ b/external/rust-script/src/main.rs @@ -319,7 +319,7 @@ fn parse_args() -> Args { } fn is_env_on(env: &str, default: bool) -> bool { - std::env::var(env).map(|v| { + std::env::var("CARGO_OUTPUT").map(|v| { let v = v.to_lowercase(); v == "true" || v == "yes" || v == "1" }).unwrap_or_else(|_| default) diff --git a/src/main.rs b/src/main.rs index ea7ddc2..44df411 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,8 @@ #[macro_use] extern crate rust_util; -use std::path::PathBuf; use std::process::Command; +use std::path::PathBuf; fn main() { let home = std::env::var("HOME").unwrap_or_else(|_| @@ -10,54 +10,41 @@ fn main() { ); let rust_script = PathBuf::from(format!("{}/.cargo/bin/rust-script", home)); if !rust_script.exists() { - // warning!("rust-script not found, install it..."); - // let mut cargo_install_rust_script = Command::new("cargo"); - // cargo_install_rust_script.args(&["install", "rust-script"]); - // debugging!("Run command: {:?}", cargo_install_rust_script); - // let run_result = rust_util::util_cmd::run_command_and_wait(&mut cargo_install_rust_script); - // if let Err(e) = run_result { - // failure_and_exit!("Install rust-script failed: {}", e); - // } - failure_and_exit!("Need install rust-script tool, https://git.hatter.ink/hatter/runrs/src/branch/master/external/rust-script"); + warning!("rust-script not found, install it..."); + let mut cargo_install_rust_script = Command::new("cargo"); + cargo_install_rust_script.args(&["install", "rust-script"]); + debugging!("Run command: {:?}", cargo_install_rust_script); + let run_result = rust_util::util_cmd::run_command_and_wait(&mut cargo_install_rust_script); + if let Err(e) = run_result { + failure_and_exit!("Install rust-script failed: {}", e); + } } - let args = std::env::args().skip(1).collect::>(); + let mut copied_args = vec![]; + std::env::args().skip(1).for_each(|arg| { + copied_args.push(arg); + }); + debugging!("Arguments: {:?}", copied_args); - if args.is_empty() { - failure_and_exit!("runrs need arguments, e.g.\n\nrunrs [arguments]\n"); + if copied_args.is_empty() { + failure_and_exit!("Run `runrs --help` for help."); } - let script_file = match args.get(0) { - None => failure_and_exit!("Must assign file name"), - Some(f) => f, - }; - let script_content = match std::fs::read_to_string(script_file) { - Err(e) => failure_and_exit!("Read file: {}, failed: {}", script_file, e), - Ok(c) => c, - }; - let script_sha256 = sha256::digest(script_content); - debugging!("File {} -> sha256: {}", script_file, script_sha256); - - let cache_script_bin_name = format!("{}/Library/Caches/rust-script/binaries/release/{}", - home, - script_sha256); - - let cache_script_bin_name_exists = std::fs::metadata(&cache_script_bin_name).is_ok(); - debugging!("Bin name: {} {} exists", cache_script_bin_name, iff!(cache_script_bin_name_exists, "", "not")); - - let mut run_script_cmd = if cache_script_bin_name_exists { - Command::new(cache_script_bin_name) - } else { - let mut cmd = Command::new(rust_script); - cmd.args(&["--bin-name", &script_sha256, script_file]); - cmd - }; - for arg in args.iter().skip(1) { - run_script_cmd.arg(arg); + if let Some(arg1) = copied_args.get(0) { + match arg1.as_str() { + ":::" => { + // TODO + } + _ => {} // IGNORE + } } - debugging!("Run command: {:?}", run_script_cmd); - match rust_util::util_cmd::run_command_and_wait(&mut run_script_cmd) { - Err(e) => failure_and_exit!("Run rust-script failed: {}", e), - Ok(exit_status) => std::process::exit(exit_status.code().unwrap_or_else(|| 0)), + + let mut run_rs = Command::new(rust_script); + for arg in &copied_args { + run_rs.arg(arg); + } + debugging!("Run command: {:?}", run_rs); + if let Err(e) = rust_util::util_cmd::run_command_and_wait(&mut run_rs) { + failure_and_exit!("Run rust-script failed: {}", e); } }