summaryrefslogtreecommitdiff
path: root/cli/args/flags.rs
diff options
context:
space:
mode:
authorLeo Kettmeir <crowlkats@toaxl.com>2024-09-13 05:17:46 -0700
committerGitHub <noreply@github.com>2024-09-13 05:17:46 -0700
commitf2b53d42acf96044e56b21808cfc3f33a9501ec3 (patch)
tree5faa4cf4b1b0ea9abd6a6ea88915b5fe4bcfac79 /cli/args/flags.rs
parent394a620da35f481be5d623568650dd60c96c5331 (diff)
feat(flags): support user provided args in repl subcommand (#25605)
closes https://github.com/denoland/deno/issues/11547
Diffstat (limited to 'cli/args/flags.rs')
-rw-r--r--cli/args/flags.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index ffc89332b..f7502b706 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -2703,6 +2703,13 @@ fn repl_subcommand() -> Command {
<p(245)>[default: $DENO_DIR/deno_history.txt]</>"))
)
.arg(env_file_arg())
+ .arg(
+ Arg::new("args")
+ .num_args(0..)
+ .action(ArgAction::Append)
+ .value_name("ARGS")
+ .last(true)
+ )
}
fn run_args(command: Command, top_level: bool) -> Command {
@@ -4711,6 +4718,10 @@ fn repl_parse(
})
.transpose()?;
+ if let Some(args) = matches.remove_many::<String>("args") {
+ flags.argv.extend(args);
+ }
+
handle_repl_flags(
flags,
ReplFlags {
@@ -10722,6 +10733,25 @@ mod tests {
}
#[test]
+ fn repl_user_args() {
+ let r = flags_from_vec(svec!["deno", "repl", "foo"]);
+ assert!(r.is_err());
+ let r = flags_from_vec(svec!["deno", "repl", "--", "foo"]);
+ assert_eq!(
+ r.unwrap(),
+ Flags {
+ subcommand: DenoSubcommand::Repl(ReplFlags {
+ eval_files: None,
+ eval: None,
+ is_default_command: false,
+ }),
+ argv: svec!["foo"],
+ ..Flags::default()
+ }
+ );
+ }
+
+ #[test]
fn bare_with_flag_no_file() {
let r = flags_from_vec(svec!["deno", "--no-config"]);