diff options
Diffstat (limited to 'cli/args')
-rw-r--r-- | cli/args/lockfile.rs | 20 | ||||
-rw-r--r-- | cli/args/mod.rs | 37 |
2 files changed, 52 insertions, 5 deletions
diff --git a/cli/args/lockfile.rs b/cli/args/lockfile.rs index 8cb21781a..aa7e51fa1 100644 --- a/cli/args/lockfile.rs +++ b/cli/args/lockfile.rs @@ -107,8 +107,12 @@ pub async fn snapshot_from_lockfile( packages.push(SerializedNpmResolutionSnapshotPackage { pkg_id, - dist: Default::default(), // temporarily empty dependencies, + // temporarily empty + os: Default::default(), + cpu: Default::default(), + dist: Default::default(), + optional_dependencies: Default::default(), }); } (root_packages, packages) @@ -131,11 +135,17 @@ pub async fn snapshot_from_lockfile( })) }; let mut version_infos = get_version_infos(); - let mut i = 0; while let Some(result) = version_infos.next().await { - packages[i].dist = match result { - Ok(version_info) => version_info.dist, + match result { + Ok(version_info) => { + let mut package = &mut packages[i]; + package.dist = version_info.dist; + package.cpu = version_info.cpu; + package.os = version_info.os; + package.optional_dependencies = + version_info.optional_dependencies.into_keys().collect(); + } Err(err) => { if api.mark_force_reload() { // reset and try again @@ -146,7 +156,7 @@ pub async fn snapshot_from_lockfile( return Err(err); } } - }; + } i += 1; } diff --git a/cli/args/mod.rs b/cli/args/mod.rs index 31035fdd0..53dad9cae 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -13,6 +13,7 @@ use self::package_json::PackageJsonDeps; use ::import_map::ImportMap; use deno_core::resolve_url_or_path; use deno_npm::resolution::ValidSerializedNpmResolutionSnapshot; +use deno_npm::NpmSystemInfo; use deno_runtime::deno_tls::RootCertStoreProvider; use deno_semver::npm::NpmPackageReqReference; use indexmap::IndexMap; @@ -688,6 +689,42 @@ impl CliOptions { } } + pub fn npm_system_info(&self) -> NpmSystemInfo { + match self.sub_command() { + DenoSubcommand::Compile(CompileFlags { + target: Some(target), + .. + }) => { + // the values of NpmSystemInfo align with the possible values for the + // `arch` and `platform` fields of Node.js' `process` global: + // https://nodejs.org/api/process.html + match target.as_str() { + "aarch64-apple-darwin" => NpmSystemInfo { + os: "darwin".to_string(), + cpu: "arm64".to_string(), + }, + "x86_64-apple-darwin" => NpmSystemInfo { + os: "darwin".to_string(), + cpu: "x64".to_string(), + }, + "x86_64-unknown-linux-gnu" => NpmSystemInfo { + os: "linux".to_string(), + cpu: "x64".to_string(), + }, + "x86_64-pc-windows-msvc" => NpmSystemInfo { + os: "win32".to_string(), + cpu: "x64".to_string(), + }, + value => { + log::warn!("Not implemented NPM system info for target '{value}'. Using current system default. This may impact NPM "); + NpmSystemInfo::default() + } + } + } + _ => NpmSystemInfo::default(), + } + } + pub fn resolve_deno_dir(&self) -> Result<DenoDir, AnyError> { Ok(DenoDir::new(self.maybe_custom_root())?) } |