summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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"]);