summaryrefslogtreecommitdiff
path: root/cli/args/package_json.rs
diff options
context:
space:
mode:
authorhaturau <135221985+haturatu@users.noreply.github.com>2024-11-20 01:20:47 +0900
committerGitHub <noreply@github.com>2024-11-20 01:20:47 +0900
commit85719a67e59c7aa45bead26e4942d7df8b1b42d4 (patch)
treeface0aecaac53e93ce2f23b53c48859bcf1a36ec /cli/args/package_json.rs
parent67697bc2e4a62a9670699fd18ad0dd8efc5bd955 (diff)
parent186b52731c6bb326c4d32905c5e732d082e83465 (diff)
Merge branch 'denoland:main' into main
Diffstat (limited to 'cli/args/package_json.rs')
-rw-r--r--cli/args/package_json.rs25
1 files changed, 22 insertions, 3 deletions
diff --git a/cli/args/package_json.rs b/cli/args/package_json.rs
index 2ef39a30d..7dc75550c 100644
--- a/cli/args/package_json.rs
+++ b/cli/args/package_json.rs
@@ -5,10 +5,12 @@ use std::sync::Arc;
use deno_config::workspace::Workspace;
use deno_core::serde_json;
+use deno_core::url::Url;
use deno_package_json::PackageJsonDepValue;
use deno_package_json::PackageJsonDepValueParseError;
use deno_semver::npm::NpmPackageReqReference;
use deno_semver::package::PackageReq;
+use thiserror::Error;
#[derive(Debug)]
pub struct InstallNpmRemotePkg {
@@ -23,11 +25,20 @@ pub struct InstallNpmWorkspacePkg {
pub target_dir: PathBuf,
}
+#[derive(Debug, Error, Clone)]
+#[error("Failed to install '{}'\n at {}", alias, location)]
+pub struct PackageJsonDepValueParseWithLocationError {
+ pub location: Url,
+ pub alias: String,
+ #[source]
+ pub source: PackageJsonDepValueParseError,
+}
+
#[derive(Debug, Default)]
pub struct NpmInstallDepsProvider {
remote_pkgs: Vec<InstallNpmRemotePkg>,
workspace_pkgs: Vec<InstallNpmWorkspacePkg>,
- pkg_json_dep_errors: Vec<PackageJsonDepValueParseError>,
+ pkg_json_dep_errors: Vec<PackageJsonDepValueParseWithLocationError>,
}
impl NpmInstallDepsProvider {
@@ -89,7 +100,13 @@ impl NpmInstallDepsProvider {
let dep = match dep {
Ok(dep) => dep,
Err(err) => {
- pkg_json_dep_errors.push(err);
+ pkg_json_dep_errors.push(
+ PackageJsonDepValueParseWithLocationError {
+ location: pkg_json.specifier(),
+ alias,
+ source: err,
+ },
+ );
continue;
}
};
@@ -150,7 +167,9 @@ impl NpmInstallDepsProvider {
&self.workspace_pkgs
}
- pub fn pkg_json_dep_errors(&self) -> &[PackageJsonDepValueParseError] {
+ pub fn pkg_json_dep_errors(
+ &self,
+ ) -> &[PackageJsonDepValueParseWithLocationError] {
&self.pkg_json_dep_errors
}
}