summaryrefslogtreecommitdiff
path: root/cli/args
diff options
context:
space:
mode:
Diffstat (limited to 'cli/args')
-rw-r--r--cli/args/mod.rs68
1 files changed, 21 insertions, 47 deletions
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index 83f038ec0..a54003277 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -10,9 +10,11 @@ mod package_json;
use deno_ast::SourceMapOption;
use deno_config::workspace::CreateResolverOptions;
use deno_config::workspace::PackageJsonDepResolution;
+use deno_config::workspace::VendorEnablement;
use deno_config::workspace::Workspace;
use deno_config::workspace::WorkspaceDiscoverOptions;
use deno_config::workspace::WorkspaceDiscoverStart;
+use deno_config::workspace::WorkspaceEmptyOptions;
use deno_config::workspace::WorkspaceMemberContext;
use deno_config::workspace::WorkspaceResolver;
use deno_config::WorkspaceLintConfig;
@@ -778,7 +780,6 @@ pub struct CliOptions {
flags: Flags,
initial_cwd: PathBuf,
maybe_node_modules_folder: Option<PathBuf>,
- maybe_vendor_folder: Option<PathBuf>,
npmrc: Arc<ResolvedNpmRc>,
maybe_lockfile: Option<Arc<CliLockfile>>,
overrides: CliOptionOverrides,
@@ -822,15 +823,6 @@ impl CliOptions {
root_folder.pkg_json.as_deref(),
)
.with_context(|| "Resolving node_modules folder.")?;
- let maybe_vendor_folder = if force_global_cache {
- None
- } else {
- resolve_vendor_folder(
- &initial_cwd,
- &flags,
- root_folder.deno_json.as_deref(),
- )
- };
if let Some(env_file_name) = &flags.env_file {
match from_filename(env_file_name) {
@@ -859,7 +851,6 @@ impl CliOptions {
maybe_lockfile,
npmrc,
maybe_node_modules_folder,
- maybe_vendor_folder,
overrides: Default::default(),
workspace,
disable_deprecated_api_warning,
@@ -871,6 +862,10 @@ impl CliOptions {
let initial_cwd =
std::env::current_dir().with_context(|| "Failed getting cwd.")?;
let config_fs_adapter = DenoConfigFsAdapter::new(&RealFs);
+ let maybe_vendor_override = flags.vendor.map(|v| match v {
+ true => VendorEnablement::Enable { cwd: &initial_cwd },
+ false => VendorEnablement::Disable,
+ });
let resolve_workspace_discover_options = || {
let additional_config_file_names: &'static [&'static str] =
if matches!(flags.subcommand, DenoSubcommand::Publish(..)) {
@@ -899,8 +894,16 @@ impl CliOptions {
config_parse_options,
additional_config_file_names,
discover_pkg_json,
+ maybe_vendor_override,
}
};
+ let resolve_empty_options = || WorkspaceEmptyOptions {
+ root_dir: Arc::new(
+ ModuleSpecifier::from_directory_path(&initial_cwd).unwrap(),
+ ),
+ use_vendor_dir: maybe_vendor_override
+ .unwrap_or(VendorEnablement::Disable),
+ };
let workspace = match &flags.config_flag {
deno_config::ConfigFlag::Discover => {
@@ -910,9 +913,7 @@ impl CliOptions {
&resolve_workspace_discover_options(),
)?
} else {
- Workspace::empty(Arc::new(
- ModuleSpecifier::from_directory_path(&initial_cwd).unwrap(),
- ))
+ Workspace::empty(resolve_empty_options())
}
}
deno_config::ConfigFlag::Path(path) => {
@@ -922,9 +923,9 @@ impl CliOptions {
&resolve_workspace_discover_options(),
)?
}
- deno_config::ConfigFlag::Disabled => Workspace::empty(Arc::new(
- ModuleSpecifier::from_directory_path(&initial_cwd).unwrap(),
- )),
+ deno_config::ConfigFlag::Disabled => {
+ Workspace::empty(resolve_empty_options())
+ }
};
for diagnostic in workspace.diagnostics() {
@@ -1258,7 +1259,6 @@ impl CliOptions {
flags: self.flags.clone(),
initial_cwd: self.initial_cwd.clone(),
maybe_node_modules_folder: Some(path),
- maybe_vendor_folder: self.maybe_vendor_folder.clone(),
npmrc: self.npmrc.clone(),
maybe_lockfile: self.maybe_lockfile.clone(),
workspace: self.workspace.clone(),
@@ -1276,7 +1276,7 @@ impl CliOptions {
}
pub fn vendor_dir_path(&self) -> Option<&PathBuf> {
- self.maybe_vendor_folder.as_ref()
+ self.workspace.vendor_dir_path()
}
pub fn resolve_root_cert_store_provider(
@@ -1801,31 +1801,6 @@ fn resolve_node_modules_folder(
Ok(Some(canonicalize_path_maybe_not_exists(&path)?))
}
-fn resolve_vendor_folder(
- cwd: &Path,
- flags: &Flags,
- maybe_config_file: Option<&ConfigFile>,
-) -> Option<PathBuf> {
- let use_vendor_dir = flags
- .vendor
- .or_else(|| maybe_config_file.and_then(|c| c.json.vendor))
- .unwrap_or(false);
- // Unlike the node_modules directory, there is no need to canonicalize
- // this directory because it's just used as a cache and the resolved
- // specifier is not based on the canonicalized path (unlike the modules
- // in the node_modules folder).
- if !use_vendor_dir {
- None
- } else if let Some(config_path) = maybe_config_file
- .as_ref()
- .and_then(|c| c.specifier.to_file_path().ok())
- {
- Some(config_path.parent().unwrap().join("vendor"))
- } else {
- Some(cwd.join("vendor"))
- }
-}
-
fn resolve_import_map_specifier(
maybe_import_map_path: Option<&str>,
maybe_config_file: Option<&ConfigFile>,
@@ -1962,9 +1937,8 @@ pub fn config_to_deno_graph_workspace_member(
#[cfg(test)]
mod test {
- use crate::util::fs::FileCollector;
-
use super::*;
+ use deno_config::glob::FileCollector;
use pretty_assertions::assert_eq;
#[test]
@@ -2109,7 +2083,7 @@ mod test {
let mut files = FileCollector::new(|_| true)
.ignore_git_folder()
.ignore_node_modules()
- .collect_file_patterns(resolved_files)
+ .collect_file_patterns(&deno_config::fs::RealDenoConfigFs, resolved_files)
.unwrap();
files.sort();