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

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

Loading…
Cancel
Save