feat: runrs v1.1.5, support runts deno or bun runtime
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -1221,7 +1221,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "runrs"
|
||||
version = "1.1.4"
|
||||
version = "1.1.5"
|
||||
dependencies = [
|
||||
"argh",
|
||||
"reqwest",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "runrs"
|
||||
version = "1.1.4"
|
||||
version = "1.1.5"
|
||||
edition = "2018"
|
||||
license = "MIT/Apache-2.0"
|
||||
description = "A Tool for Run Rust Scripts"
|
||||
|
||||
@@ -4,13 +4,21 @@ use rust_util::util_env::is_env_on;
|
||||
use std::fs;
|
||||
use std::process::Command;
|
||||
|
||||
const RUNTIME_DENO: &str = "--runtime-deno";
|
||||
const RUNTIME_BUN: &str = "--runtime-bun";
|
||||
|
||||
pub fn do_run_script(args: &RunScriptArgs) {
|
||||
if args.arguments.is_empty() {
|
||||
failure_and_exit!("Must assign a script file name");
|
||||
}
|
||||
debugging!("Run ts args: {:?}", args.arguments);
|
||||
|
||||
let mut is_runtime_deno = true;
|
||||
let (script_file, first_arg) = (|| {
|
||||
for (i, arg) in args.arguments.iter().enumerate() {
|
||||
if arg == RUNTIME_DENO || arg == RUNTIME_BUN {
|
||||
is_runtime_deno = arg == RUNTIME_DENO;
|
||||
}
|
||||
if !arg.starts_with("--") {
|
||||
return (arg, i == 0);
|
||||
}
|
||||
@@ -20,17 +28,33 @@ pub fn do_run_script(args: &RunScriptArgs) {
|
||||
verify::verify_script(script_file, is_env_on("RUNTS_SKIP_VERIFY"));
|
||||
|
||||
let mut cmd = Command::new("/usr/bin/env");
|
||||
cmd.args(["-S", "deno", "run"]);
|
||||
// #!/usr/bin/env runts -- --allow-env
|
||||
// #!/usr/bin/env runts -- [--runtime-deno | --runtime-bun] <args>
|
||||
if first_arg {
|
||||
let first_line_args = read_first_line_parse_args(script_file);
|
||||
debugging!("Runts first line args: {:?}", first_line_args);
|
||||
let left_first_line_args = first_line_args
|
||||
.iter()
|
||||
.skip_while(|arg| *arg != "--" && *arg != "run")
|
||||
.skip(1)
|
||||
.filter(|arg| {
|
||||
if *arg == RUNTIME_DENO || *arg == RUNTIME_BUN {
|
||||
is_runtime_deno = *arg == RUNTIME_DENO;
|
||||
debugging!("Runts runtime arg: {}, is runtime deno: {}", *arg, is_runtime_deno);
|
||||
return false;
|
||||
}
|
||||
true
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
cmd.args(["-S", iff!(is_runtime_deno, "deno", "bun"), "run"]);
|
||||
cmd.args(left_first_line_args);
|
||||
} else {
|
||||
cmd.args(["-S", iff!(is_runtime_deno, "deno", "bun"), "run"]);
|
||||
}
|
||||
for arg in &args.arguments {
|
||||
if arg == RUNTIME_DENO || arg == RUNTIME_BUN {
|
||||
continue;
|
||||
}
|
||||
cmd.arg(arg);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user