feat: v0.1.1
This commit is contained in:
87
Cargo.lock
generated
87
Cargo.lock
generated
@@ -8,12 +8,39 @@ 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"
|
||||
@@ -35,6 +62,16 @@ 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"
|
||||
@@ -46,6 +83,12 @@ 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"
|
||||
@@ -58,6 +101,12 @@ 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"
|
||||
@@ -79,9 +128,10 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "runrs"
|
||||
version = "0.1.0"
|
||||
version = "0.1.1"
|
||||
dependencies = [
|
||||
"rust_util",
|
||||
"sha256",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -102,6 +152,29 @@ 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"
|
||||
@@ -123,6 +196,18 @@ 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"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "runrs"
|
||||
version = "0.1.0"
|
||||
version = "0.1.1"
|
||||
edition = "2018"
|
||||
license = "MIT/Apache-2.0"
|
||||
description = "Run Rust Scripts"
|
||||
@@ -10,3 +10,4 @@ readme = "README.md"
|
||||
|
||||
[dependencies]
|
||||
rust_util = "0.6.41"
|
||||
sha256 = "1.0.3"
|
||||
|
||||
2
external/rust-script/src/main.rs
vendored
2
external/rust-script/src/main.rs
vendored
@@ -319,7 +319,7 @@ fn parse_args() -> Args {
|
||||
}
|
||||
|
||||
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();
|
||||
v == "true" || v == "yes" || v == "1"
|
||||
}).unwrap_or_else(|_| default)
|
||||
|
||||
83
src/main.rs
83
src/main.rs
@@ -1,50 +1,55 @@
|
||||
#[macro_use]
|
||||
extern crate rust_util;
|
||||
|
||||
use std::process::Command;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use std::process::Command;
|
||||
fn main() {
|
||||
let home = std::env::var("HOME").unwrap_or_else(|_|
|
||||
failure_and_exit!("$HOME not found!")
|
||||
);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
let mut copied_args = vec![];
|
||||
std::env::args().skip(1).for_each(|arg| {
|
||||
copied_args.push(arg);
|
||||
});
|
||||
debugging!("Arguments: {:?}", copied_args);
|
||||
|
||||
if copied_args.is_empty() {
|
||||
failure_and_exit!("Run `runrs --help` for help.");
|
||||
}
|
||||
|
||||
if let Some(arg1) = copied_args.get(0) {
|
||||
match arg1.as_str() {
|
||||
":::" => {
|
||||
// TODO
|
||||
}
|
||||
_ => {} // IGNORE
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
// 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");
|
||||
}
|
||||
let args = std::env::args().skip(1).collect::<Vec<_>>();
|
||||
if args.is_empty() {
|
||||
failure_and_exit!("runrs need arguments, e.g.\n\nrunrs <scirpt.ers> [arguments]\n");
|
||||
}
|
||||
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);
|
||||
}
|
||||
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)),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user