Skip to content

Commit

Permalink
Auto merge of #4518 - imp:4517_license-file, r=phansch
Browse files Browse the repository at this point in the history
clippy::cargo_common_metadata: check for license-file

When license property is missing in Cargo.toml check for license-file
as it may be used instead of the former. The check implemented here is
very naive as it only verifies that the field is present and is not
empty. More scrutiny can be applied by verifying the file is actually
present.

Fixes #4517

changelog: clippy::cargo_common_metadata now checks for license-file when license is missing
  • Loading branch information
bors committed Sep 22, 2019
2 parents dbb1bde + 4c881d1 commit 157edad
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions clippy_lints/src/cargo_common_metadata.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
//! lint on missing cargo common metadata
use std::path::PathBuf;

use crate::utils::span_lint;
use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass};
use rustc::{declare_lint_pass, declare_tool_lint};
Expand Down Expand Up @@ -47,6 +49,10 @@ fn is_empty_str(value: &Option<String>) -> bool {
value.as_ref().map_or(true, String::is_empty)
}

fn is_empty_path(value: &Option<PathBuf>) -> bool {
value.as_ref().and_then(|x| x.to_str()).map_or(true, str::is_empty)
}

fn is_empty_vec(value: &[String]) -> bool {
// This works because empty iterators return true
value.iter().all(std::string::String::is_empty)
Expand All @@ -72,8 +78,8 @@ impl EarlyLintPass for CargoCommonMetadata {
missing_warning(cx, &package, "package.description");
}

if is_empty_str(&package.license) {
missing_warning(cx, &package, "package.license");
if is_empty_str(&package.license) && is_empty_path(&package.license_file) {
missing_warning(cx, &package, "either package.license or package.license_file");
}

if is_empty_str(&package.repository) {
Expand Down

0 comments on commit 157edad

Please sign in to comment.