summaryrefslogtreecommitdiff
path: root/cli/tools/vendor/mod.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2022-06-29 20:41:48 -0400
committerGitHub <noreply@github.com>2022-06-29 20:41:48 -0400
commite46584a75a5a94cede193945dfd59eed8417aea0 (patch)
treeed32a276974ccb4e238b3b78c7261df2dff23bc1 /cli/tools/vendor/mod.rs
parentd5ef14eca65c78f4463a6082b392c3a8b097f7a1 (diff)
fix(vendor): ignore import map in output directory instead of erroring (#14998)
Diffstat (limited to 'cli/tools/vendor/mod.rs')
-rw-r--r--cli/tools/vendor/mod.rs43
1 files changed, 30 insertions, 13 deletions
diff --git a/cli/tools/vendor/mod.rs b/cli/tools/vendor/mod.rs
index 7c36b5074..48f6ea7f1 100644
--- a/cli/tools/vendor/mod.rs
+++ b/cli/tools/vendor/mod.rs
@@ -2,6 +2,7 @@
use std::path::Path;
use std::path::PathBuf;
+use std::sync::Arc;
use deno_ast::ModuleSpecifier;
use deno_core::anyhow::bail;
@@ -11,6 +12,8 @@ use deno_core::resolve_url_or_path;
use deno_runtime::permissions::Permissions;
use log::warn;
+use crate::args::CliOptions;
+use crate::args::Flags;
use crate::args::FmtOptionsConfig;
use crate::args::VendorFlags;
use crate::fs_util;
@@ -30,14 +33,20 @@ mod specifiers;
#[cfg(test)]
mod test;
-pub async fn vendor(ps: ProcState, flags: VendorFlags) -> Result<(), AnyError> {
- let raw_output_dir = match &flags.output_path {
+pub async fn vendor(
+ flags: Flags,
+ vendor_flags: VendorFlags,
+) -> Result<(), AnyError> {
+ let mut cli_options = CliOptions::from_flags(flags)?;
+ let raw_output_dir = match &vendor_flags.output_path {
Some(output_path) => output_path.to_owned(),
None => PathBuf::from("vendor/"),
};
let output_dir = fs_util::resolve_from_cwd(&raw_output_dir)?;
- validate_output_dir(&output_dir, &flags, &ps)?;
- let graph = create_graph(&ps, &flags).await?;
+ validate_output_dir(&output_dir, &vendor_flags)?;
+ validate_options(&mut cli_options, &output_dir)?;
+ let ps = ProcState::from_options(Arc::new(cli_options)).await?;
+ let graph = create_graph(&ps, &vendor_flags).await?;
let vendored_count = build::build(
graph,
&output_dir,
@@ -86,7 +95,6 @@ pub async fn vendor(ps: ProcState, flags: VendorFlags) -> Result<(), AnyError> {
fn validate_output_dir(
output_dir: &Path,
flags: &VendorFlags,
- ps: &ProcState,
) -> Result<(), AnyError> {
if !flags.force && !is_dir_empty(output_dir)? {
bail!(concat!(
@@ -94,12 +102,17 @@ fn validate_output_dir(
"--force to ignore this error and potentially overwrite its contents.",
));
}
+ Ok(())
+}
+fn validate_options(
+ options: &mut CliOptions,
+ output_dir: &Path,
+) -> Result<(), AnyError> {
// check the import map
- if let Some(import_map_path) = ps
- .maybe_import_map
- .as_ref()
- .and_then(|m| specifier_to_file_path(m.base_url()).ok())
+ if let Some(import_map_path) = options
+ .resolve_import_map_specifier()?
+ .and_then(|p| specifier_to_file_path(&p).ok())
.and_then(|p| fs_util::canonicalize_path(&p).ok())
{
// make the output directory in order to canonicalize it for the check below
@@ -114,11 +127,12 @@ fn validate_output_dir(
let cwd = fs_util::canonicalize_path(&std::env::current_dir()?)?;
// We don't allow using the output directory to help generate the
// new state because this may lead to cryptic error messages.
- bail!(
+ log::warn!(
concat!(
- "Specifying an import map file ({}) in the deno vendor output ",
- "directory is not supported. Please specify no import map or one ",
- "located outside this directory."
+ "Ignoring import map. Specifying an import map file ({}) in the ",
+ "deno vendor output directory is not supported. If you wish to use ",
+ "an import map while vendoring, please specify one located outside ",
+ "this directory."
),
import_map_path
.strip_prefix(&cwd)
@@ -126,6 +140,9 @@ fn validate_output_dir(
.display()
.to_string(),
);
+
+ // don't use an import map in the config
+ options.set_import_map_specifier(None);
}
}