@@ -5,7 +5,7 @@ use std::path::PathBuf;
5
5
use crate :: utils:: { run_lints, span_lint} ;
6
6
use rustc_hir:: { hir_id:: CRATE_HIR_ID , Crate } ;
7
7
use rustc_lint:: { LateContext , LateLintPass } ;
8
- use rustc_session:: { declare_lint_pass , declare_tool_lint } ;
8
+ use rustc_session:: { declare_tool_lint , impl_lint_pass } ;
9
9
use rustc_span:: source_map:: DUMMY_SP ;
10
10
11
11
declare_clippy_lint ! {
@@ -51,6 +51,21 @@ declare_clippy_lint! {
51
51
"common metadata is defined in `Cargo.toml`"
52
52
}
53
53
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
+
54
69
fn missing_warning ( cx : & LateContext < ' _ > , package : & cargo_metadata:: Package , field : & str ) {
55
70
let message = format ! ( "package `{}` is missing `{}` metadata" , package. name, field) ;
56
71
span_lint ( cx, CARGO_COMMON_METADATA , DUMMY_SP , & message) ;
@@ -69,8 +84,6 @@ fn is_empty_vec(value: &[String]) -> bool {
69
84
value. iter ( ) . all ( String :: is_empty)
70
85
}
71
86
72
- declare_lint_pass ! ( CargoCommonMetadata => [ CARGO_COMMON_METADATA ] ) ;
73
-
74
87
impl LateLintPass < ' _ > for CargoCommonMetadata {
75
88
fn check_crate ( & mut self , cx : & LateContext < ' _ > , _: & Crate < ' _ > ) {
76
89
if !run_lints ( cx, & [ CARGO_COMMON_METADATA ] , CRATE_HIR_ID ) {
@@ -80,7 +93,7 @@ impl LateLintPass<'_> for CargoCommonMetadata {
80
93
let metadata = unwrap_cargo_metadata ! ( cx, CARGO_COMMON_METADATA , false ) ;
81
94
82
95
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 {
84
97
if is_empty_vec ( & package. authors ) {
85
98
missing_warning ( cx, & package, "package.authors" ) ;
86
99
}
0 commit comments