feat: v0.1.1

This commit is contained in:
2022-08-06 02:05:15 +08:00
parent a971b223b8
commit 9c8d0acd25
4 changed files with 130 additions and 39 deletions

87
Cargo.lock generated
View File

@@ -8,12 +8,39 @@ version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" 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]] [[package]]
name = "cfg-if" name = "cfg-if"
version = "1.0.0" version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 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]] [[package]]
name = "dirs-next" name = "dirs-next"
version = "2.0.0" version = "2.0.0"
@@ -35,6 +62,16 @@ dependencies = [
"winapi", "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]] [[package]]
name = "getrandom" name = "getrandom"
version = "0.2.3" version = "0.2.3"
@@ -46,6 +83,12 @@ dependencies = [
"wasi", "wasi",
] ]
[[package]]
name = "hex"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]] [[package]]
name = "lazy_static" name = "lazy_static"
version = "1.4.0" version = "1.4.0"
@@ -58,6 +101,12 @@ version = "0.2.98"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790" checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790"
[[package]]
name = "opaque-debug"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]] [[package]]
name = "redox_syscall" name = "redox_syscall"
version = "0.2.9" version = "0.2.9"
@@ -79,9 +128,10 @@ dependencies = [
[[package]] [[package]]
name = "runrs" name = "runrs"
version = "0.1.0" version = "0.1.1"
dependencies = [ dependencies = [
"rust_util", "rust_util",
"sha256",
] ]
[[package]] [[package]]
@@ -102,6 +152,29 @@ version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088" 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]] [[package]]
name = "term" name = "term"
version = "0.7.0" version = "0.7.0"
@@ -123,6 +196,18 @@ dependencies = [
"winapi", "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]] [[package]]
name = "wasi" name = "wasi"
version = "0.10.2+wasi-snapshot-preview1" version = "0.10.2+wasi-snapshot-preview1"

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "runrs" name = "runrs"
version = "0.1.0" version = "0.1.1"
edition = "2018" edition = "2018"
license = "MIT/Apache-2.0" license = "MIT/Apache-2.0"
description = "Run Rust Scripts" description = "Run Rust Scripts"
@@ -10,3 +10,4 @@ readme = "README.md"
[dependencies] [dependencies]
rust_util = "0.6.41" rust_util = "0.6.41"
sha256 = "1.0.3"

View File

@@ -319,7 +319,7 @@ fn parse_args() -> Args {
} }
fn is_env_on(env: &str, default: bool) -> bool { fn is_env_on(env: &str, default: bool) -> bool {
std::env::var("CARGO_OUTPUT").map(|v| { std::env::var(env).map(|v| {
let v = v.to_lowercase(); let v = v.to_lowercase();
v == "true" || v == "yes" || v == "1" v == "true" || v == "yes" || v == "1"
}).unwrap_or_else(|_| default) }).unwrap_or_else(|_| default)

View File

@@ -1,50 +1,55 @@
#[macro_use] #[macro_use]
extern crate rust_util; extern crate rust_util;
use std::process::Command;
use std::path::PathBuf; use std::path::PathBuf;
use std::process::Command;
fn main() { fn main() {
let home = std::env::var("HOME").unwrap_or_else(|_| let home = std::env::var("HOME").unwrap_or_else(|_|
failure_and_exit!("$HOME not found!") failure_and_exit!("$HOME not found!")
); );
let rust_script = PathBuf::from(format!("{}/.cargo/bin/rust-script", home)); let rust_script = PathBuf::from(format!("{}/.cargo/bin/rust-script", home));
if !rust_script.exists() { if !rust_script.exists() {
warning!("rust-script not found, install it..."); // warning!("rust-script not found, install it...");
let mut cargo_install_rust_script = Command::new("cargo"); // let mut cargo_install_rust_script = Command::new("cargo");
cargo_install_rust_script.args(&["install", "rust-script"]); // cargo_install_rust_script.args(&["install", "rust-script"]);
debugging!("Run command: {:?}", cargo_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); // let run_result = rust_util::util_cmd::run_command_and_wait(&mut cargo_install_rust_script);
if let Err(e) = run_result { // if let Err(e) = run_result {
failure_and_exit!("Install rust-script failed: {}", e); // 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");
} }
let args = std::env::args().skip(1).collect::<Vec<_>>();
let mut copied_args = vec![]; if args.is_empty() {
std::env::args().skip(1).for_each(|arg| { failure_and_exit!("runrs need arguments, e.g.\n\nrunrs <scirpt.ers> [arguments]\n");
copied_args.push(arg);
});
debugging!("Arguments: {:?}", copied_args);
if copied_args.is_empty() {
failure_and_exit!("Run `runrs --help` for help.");
} }
let script_file = match args.get(0) {
if let Some(arg1) = copied_args.get(0) { None => failure_and_exit!("Must assign file name"),
match arg1.as_str() { Some(f) => f,
":::" => { };
// TODO let script_content = match std::fs::read_to_string(script_file) {
} Err(e) => failure_and_exit!("Read file: {}, failed: {}", script_file, e),
_ => {} // IGNORE 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);
} }
debugging!("Run command: {:?}", run_script_cmd);
let mut run_rs = Command::new(rust_script); match rust_util::util_cmd::run_command_and_wait(&mut run_script_cmd) {
for arg in &copied_args { Err(e) => failure_and_exit!("Run rust-script failed: {}", e),
run_rs.arg(arg); Ok(exit_status) => std::process::exit(exit_status.code().unwrap_or_else(|| 0)),
}
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);
} }
} }