From fee93bc9651ed6b9d266d928144b97049ec5c599 Mon Sep 17 00:00:00 2001 From: rhysd Date: Sun, 27 Jan 2019 03:15:36 +0900 Subject: [PATCH] use license-file field for license field of package.json when no license field in Cargo.toml In 'license' field of package.json, it's ok to say 'license is written in some file' as follows: ``` { "license" : "SEE LICENSE IN " } ``` This notation is useful when 'license' field is missing in `Cargo.toml` but `license-file` field is provided. Ref: https://docs.npmjs.com/files/package.json#license --- src/manifest/mod.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/manifest/mod.rs b/src/manifest/mod.rs index 92f03cd..4bc7f7c 100644 --- a/src/manifest/mod.rs +++ b/src/manifest/mod.rs @@ -40,6 +40,7 @@ struct CargoPackage { name: String, description: Option, license: Option, + license_file: Option, repository: Option, #[serde(default)] @@ -425,6 +426,15 @@ impl CrateData { } } + fn license(&self) -> Option { + self.manifest.package.license.clone().or_else(|| { + self.manifest.package.license_file.clone().map(|file| { + // When license is written in file: https://docs.npmjs.com/files/package.json#license + format!("SEE LICENSE IN {}", file) + }) + }) + } + fn to_commonjs(&self, scope: &Option, disable_dts: bool) -> NpmPackage { let data = self.npm_data(scope, true, disable_dts); let pkg = &self.data.packages[self.current_idx]; @@ -436,7 +446,7 @@ impl CrateData { collaborators: pkg.authors.clone(), description: self.manifest.package.description.clone(), version: pkg.version.clone(), - license: self.manifest.package.license.clone(), + license: self.license(), repository: self .manifest .package @@ -463,7 +473,7 @@ impl CrateData { collaborators: pkg.authors.clone(), description: self.manifest.package.description.clone(), version: pkg.version.clone(), - license: self.manifest.package.license.clone(), + license: self.license(), repository: self .manifest .package @@ -491,7 +501,7 @@ impl CrateData { collaborators: pkg.authors.clone(), description: self.manifest.package.description.clone(), version: pkg.version.clone(), - license: self.manifest.package.license.clone(), + license: self.license(), repository: self .manifest .package