Add support for workspace inheritance

master
printfn 2 years ago
parent bbc539e972
commit bf74de1560
  1. 17
      Cargo.lock
  2. 93
      src/manifest/mod.rs

17
Cargo.lock generated

@ -331,9 +331,9 @@ dependencies = [
[[package]] [[package]]
name = "console" name = "console"
version = "0.15.4" version = "0.15.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9b6515d269224923b26b5febea2ed42b2d5f2ce37284a4dd670fedd6cb8347a" checksum = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60"
dependencies = [ dependencies = [
"encode_unicode", "encode_unicode",
"lazy_static 1.4.0", "lazy_static 1.4.0",
@ -490,11 +490,12 @@ dependencies = [
[[package]] [[package]]
name = "dialoguer" name = "dialoguer"
version = "0.10.2" version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a92e7e37ecef6857fdc0c0c5d42fd5b0938e46590c2183cc92dd310a6d078eb1" checksum = "af3c796f3b0b408d9fd581611b47fa850821fcb84aa640b83a3c1a5be2d691f2"
dependencies = [ dependencies = [
"console 0.15.4", "console 0.15.5",
"shell-words",
"tempfile", "tempfile",
"zeroize", "zeroize",
] ]
@ -1666,6 +1667,12 @@ dependencies = [
"digest", "digest",
] ]
[[package]]
name = "shell-words"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
[[package]] [[package]]
name = "siphasher" name = "siphasher"
version = "0.3.10" version = "0.3.10"

@ -50,12 +50,6 @@ pub struct CargoManifest {
#[derive(Deserialize)] #[derive(Deserialize)]
struct CargoPackage { struct CargoPackage {
name: String, name: String,
description: Option<String>,
license: Option<String>,
#[serde(rename = "license-file")]
license_file: Option<String>,
repository: Option<String>,
homepage: Option<String>,
#[serde(default)] #[serde(default)]
metadata: CargoMetadata, metadata: CargoMetadata,
@ -522,9 +516,13 @@ impl CrateData {
) )
} }
fn pkg(&self) -> &cargo_metadata::Package {
&self.data.packages[self.current_idx]
}
/// Get the crate name for the crate at the given path. /// Get the crate name for the crate at the given path.
pub fn crate_name(&self) -> String { pub fn crate_name(&self) -> String {
let pkg = &self.data.packages[self.current_idx]; let pkg = self.pkg();
match pkg match pkg
.targets .targets
.iter() .iter()
@ -545,12 +543,15 @@ impl CrateData {
/// Get the license for the crate at the given path. /// Get the license for the crate at the given path.
pub fn crate_license(&self) -> &Option<String> { pub fn crate_license(&self) -> &Option<String> {
&self.manifest.package.license &self.pkg().license
} }
/// Get the license file path for the crate at the given path. /// Get the license file path for the crate at the given path.
pub fn crate_license_file(&self) -> &Option<String> { pub fn crate_license_file(&self) -> Option<String> {
&self.manifest.package.license_file self.pkg()
.license_file
.clone()
.map(|license_file| license_file.into_string())
} }
/// Returns the path to this project's target directory where artifacts are /// Returns the path to this project's target directory where artifacts are
@ -654,14 +655,14 @@ impl CrateData {
dts_file, dts_file,
files, files,
main: js_file, main: js_file,
homepage: self.manifest.package.homepage.clone(), homepage: self.pkg().homepage.clone(),
keywords, keywords,
} }
} }
fn license(&self) -> Option<String> { fn license(&self) -> Option<String> {
self.manifest.package.license.clone().or_else(|| { self.crate_license().clone().or_else(|| {
self.manifest.package.license_file.clone().map(|file| { self.crate_license_file().clone().map(|file| {
// When license is written in file: https://docs.npmjs.com/files/package.json#license // When license is written in file: https://docs.npmjs.com/files/package.json#license
format!("SEE LICENSE IN {}", file) format!("SEE LICENSE IN {}", file)
}) })
@ -683,18 +684,13 @@ impl CrateData {
NpmPackage::CommonJSPackage(CommonJSPackage { NpmPackage::CommonJSPackage(CommonJSPackage {
name: data.name, name: data.name,
collaborators: pkg.authors.clone(), collaborators: pkg.authors.clone(),
description: self.manifest.package.description.clone(), description: self.pkg().description.clone(),
version: pkg.version.to_string(), version: pkg.version.to_string(),
license: self.license(), license: self.license(),
repository: self repository: self.pkg().repository.clone().map(|repo_url| Repository {
.manifest ty: "git".to_string(),
.package url: repo_url,
.repository }),
.clone()
.map(|repo_url| Repository {
ty: "git".to_string(),
url: repo_url,
}),
files: data.files, files: data.files,
main: data.main, main: data.main,
homepage: data.homepage, homepage: data.homepage,
@ -719,18 +715,13 @@ impl CrateData {
NpmPackage::ESModulesPackage(ESModulesPackage { NpmPackage::ESModulesPackage(ESModulesPackage {
name: data.name, name: data.name,
collaborators: pkg.authors.clone(), collaborators: pkg.authors.clone(),
description: self.manifest.package.description.clone(), description: self.pkg().description.clone(),
version: pkg.version.to_string(), version: pkg.version.to_string(),
license: self.license(), license: self.license(),
repository: self repository: self.pkg().repository.clone().map(|repo_url| Repository {
.manifest ty: "git".to_string(),
.package url: repo_url,
.repository }),
.clone()
.map(|repo_url| Repository {
ty: "git".to_string(),
url: repo_url,
}),
files: data.files, files: data.files,
module: data.main, module: data.main,
homepage: data.homepage, homepage: data.homepage,
@ -756,18 +747,13 @@ impl CrateData {
NpmPackage::ESModulesPackage(ESModulesPackage { NpmPackage::ESModulesPackage(ESModulesPackage {
name: data.name, name: data.name,
collaborators: pkg.authors.clone(), collaborators: pkg.authors.clone(),
description: self.manifest.package.description.clone(), description: self.pkg().description.clone(),
version: pkg.version.to_string(), version: pkg.version.to_string(),
license: self.license(), license: self.license(),
repository: self repository: self.pkg().repository.clone().map(|repo_url| Repository {
.manifest ty: "git".to_string(),
.package url: repo_url,
.repository }),
.clone()
.map(|repo_url| Repository {
ty: "git".to_string(),
url: repo_url,
}),
files: data.files, files: data.files,
module: data.main, module: data.main,
homepage: data.homepage, homepage: data.homepage,
@ -793,18 +779,13 @@ impl CrateData {
NpmPackage::NoModulesPackage(NoModulesPackage { NpmPackage::NoModulesPackage(NoModulesPackage {
name: data.name, name: data.name,
collaborators: pkg.authors.clone(), collaborators: pkg.authors.clone(),
description: self.manifest.package.description.clone(), description: self.pkg().description.clone(),
version: pkg.version.to_string(), version: pkg.version.to_string(),
license: self.license(), license: self.license(),
repository: self repository: self.pkg().repository.clone().map(|repo_url| Repository {
.manifest ty: "git".to_string(),
.package url: repo_url,
.repository }),
.clone()
.map(|repo_url| Repository {
ty: "git".to_string(),
url: repo_url,
}),
files: data.files, files: data.files,
browser: data.main, browser: data.main,
homepage: data.homepage, homepage: data.homepage,
@ -816,13 +797,13 @@ impl CrateData {
fn check_optional_fields(&self) { fn check_optional_fields(&self) {
let mut messages = vec![]; let mut messages = vec![];
if self.manifest.package.description.is_none() { if self.pkg().description.is_none() {
messages.push("description"); messages.push("description");
} }
if self.manifest.package.repository.is_none() { if self.pkg().repository.is_none() {
messages.push("repository"); messages.push("repository");
} }
if self.manifest.package.license.is_none() && self.manifest.package.license_file.is_none() { if self.pkg().license.is_none() && self.pkg().license_file.is_none() {
messages.push("license"); messages.push("license");
} }

Loading…
Cancel
Save