summaryrefslogtreecommitdiff
path: root/cli/flags.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/flags.rs')
-rw-r--r--cli/flags.rs37
1 files changed, 30 insertions, 7 deletions
diff --git a/cli/flags.rs b/cli/flags.rs
index f2a3ffc36..4766fbe5f 100644
--- a/cli/flags.rs
+++ b/cli/flags.rs
@@ -1,4 +1,5 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
+use crate::fs::resolve_from_cwd;
use clap::App;
use clap::AppSettings;
use clap::Arg;
@@ -392,6 +393,20 @@ fn lock_args_parse(flags: &mut DenoFlags, matches: &clap::ArgMatches) {
}
}
+fn resolve_fs_whitelist(whitelist: &[String]) -> Vec<String> {
+ whitelist
+ .iter()
+ .map(|raw_path| {
+ resolve_from_cwd(&raw_path)
+ .unwrap()
+ .0
+ .to_str()
+ .unwrap()
+ .to_owned()
+ })
+ .collect::<Vec<_>>()
+}
+
// Shared between the run and test subcommands. They both take similar options.
fn run_test_args_parse(flags: &mut DenoFlags, matches: &clap::ArgMatches) {
reload_arg_parse(flags, matches);
@@ -406,7 +421,7 @@ fn run_test_args_parse(flags: &mut DenoFlags, matches: &clap::ArgMatches) {
let read_wl = matches.values_of("allow-read").unwrap();
let raw_read_whitelist: Vec<String> =
read_wl.map(std::string::ToString::to_string).collect();
- flags.read_whitelist = raw_read_whitelist;
+ flags.read_whitelist = resolve_fs_whitelist(&raw_read_whitelist);
debug!("read whitelist: {:#?}", &flags.read_whitelist);
} else {
flags.allow_read = true;
@@ -415,9 +430,10 @@ fn run_test_args_parse(flags: &mut DenoFlags, matches: &clap::ArgMatches) {
if matches.is_present("allow-write") {
if matches.value_of("allow-write").is_some() {
let write_wl = matches.values_of("allow-write").unwrap();
- let raw_write_whitelist =
+ let raw_write_whitelist: Vec<String> =
write_wl.map(std::string::ToString::to_string).collect();
- flags.write_whitelist = raw_write_whitelist;
+ flags.write_whitelist =
+ resolve_fs_whitelist(raw_write_whitelist.as_slice());
debug!("write whitelist: {:#?}", &flags.write_whitelist);
} else {
flags.allow_write = true;
@@ -1223,6 +1239,7 @@ fn arg_hacks(mut args: Vec<String>) -> Vec<String> {
#[cfg(test)]
mod tests {
use super::*;
+ use std::env::current_dir;
#[test]
fn arg_hacks_test() {
@@ -1561,14 +1578,17 @@ mod tests {
let r = flags_from_vec_safe(svec![
"deno",
"run",
- format!("--allow-read={}", &temp_dir_path),
+ format!("--allow-read=.,{}", &temp_dir_path),
"script.ts"
]);
assert_eq!(
r.unwrap(),
DenoFlags {
allow_read: false,
- read_whitelist: svec![&temp_dir_path],
+ read_whitelist: svec![
+ current_dir().unwrap().to_str().unwrap().to_owned(),
+ &temp_dir_path
+ ],
argv: svec!["deno", "script.ts"],
subcommand: DenoSubcommand::Run,
..DenoFlags::default()
@@ -1585,14 +1605,17 @@ mod tests {
let r = flags_from_vec_safe(svec![
"deno",
"run",
- format!("--allow-write={}", &temp_dir_path),
+ format!("--allow-write=.,{}", &temp_dir_path),
"script.ts"
]);
assert_eq!(
r.unwrap(),
DenoFlags {
allow_write: false,
- write_whitelist: svec![&temp_dir_path],
+ write_whitelist: svec![
+ current_dir().unwrap().to_str().unwrap().to_owned(),
+ &temp_dir_path
+ ],
argv: svec!["deno", "script.ts"],
subcommand: DenoSubcommand::Run,
..DenoFlags::default()