@@ -2,7 +2,25 @@ use std::{fs, path::Path};
2
2
3
3
use anyhow:: Context ;
4
4
use clap:: Args ;
5
-
5
+ /// check every workspace dependencies has default-features=false
6
+ fn check_setting_default_features_false (
7
+ workspace_deps : & toml:: map:: Map < String , toml:: Value > ,
8
+ ) -> Vec < String > {
9
+ let mut errors = Vec :: new ( ) ;
10
+ // Check each dependency for default-features=false
11
+ for ( dep_name, dep_value) in workspace_deps {
12
+ if let Some ( table) = dep_value. as_table ( ) {
13
+ if !table. contains_key ( "default-features" )
14
+ || table. get ( "default-features" ) != Some ( & toml:: Value :: Boolean ( false ) )
15
+ {
16
+ errors. push ( format ! (
17
+ "Dependency '{dep_name}' does not have default-features=false" ,
18
+ ) ) ;
19
+ }
20
+ }
21
+ }
22
+ errors
23
+ }
6
24
/// enforce every workspace member to use workspace=true for their dependencies
7
25
fn enforce_workspace_version ( ) -> anyhow:: Result < ( ) > {
8
26
let workspace_root = find_workspace_root ( ) ?;
@@ -11,22 +29,22 @@ fn enforce_workspace_version() -> anyhow::Result<()> {
11
29
// Read and parse the workspace Cargo.toml
12
30
let workspace_content = fs:: read_to_string ( & workspace_manifest_path) ?;
13
31
let workspace_toml: toml:: Value = toml:: from_str ( & workspace_content) ?;
14
-
32
+ let mut errors = Vec :: new ( ) ;
15
33
// Get workspace dependencies
16
34
let workspace_deps = workspace_toml
17
35
. get ( "workspace" )
18
36
. and_then ( |w| w. get ( "dependencies" ) )
19
37
. and_then ( |d| d. as_table ( ) )
20
38
. with_context ( || "No workspace dependencies found" ) ?;
21
-
39
+ let default_features_errors = check_setting_default_features_false ( workspace_deps) ;
40
+ errors. extend ( default_features_errors) ;
22
41
// Get workspace members
23
42
let workspace_members = workspace_toml
24
43
. get ( "workspace" )
25
44
. and_then ( |w| w. get ( "members" ) )
26
45
. and_then ( |m| m. as_array ( ) )
27
46
. with_context ( || "No workspace members found" ) ?;
28
47
29
- let mut errors = Vec :: new ( ) ;
30
48
let mut checked_crates = 0 ;
31
49
let mut total_dependencies = 0 ;
32
50
0 commit comments