summaryrefslogtreecommitdiff
path: root/cli/tools
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tools')
-rw-r--r--cli/tools/bench.rs87
-rw-r--r--cli/tools/coverage/mod.rs3
-rw-r--r--cli/tools/doc.rs4
-rw-r--r--cli/tools/fmt.rs15
-rw-r--r--cli/tools/lint.rs32
-rw-r--r--cli/tools/standalone.rs1
-rw-r--r--cli/tools/task.rs112
-rw-r--r--cli/tools/test.rs76
-rw-r--r--cli/tools/vendor/mod.rs21
9 files changed, 94 insertions, 257 deletions
diff --git a/cli/tools/bench.rs b/cli/tools/bench.rs
index 3a40a4e97..d2cf4f00b 100644
--- a/cli/tools/bench.rs
+++ b/cli/tools/bench.rs
@@ -7,7 +7,6 @@ use crate::cache;
use crate::colors;
use crate::compat;
use crate::create_main_worker;
-use crate::emit;
use crate::file_watcher;
use crate::file_watcher::ResolutionResult;
use crate::fs_util::collect_specifiers;
@@ -40,7 +39,6 @@ use serde::Deserialize;
use serde::Serialize;
use std::collections::HashSet;
use std::path::PathBuf;
-use std::sync::Arc;
use tokio::sync::mpsc::unbounded_channel;
use tokio::sync::mpsc::UnboundedSender;
@@ -337,8 +335,8 @@ async fn check_specifiers(
ps: &ProcState,
permissions: Permissions,
specifiers: Vec<ModuleSpecifier>,
- lib: emit::TypeLib,
) -> Result<(), AnyError> {
+ let lib = ps.config.ts_type_lib_window();
ps.prepare_module_load(
specifiers,
false,
@@ -365,7 +363,11 @@ async fn bench_specifier(
&ps,
specifier.clone(),
permissions,
- vec![ops::bench::init(channel.clone(), filter, ps.flags.unstable)],
+ vec![ops::bench::init(
+ channel.clone(),
+ filter,
+ ps.config.unstable(),
+ )],
Default::default(),
);
@@ -422,7 +424,7 @@ async fn bench_specifiers(
specifiers: Vec<ModuleSpecifier>,
options: BenchSpecifierOptions,
) -> Result<(), AnyError> {
- let log_level = ps.flags.log_level;
+ let log_level = ps.config.log_level();
let (sender, mut receiver) = unbounded_channel::<BenchEvent>();
@@ -524,8 +526,8 @@ pub async fn run_benchmarks(
flags: Flags,
bench_flags: BenchFlags,
) -> Result<(), AnyError> {
- let ps = ProcState::build(Arc::new(flags)).await?;
- let permissions = Permissions::from_options(&ps.flags.permissions_options());
+ let ps = ProcState::build(flags).await?;
+ let permissions = Permissions::from_options(&ps.config.permissions_options());
let specifiers = collect_specifiers(
bench_flags.include.unwrap_or_else(|| vec![".".to_string()]),
&bench_flags.ignore.clone(),
@@ -536,15 +538,9 @@ pub async fn run_benchmarks(
return Err(generic_error("No bench modules found"));
}
- let lib = if ps.flags.unstable {
- emit::TypeLib::UnstableDenoWindow
- } else {
- emit::TypeLib::DenoWindow
- };
-
- check_specifiers(&ps, permissions.clone(), specifiers.clone(), lib).await?;
+ check_specifiers(&ps, permissions.clone(), specifiers.clone()).await?;
- let compat = ps.flags.compat;
+ let compat = ps.config.compat();
bench_specifiers(
ps,
permissions,
@@ -564,20 +560,13 @@ pub async fn run_benchmarks_with_watch(
flags: Flags,
bench_flags: BenchFlags,
) -> Result<(), AnyError> {
- let flags = Arc::new(flags);
- let ps = ProcState::build(flags.clone()).await?;
- let permissions = Permissions::from_options(&flags.permissions_options());
-
- let lib = if flags.unstable {
- emit::TypeLib::UnstableDenoWindow
- } else {
- emit::TypeLib::DenoWindow
- };
+ let ps = ProcState::build(flags).await?;
+ let permissions = Permissions::from_options(&ps.config.permissions_options());
let include = bench_flags.include.unwrap_or_else(|| vec![".".to_string()]);
let ignore = bench_flags.ignore.clone();
let paths_to_watch: Vec<_> = include.iter().map(PathBuf::from).collect();
- let no_check = ps.flags.type_check_mode == TypeCheckMode::None;
+ let no_check = ps.config.type_check_mode() == TypeCheckMode::None;
let resolver = |changed: Option<Vec<PathBuf>>| {
let mut cache = cache::FetchCacher::new(
@@ -592,23 +581,16 @@ pub async fn run_benchmarks_with_watch(
let maybe_import_map_resolver =
ps.maybe_import_map.clone().map(ImportMapResolver::new);
- let maybe_jsx_resolver = ps.maybe_config_file.as_ref().and_then(|cf| {
- cf.to_maybe_jsx_import_source_module()
- .map(|im| JsxResolver::new(im, maybe_import_map_resolver.clone()))
- });
+ let maybe_jsx_resolver = ps
+ .config
+ .to_maybe_jsx_import_source_module()
+ .map(|im| JsxResolver::new(im, maybe_import_map_resolver.clone()));
let maybe_locker = lockfile::as_maybe_locker(ps.lockfile.clone());
- let maybe_imports = ps
- .maybe_config_file
- .as_ref()
- .map(|cf| cf.to_maybe_imports());
+ let maybe_imports_result = ps.config.to_maybe_imports();
let files_changed = changed.is_some();
let include = include.clone();
let ignore = ignore.clone();
- let check_js = ps
- .maybe_config_file
- .as_ref()
- .map(|cf| cf.get_check_js())
- .unwrap_or(false);
+ let check_js = ps.config.check_js();
async move {
let bench_modules =
@@ -623,11 +605,7 @@ pub async fn run_benchmarks_with_watch(
.map(|url| (url.clone(), ModuleKind::Esm))
.collect()
};
- let maybe_imports = if let Some(result) = maybe_imports {
- result?
- } else {
- None
- };
+ let maybe_imports = maybe_imports_result?;
let maybe_resolver = if maybe_jsx_resolver.is_some() {
maybe_jsx_resolver.as_ref().map(|jr| jr.as_resolver())
} else {
@@ -739,11 +717,9 @@ pub async fn run_benchmarks_with_watch(
};
let operation = |modules_to_reload: Vec<(ModuleSpecifier, ModuleKind)>| {
- let flags = flags.clone();
let filter = bench_flags.filter.clone();
let include = include.clone();
let ignore = ignore.clone();
- let lib = lib.clone();
let permissions = permissions.clone();
let ps = ps.clone();
@@ -755,19 +731,14 @@ pub async fn run_benchmarks_with_watch(
.cloned()
.collect::<Vec<ModuleSpecifier>>();
- check_specifiers(&ps, permissions.clone(), specifiers.clone(), lib)
- .await?;
+ check_specifiers(&ps, permissions.clone(), specifiers.clone()).await?;
- bench_specifiers(
- ps,
- permissions.clone(),
- specifiers,
- BenchSpecifierOptions {
- compat_mode: flags.compat,
- filter: filter.clone(),
- },
- )
- .await?;
+ let specifier_options = BenchSpecifierOptions {
+ compat_mode: ps.config.compat(),
+ filter: filter.clone(),
+ };
+ bench_specifiers(ps, permissions.clone(), specifiers, specifier_options)
+ .await?;
Ok(())
}
@@ -778,7 +749,7 @@ pub async fn run_benchmarks_with_watch(
operation,
file_watcher::PrintConfig {
job_name: "Bench".to_string(),
- clear_screen: !flags.no_clear_screen,
+ clear_screen: !ps.config.no_clear_screen(),
},
)
.await?;
diff --git a/cli/tools/coverage/mod.rs b/cli/tools/coverage/mod.rs
index efaf19922..0b1a9bc35 100644
--- a/cli/tools/coverage/mod.rs
+++ b/cli/tools/coverage/mod.rs
@@ -23,7 +23,6 @@ use std::fs::File;
use std::io::BufWriter;
use std::io::{self, Error, Write};
use std::path::PathBuf;
-use std::sync::Arc;
use text_lines::TextLines;
use uuid::Uuid;
@@ -597,7 +596,7 @@ pub async fn cover_files(
flags: Flags,
coverage_flags: CoverageFlags,
) -> Result<(), AnyError> {
- let ps = ProcState::build(Arc::new(flags)).await?;
+ let ps = ProcState::build(flags).await?;
let script_coverages =
collect_coverages(coverage_flags.files, coverage_flags.ignore)?;
diff --git a/cli/tools/doc.rs b/cli/tools/doc.rs
index 684c3040e..068a98389 100644
--- a/cli/tools/doc.rs
+++ b/cli/tools/doc.rs
@@ -96,7 +96,7 @@ pub async fn print_docs(
flags: Flags,
doc_flags: DocFlags,
) -> Result<(), AnyError> {
- let ps = ProcState::build(Arc::new(flags)).await?;
+ let ps = ProcState::build(flags).await?;
let source_file = doc_flags
.source_file
.unwrap_or_else(|| "--builtin".to_string());
@@ -122,7 +122,7 @@ pub async fn print_docs(
doc_parser.parse_source(
&source_file_specifier,
MediaType::Dts,
- get_types(ps.flags.unstable).into(),
+ get_types(ps.config.unstable()).into(),
)
} else {
let module_specifier = resolve_url_or_path(&source_file)?;
diff --git a/cli/tools/fmt.rs b/cli/tools/fmt.rs
index b2aa47373..267b21d88 100644
--- a/cli/tools/fmt.rs
+++ b/cli/tools/fmt.rs
@@ -7,13 +7,11 @@
//! the future it can be easily extended to provide
//! the same functions as ops available in JS runtime.
-use crate::args::Flags;
-use crate::args::FmtConfig;
use crate::args::FmtFlags;
use crate::args::FmtOptionsConfig;
use crate::args::ProseWrap;
+use crate::args::RootConfig;
use crate::colors;
-use crate::deno_dir::DenoDir;
use crate::diff::diff;
use crate::file_watcher;
use crate::file_watcher::ResolutionResult;
@@ -45,11 +43,11 @@ use super::incremental_cache::IncrementalCache;
/// Format JavaScript/TypeScript files.
pub async fn format(
- flags: &Flags,
+ config: &RootConfig,
fmt_flags: FmtFlags,
- maybe_fmt_config: Option<FmtConfig>,
- deno_dir: &DenoDir,
) -> Result<(), AnyError> {
+ let maybe_fmt_config = config.to_fmt_config()?;
+ let deno_dir = config.resolve_deno_dir()?;
let FmtFlags {
files,
ignore,
@@ -138,6 +136,7 @@ pub async fn format(
}
}
};
+ let deno_dir = &deno_dir;
let operation = |(paths, fmt_options): (Vec<PathBuf>, FmtOptionsConfig)| async move {
let incremental_cache = Arc::new(IncrementalCache::new(
&deno_dir.fmt_incremental_cache_db_file_path(),
@@ -154,13 +153,13 @@ pub async fn format(
Ok(())
};
- if flags.watch.is_some() {
+ if config.watch_paths().is_some() {
file_watcher::watch_func(
resolver,
operation,
file_watcher::PrintConfig {
job_name: "Fmt".to_string(),
- clear_screen: !flags.no_clear_screen,
+ clear_screen: !config.no_clear_screen(),
},
)
.await?;
diff --git a/cli/tools/lint.rs b/cli/tools/lint.rs
index 60cda9f90..4e8f8fb0c 100644
--- a/cli/tools/lint.rs
+++ b/cli/tools/lint.rs
@@ -6,14 +6,18 @@
//! At the moment it is only consumed using CLI but in
//! the future it can be easily extended to provide
//! the same functions as ops available in JS runtime.
+use crate::args::Flags;
use crate::args::LintConfig;
-use crate::args::{Flags, LintFlags};
+use crate::args::LintFlags;
+use crate::colors;
+use crate::file_watcher;
use crate::file_watcher::ResolutionResult;
use crate::fmt_errors;
-use crate::fs_util::{collect_files, is_supported_ext, specifier_to_file_path};
+use crate::fs_util::collect_files;
+use crate::fs_util::is_supported_ext;
+use crate::fs_util::specifier_to_file_path;
use crate::proc_state::ProcState;
use crate::tools::fmt::run_parallelized;
-use crate::{colors, file_watcher};
use deno_ast::MediaType;
use deno_core::anyhow::anyhow;
use deno_core::error::generic_error;
@@ -29,10 +33,13 @@ use log::debug;
use log::info;
use serde::Serialize;
use std::fs;
-use std::io::{stdin, Read};
+use std::io::stdin;
+use std::io::Read;
use std::path::PathBuf;
-use std::sync::atomic::{AtomicBool, Ordering};
-use std::sync::{Arc, Mutex};
+use std::sync::atomic::AtomicBool;
+use std::sync::atomic::Ordering;
+use std::sync::Arc;
+use std::sync::Mutex;
use super::incremental_cache::IncrementalCache;
@@ -52,7 +59,6 @@ fn create_reporter(kind: LintReporterKind) -> Box<dyn LintReporter + Send> {
}
pub async fn lint(flags: Flags, lint_flags: LintFlags) -> Result<(), AnyError> {
- let flags = Arc::new(flags);
let LintFlags {
maybe_rules_tags,
maybe_rules_include,
@@ -69,12 +75,8 @@ pub async fn lint(flags: Flags, lint_flags: LintFlags) -> Result<(), AnyError> {
let mut include_files = args.clone();
let mut exclude_files = ignore.clone();
- let ps = ProcState::build(flags.clone()).await?;
- let maybe_lint_config = if let Some(config_file) = &ps.maybe_config_file {
- config_file.to_lint_config()?
- } else {
- None
- };
+ let ps = ProcState::build(flags).await?;
+ let maybe_lint_config = ps.config.to_lint_config()?;
if let Some(lint_config) = maybe_lint_config.as_ref() {
if include_files.is_empty() {
@@ -200,7 +202,7 @@ pub async fn lint(flags: Flags, lint_flags: LintFlags) -> Result<(), AnyError> {
Ok(())
};
- if flags.watch.is_some() {
+ if ps.config.watch_paths().is_some() {
if args.len() == 1 && args[0].to_string_lossy() == "-" {
return Err(generic_error(
"Lint watch on standard input is not supported.",
@@ -211,7 +213,7 @@ pub async fn lint(flags: Flags, lint_flags: LintFlags) -> Result<(), AnyError> {
operation,
file_watcher::PrintConfig {
job_name: "Lint".to_string(),
- clear_screen: !flags.no_clear_screen,
+ clear_screen: !ps.config.no_clear_screen(),
},
)
.await?;
diff --git a/cli/tools/standalone.rs b/cli/tools/standalone.rs
index 2561188ca..99f2ce33d 100644
--- a/cli/tools/standalone.rs
+++ b/cli/tools/standalone.rs
@@ -282,7 +282,6 @@ pub fn compile_to_runtime_flags(
no_remote: false,
no_prompt: flags.no_prompt,
reload: false,
- repl: false,
seed: flags.seed,
unstable: flags.unstable,
v8_flags: flags.v8_flags.clone(),
diff --git a/cli/tools/task.rs b/cli/tools/task.rs
index 1b6846e7c..fa9f30d7d 100644
--- a/cli/tools/task.rs
+++ b/cli/tools/task.rs
@@ -1,6 +1,5 @@
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
-use crate::args::ConfigFile;
use crate::args::Flags;
use crate::args::TaskFlags;
use crate::colors;
@@ -12,34 +11,6 @@ use deno_core::error::AnyError;
use std::collections::BTreeMap;
use std::collections::HashMap;
use std::path::PathBuf;
-use std::sync::Arc;
-
-fn get_tasks_config(
- maybe_config_file: Option<&ConfigFile>,
-) -> Result<BTreeMap<String, String>, AnyError> {
- if let Some(config_file) = maybe_config_file {
- let maybe_tasks_config = config_file.to_tasks_config()?;
- if let Some(tasks_config) = maybe_tasks_config {
- for key in tasks_config.keys() {
- if key.is_empty() {
- bail!("Configuration file task names cannot be empty");
- } else if !key
- .chars()
- .all(|c| c.is_ascii_alphanumeric() || matches!(c, '_' | '-' | ':'))
- {
- bail!("Configuration file task names must only contain alpha-numeric characters, colons (:), underscores (_), or dashes (-). Task: {}", key);
- } else if !key.chars().next().unwrap().is_ascii_alphabetic() {
- bail!("Configuration file task names must start with an alphabetic character. Task: {}", key);
- }
- }
- Ok(tasks_config)
- } else {
- bail!("No tasks found in configuration file")
- }
- } else {
- bail!("No config file found")
- }
-}
fn print_available_tasks(tasks_config: BTreeMap<String, String>) {
eprintln!("{}", colors::green("Available tasks:"));
@@ -58,10 +29,9 @@ pub async fn execute_script(
"{} deno task is unstable and may drastically change in the future",
crate::colors::yellow("Warning"),
);
- let flags = Arc::new(flags);
- let ps = ProcState::build(flags.clone()).await?;
- let tasks_config = get_tasks_config(ps.maybe_config_file.as_ref())?;
- let config_file_url = &ps.maybe_config_file.as_ref().unwrap().specifier;
+ let ps = ProcState::build(flags).await?;
+ let tasks_config = ps.config.resolve_tasks_config()?;
+ let config_file_url = ps.config.maybe_config_file_specifier().unwrap();
let config_file_path = if config_file_url.scheme() == "file" {
config_file_url.to_file_path().unwrap()
} else {
@@ -81,8 +51,9 @@ pub async fn execute_script(
let maybe_script = tasks_config.get(&task_name);
if let Some(script) = maybe_script {
- let additional_args = flags
- .argv
+ let additional_args = ps
+ .config
+ .argv()
.iter()
// surround all the additional arguments in double quotes
// and santize any command substition
@@ -108,74 +79,3 @@ pub async fn execute_script(
Ok(1)
}
}
-
-#[cfg(test)]
-mod test {
- use deno_ast::ModuleSpecifier;
- use pretty_assertions::assert_eq;
-
- use super::*;
-
- #[test]
- fn tasks_no_tasks() {
- run_task_error_test(r#"{}"#, "No tasks found in configuration file");
- }
-
- #[test]
- fn task_name_invalid_chars() {
- run_task_error_test(
- r#"{
- "tasks": {
- "build": "deno test",
- "some%test": "deno bundle mod.ts"
- }
- }"#,
- concat!(
- "Configuration file task names must only contain alpha-numeric ",
- "characters, colons (:), underscores (_), or dashes (-). Task: some%test",
- ),
- );
- }
-
- #[test]
- fn task_name_non_alpha_starting_char() {
- run_task_error_test(
- r#"{
- "tasks": {
- "build": "deno test",
- "1test": "deno bundle mod.ts"
- }
- }"#,
- concat!(
- "Configuration file task names must start with an ",
- "alphabetic character. Task: 1test",
- ),
- );
- }
-
- #[test]
- fn task_name_empty() {
- run_task_error_test(
- r#"{
- "tasks": {
- "build": "deno test",
- "": "deno bundle mod.ts"
- }
- }"#,
- "Configuration file task names cannot be empty",
- );
- }
-
- fn run_task_error_test(config_text: &str, expected_error: &str) {
- let config_dir = ModuleSpecifier::parse("file:///deno/").unwrap();
- let config_specifier = config_dir.join("tsconfig.json").unwrap();
- let config_file = ConfigFile::new(config_text, &config_specifier).unwrap();
- assert_eq!(
- get_tasks_config(Some(&config_file))
- .err()
- .unwrap()
- .to_string(),
- expected_error,
- );
- }
-}
diff --git a/cli/tools/test.rs b/cli/tools/test.rs
index 71374d94e..3b3f8dc4b 100644
--- a/cli/tools/test.rs
+++ b/cli/tools/test.rs
@@ -8,7 +8,6 @@ use crate::colors;
use crate::compat;
use crate::create_main_worker;
use crate::display;
-use crate::emit;
use crate::file_fetcher::File;
use crate::file_watcher;
use crate::file_watcher::ResolutionResult;
@@ -1020,8 +1019,8 @@ pub async fn check_specifiers(
ps: &ProcState,
permissions: Permissions,
specifiers: Vec<(ModuleSpecifier, TestMode)>,
- lib: emit::TypeLib,
) -> Result<(), AnyError> {
+ let lib = ps.config.ts_type_lib_window();
let inline_files = fetch_inline_files(
ps.clone(),
specifiers
@@ -1050,7 +1049,7 @@ pub async fn check_specifiers(
ps.prepare_module_load(
specifiers,
false,
- lib.clone(),
+ lib,
Permissions::allow_all(),
permissions.clone(),
false,
@@ -1089,7 +1088,7 @@ async fn test_specifiers(
specifiers_with_mode: Vec<(ModuleSpecifier, TestMode)>,
options: TestSpecifierOptions,
) -> Result<(), AnyError> {
- let log_level = ps.flags.log_level;
+ let log_level = ps.config.log_level();
let specifiers_with_mode = if let Some(seed) = options.shuffle {
let mut rng = SmallRng::seed_from_u64(seed);
let mut specifiers_with_mode = specifiers_with_mode.clone();
@@ -1333,8 +1332,8 @@ pub async fn run_tests(
flags: Flags,
test_flags: TestFlags,
) -> Result<(), AnyError> {
- let ps = ProcState::build(Arc::new(flags)).await?;
- let permissions = Permissions::from_options(&ps.flags.permissions_options());
+ let ps = ProcState::build(flags).await?;
+ let permissions = Permissions::from_options(&ps.config.permissions_options());
let specifiers_with_mode = fetch_specifiers_with_test_mode(
&ps,
test_flags.include.unwrap_or_else(|| vec![".".to_string()]),
@@ -1347,20 +1346,14 @@ pub async fn run_tests(
return Err(generic_error("No test modules found"));
}
- let lib = if ps.flags.unstable {
- emit::TypeLib::UnstableDenoWindow
- } else {
- emit::TypeLib::DenoWindow
- };
-
- check_specifiers(&ps, permissions.clone(), specifiers_with_mode.clone(), lib)
+ check_specifiers(&ps, permissions.clone(), specifiers_with_mode.clone())
.await?;
if test_flags.no_run {
return Ok(());
}
- let compat = ps.flags.compat;
+ let compat = ps.config.compat();
test_specifiers(
ps,
permissions,
@@ -1383,20 +1376,13 @@ pub async fn run_tests_with_watch(
flags: Flags,
test_flags: TestFlags,
) -> Result<(), AnyError> {
- let flags = Arc::new(flags);
- let ps = ProcState::build(flags.clone()).await?;
- let permissions = Permissions::from_options(&flags.permissions_options());
-
- let lib = if flags.unstable {
- emit::TypeLib::UnstableDenoWindow
- } else {
- emit::TypeLib::DenoWindow
- };
+ let ps = ProcState::build(flags).await?;
+ let permissions = Permissions::from_options(&ps.config.permissions_options());
let include = test_flags.include.unwrap_or_else(|| vec![".".to_string()]);
let ignore = test_flags.ignore.clone();
let paths_to_watch: Vec<_> = include.iter().map(PathBuf::from).collect();
- let no_check = ps.flags.type_check_mode == TypeCheckMode::None;
+ let no_check = ps.config.type_check_mode() == TypeCheckMode::None;
let resolver = |changed: Option<Vec<PathBuf>>| {
let mut cache = cache::FetchCacher::new(
@@ -1411,23 +1397,16 @@ pub async fn run_tests_with_watch(
let maybe_import_map_resolver =
ps.maybe_import_map.clone().map(ImportMapResolver::new);
- let maybe_jsx_resolver = ps.maybe_config_file.as_ref().and_then(|cf| {
- cf.to_maybe_jsx_import_source_module()
- .map(|im| JsxResolver::new(im, maybe_import_map_resolver.clone()))
- });
+ let maybe_jsx_resolver = ps
+ .config
+ .to_maybe_jsx_import_source_module()
+ .map(|im| JsxResolver::new(im, maybe_import_map_resolver.clone()));
let maybe_locker = lockfile::as_maybe_locker(ps.lockfile.clone());
- let maybe_imports = ps
- .maybe_config_file
- .as_ref()
- .map(|cf| cf.to_maybe_imports());
+ let maybe_imports_result = ps.config.to_maybe_imports();
let files_changed = changed.is_some();
let include = include.clone();
let ignore = ignore.clone();
- let check_js = ps
- .maybe_config_file
- .as_ref()
- .map(|cf| cf.get_check_js())
- .unwrap_or(false);
+ let check_js = ps.config.check_js();
async move {
let test_modules = if test_flags.doc {
@@ -1445,11 +1424,7 @@ pub async fn run_tests_with_watch(
.map(|url| (url.clone(), ModuleKind::Esm))
.collect()
};
- let maybe_imports = if let Some(result) = maybe_imports {
- result?
- } else {
- None
- };
+ let maybe_imports = maybe_imports_result?;
let maybe_resolver = if maybe_jsx_resolver.is_some() {
maybe_jsx_resolver.as_ref().map(|jr| jr.as_resolver())
} else {
@@ -1560,12 +1535,12 @@ pub async fn run_tests_with_watch(
})
};
+ let root_config = ps.config.clone();
let operation = |modules_to_reload: Vec<(ModuleSpecifier, ModuleKind)>| {
- let flags = flags.clone();
+ let root_config = root_config.clone();
let filter = test_flags.filter.clone();
let include = include.clone();
let ignore = ignore.clone();
- let lib = lib.clone();
let permissions = permissions.clone();
let ps = ps.clone();
@@ -1584,13 +1559,8 @@ pub async fn run_tests_with_watch(
.cloned()
.collect::<Vec<(ModuleSpecifier, TestMode)>>();
- check_specifiers(
- &ps,
- permissions.clone(),
- specifiers_with_mode.clone(),
- lib,
- )
- .await?;
+ check_specifiers(&ps, permissions.clone(), specifiers_with_mode.clone())
+ .await?;
if test_flags.no_run {
return Ok(());
@@ -1601,7 +1571,7 @@ pub async fn run_tests_with_watch(
permissions.clone(),
specifiers_with_mode,
TestSpecifierOptions {
- compat_mode: flags.compat,
+ compat_mode: root_config.compat(),
concurrent_jobs: test_flags.concurrent_jobs,
fail_fast: test_flags.fail_fast,
filter: filter.clone(),
@@ -1620,7 +1590,7 @@ pub async fn run_tests_with_watch(
operation,
file_watcher::PrintConfig {
job_name: "Test".to_string(),
- clear_screen: !flags.no_clear_screen,
+ clear_screen: !root_config.no_clear_screen(),
},
)
.await?;
diff --git a/cli/tools/vendor/mod.rs b/cli/tools/vendor/mod.rs
index 15b149e2e..fc7684b5b 100644
--- a/cli/tools/vendor/mod.rs
+++ b/cli/tools/vendor/mod.rs
@@ -134,16 +134,17 @@ fn validate_output_dir(
fn maybe_update_config_file(output_dir: &Path, ps: &ProcState) -> bool {
assert!(output_dir.is_absolute());
- let config_file = match &ps.maybe_config_file {
+ let config_file_specifier = match ps.config.maybe_config_file_specifier() {
Some(f) => f,
None => return false,
};
- let fmt_config = config_file
+ let fmt_config = ps
+ .config
.to_fmt_config()
.unwrap_or_default()
.unwrap_or_default();
let result = update_config_file(
- &config_file.specifier,
+ &config_file_specifier,
&ModuleSpecifier::from_file_path(output_dir.join("import_map.json"))
.unwrap(),
&fmt_config.options,
@@ -262,17 +263,13 @@ async fn create_graph(
Permissions::allow_all(),
);
let maybe_locker = lockfile::as_maybe_locker(ps.lockfile.clone());
- let maybe_imports = if let Some(config_file) = &ps.maybe_config_file {
- config_file.to_maybe_imports()?
- } else {
- None
- };
+ let maybe_imports = ps.config.to_maybe_imports()?;
let maybe_import_map_resolver =
ps.maybe_import_map.clone().map(ImportMapResolver::new);
- let maybe_jsx_resolver = ps.maybe_config_file.as_ref().and_then(|cf| {
- cf.to_maybe_jsx_import_source_module()
- .map(|im| JsxResolver::new(im, maybe_import_map_resolver.clone()))
- });
+ let maybe_jsx_resolver = ps
+ .config
+ .to_maybe_jsx_import_source_module()
+ .map(|im| JsxResolver::new(im, maybe_import_map_resolver.clone()));
let maybe_resolver = if maybe_jsx_resolver.is_some() {
maybe_jsx_resolver.as_ref().map(|jr| jr.as_resolver())
} else {