@@ -5,7 +5,7 @@ use std::path::PathBuf;
55use crate :: utils:: { run_lints, span_lint} ;
66use rustc_hir:: { hir_id:: CRATE_HIR_ID , Crate } ;
77use rustc_lint:: { LateContext , LateLintPass } ;
8- use rustc_session:: { declare_lint_pass , declare_tool_lint } ;
8+ use rustc_session:: { declare_tool_lint , impl_lint_pass } ;
99use rustc_span:: source_map:: DUMMY_SP ;
1010
1111declare_clippy_lint ! {
@@ -51,6 +51,21 @@ declare_clippy_lint! {
5151 "common metadata is defined in `Cargo.toml`"
5252}
5353
54+ #[ derive( Copy , Clone , Debug ) ]
55+ pub struct CargoCommonMetadata {
56+ ignore_publish : bool ,
57+ }
58+
59+ impl CargoCommonMetadata {
60+ pub fn new ( ignore_publish : bool ) -> Self {
61+ Self { ignore_publish }
62+ }
63+ }
64+
65+ impl_lint_pass ! ( CargoCommonMetadata => [
66+ CARGO_COMMON_METADATA
67+ ] ) ;
68+
5469fn missing_warning ( cx : & LateContext < ' _ > , package : & cargo_metadata:: Package , field : & str ) {
5570 let message = format ! ( "package `{}` is missing `{}` metadata" , package. name, field) ;
5671 span_lint ( cx, CARGO_COMMON_METADATA , DUMMY_SP , & message) ;
@@ -69,8 +84,6 @@ fn is_empty_vec(value: &[String]) -> bool {
6984 value. iter ( ) . all ( String :: is_empty)
7085}
7186
72- declare_lint_pass ! ( CargoCommonMetadata => [ CARGO_COMMON_METADATA ] ) ;
73-
7487impl LateLintPass < ' _ > for CargoCommonMetadata {
7588 fn check_crate ( & mut self , cx : & LateContext < ' _ > , _: & Crate < ' _ > ) {
7689 if !run_lints ( cx, & [ CARGO_COMMON_METADATA ] , CRATE_HIR_ID ) {
@@ -80,7 +93,7 @@ impl LateLintPass<'_> for CargoCommonMetadata {
8093 let metadata = unwrap_cargo_metadata ! ( cx, CARGO_COMMON_METADATA , false ) ;
8194
8295 for package in metadata. packages {
83- if package. publish . as_ref ( ) . filter ( |publish| publish. is_empty ( ) ) . is_none ( ) {
96+ if package. publish . as_ref ( ) . filter ( |publish| publish. is_empty ( ) ) . is_none ( ) || self . ignore_publish {
8497 if is_empty_vec ( & package. authors ) {
8598 missing_warning ( cx, & package, "package.authors" ) ;
8699 }
0 commit comments