diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/flags.rs | 8 | ||||
-rw-r--r-- | cli/tools/installer.rs | 37 | ||||
-rw-r--r-- | cli/tools/standalone.rs | 1 |
3 files changed, 46 insertions, 0 deletions
diff --git a/cli/flags.rs b/cli/flags.rs index e5d3a6493..bdd97eea4 100644 --- a/cli/flags.rs +++ b/cli/flags.rs @@ -214,6 +214,7 @@ pub struct Flags { pub argv: Vec<String>, pub subcommand: DenoSubcommand, + pub allow_all: bool, pub allow_env: Option<Vec<String>>, pub allow_hrtime: bool, pub allow_net: Option<Vec<String>>, @@ -269,6 +270,11 @@ impl Flags { pub fn to_permission_args(&self) -> Vec<String> { let mut args = vec![]; + if self.allow_all { + args.push("--allow-all".to_string()); + return args; + } + match &self.allow_read { Some(read_allowlist) if read_allowlist.is_empty() => { args.push("--allow-read".to_string()); @@ -2252,6 +2258,7 @@ fn permission_args_parse(flags: &mut Flags, matches: &clap::ArgMatches) { flags.allow_hrtime = true; } if matches.is_present("allow-all") { + flags.allow_all = true; flags.allow_read = Some(vec![]); flags.allow_env = Some(vec![]); flags.allow_net = Some(vec![]); @@ -2647,6 +2654,7 @@ mod tests { subcommand: DenoSubcommand::Run(RunFlags { script: "gist.ts".to_string(), }), + allow_all: true, allow_net: Some(vec![]), allow_env: Some(vec![]), allow_run: Some(vec![]), diff --git a/cli/tools/installer.rs b/cli/tools/installer.rs index ac164a2f3..b65de2615 100644 --- a/cli/tools/installer.rs +++ b/cli/tools/installer.rs @@ -730,6 +730,43 @@ mod tests { } #[test] + fn install_allow_all() { + let temp_dir = TempDir::new().expect("tempdir fail"); + let bin_dir = temp_dir.path().join("bin"); + std::fs::create_dir(&bin_dir).unwrap(); + + install( + Flags { + allow_all: true, + ..Flags::default() + }, + InstallFlags { + module_url: "http://localhost:4545/echo_server.ts".to_string(), + args: vec![], + name: Some("echo_test".to_string()), + root: Some(temp_dir.path().to_path_buf()), + force: false, + }, + ) + .unwrap(); + + let mut file_path = bin_dir.join("echo_test"); + if cfg!(windows) { + file_path = file_path.with_extension("cmd"); + } + + let content = fs::read_to_string(file_path).unwrap(); + if cfg!(windows) { + assert!(content.contains( + r#""run" "--allow-all" "http://localhost:4545/echo_server.ts""# + )); + } else { + assert!(content + .contains(r#"run --allow-all 'http://localhost:4545/echo_server.ts'"#)); + } + } + + #[test] fn install_local_module() { let temp_dir = TempDir::new().expect("tempdir fail"); let bin_dir = temp_dir.path().join("bin"); diff --git a/cli/tools/standalone.rs b/cli/tools/standalone.rs index f6b89caa2..a29b405ba 100644 --- a/cli/tools/standalone.rs +++ b/cli/tools/standalone.rs @@ -204,6 +204,7 @@ pub fn compile_to_runtime_flags( subcommand: DenoSubcommand::Run(RunFlags { script: "placeholder".to_string(), }), + allow_all: flags.allow_all, allow_env: flags.allow_env, allow_hrtime: flags.allow_hrtime, allow_net: flags.allow_net, |