diff --git a/cli/args/flags.rs b/cli/args/flags.rs index 6d261174999be7..aaf5f6fd14b882 100644 --- a/cli/args/flags.rs +++ b/cli/args/flags.rs @@ -2703,6 +2703,13 @@ fn repl_subcommand() -> Command { [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::("args") { + flags.argv.extend(args); + } + handle_repl_flags( flags, ReplFlags { @@ -10721,6 +10732,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"]);