@@ -22,8 +22,8 @@ pub struct Cli {
22
22
verbose : bool ,
23
23
#[ arg( long, env, default_value = "./publish-list.toml" ) ]
24
24
publish_list_path : String ,
25
- #[ arg( long, env, default_value = "../../crates " ) ]
26
- crates_dir : String ,
25
+ #[ arg( long, env, default_value = "../../" ) ]
26
+ root_cargo_dir : String ,
27
27
#[ arg( long, env, default_value = "./crates_io" ) ]
28
28
crates_io_dir : String ,
29
29
}
@@ -47,7 +47,7 @@ async fn main() {
47
47
crate_name. clone ( ) ,
48
48
tokio:: spawn ( check_crate_status (
49
49
crate_name,
50
- cli. crates_dir . clone ( ) ,
50
+ cli. root_cargo_dir . clone ( ) ,
51
51
cli. crates_io_dir . clone ( ) ,
52
52
) ) ,
53
53
) ) ;
@@ -58,7 +58,7 @@ async fn main() {
58
58
crate_name. clone ( ) ,
59
59
tokio:: spawn ( check_crate_status (
60
60
crate_name,
61
- cli. crates_dir . clone ( ) ,
61
+ cli. root_cargo_dir . clone ( ) ,
62
62
cli. crates_io_dir . clone ( ) ,
63
63
) ) ,
64
64
) ) ;
@@ -77,7 +77,12 @@ async fn main() {
77
77
match status {
78
78
CrateStatus :: VersionBumped ( manifest_diff) => {
79
79
println ! ( "🟢 {crate_name:-padding$} Version number has been updated" ) ;
80
- diff_crate_src ( & crate_name, & cli. crates_dir , & cli. crates_io_dir , verbose) ;
80
+ diff_crate_src (
81
+ & crate_name,
82
+ & cli. root_cargo_dir ,
83
+ & cli. crates_io_dir ,
84
+ verbose,
85
+ ) ;
81
86
if verbose {
82
87
println ! ( "{manifest_diff}" ) ;
83
88
}
@@ -87,7 +92,7 @@ async fn main() {
87
92
}
88
93
CrateStatus :: CodeChanged ( manifest_diff) => {
89
94
println ! ( "⛔ {crate_name:-padding$} Code changed but version number did not:" ) ;
90
- diff_crate_src ( & crate_name, & cli. crates_dir , & cli. crates_io_dir , true ) ;
95
+ diff_crate_src ( & crate_name, & cli. root_cargo_dir , & cli. crates_io_dir , true ) ;
91
96
if let Some ( manifest_diff) = manifest_diff {
92
97
println ! ( "{manifest_diff}" ) ;
93
98
}
@@ -112,19 +117,19 @@ async fn main() {
112
117
113
118
async fn check_crate_status (
114
119
crate_name : String ,
115
- crates_dir : String ,
120
+ root_cargo_dir : String ,
116
121
crates_io_dir : String ,
117
122
) -> CrateStatus {
118
123
if !check_crate_published ( & crate_name) . await {
119
124
return CrateStatus :: NotPublished ;
120
125
}
121
126
download_crate ( & crate_name, & crates_io_dir) . await ;
122
127
123
- let manifests = Manifests :: read ( & crate_name, crates_dir . as_ref ( ) , crates_io_dir. as_ref ( ) ) ;
128
+ let manifests = Manifests :: read ( & crate_name, root_cargo_dir . as_ref ( ) , crates_io_dir. as_ref ( ) ) ;
124
129
let manifest_diff = manifests. diff ( ) ;
125
130
126
131
match (
127
- diff_crate_src ( & crate_name, & crates_dir , & crates_io_dir, false ) ,
132
+ diff_crate_src ( & crate_name, & root_cargo_dir , & crates_io_dir, false ) ,
128
133
manifest_diff. is_some ( ) ,
129
134
manifests. diff_versions ( ) ,
130
135
) {
@@ -160,11 +165,16 @@ async fn check_crate_published(crate_name: &str) -> bool {
160
165
}
161
166
162
167
/// Returns `true` if the local crate source is different from crates.io
163
- fn diff_crate_src ( crate_name : & str , crates_dir : & str , crates_io_dir : & str , verbose : bool ) -> bool {
168
+ fn diff_crate_src (
169
+ crate_name : & str ,
170
+ root_cargo_dir : & str ,
171
+ crates_io_dir : & str ,
172
+ verbose : bool ,
173
+ ) -> bool {
164
174
let mut cmd = Command :: new ( "diff" ) ;
165
175
cmd. arg ( "-brq" )
166
176
. arg ( format ! ( "{crates_io_dir}/{crate_name}/src" ) )
167
- . arg ( format ! ( "{crates_dir} /{crate_name}/src" ) ) ;
177
+ . arg ( format ! ( "{root_cargo_dir}/crates /{crate_name}/src" ) ) ;
168
178
if verbose {
169
179
!cmd. status ( ) . unwrap ( ) . success ( )
170
180
} else {
@@ -178,13 +188,11 @@ struct Manifests {
178
188
}
179
189
180
190
impl Manifests {
181
- fn read ( crate_name : & str , crates_dir : & str , crates_io_dir : & str ) -> Self {
182
- let local_path = PathBuf :: from ( crates_dir)
183
- . join ( crate_name)
184
- . join ( "Cargo.toml" ) ;
191
+ fn read ( crate_name : & str , root_cargo_dir : & str , crates_io_dir : & str ) -> Self {
192
+ let local_path = PathBuf :: from ( root_cargo_dir) . join ( "Cargo.toml" ) ;
185
193
let crates_io_path = PathBuf :: from ( crates_io_dir)
186
194
. join ( crate_name)
187
- . join ( "Cargo.toml.orig " ) ;
195
+ . join ( "Cargo.toml" ) ;
188
196
189
197
let local_text = fs:: read_to_string ( & local_path)
190
198
. unwrap_or_else ( |_| panic ! ( "{} not found" , local_path. display( ) ) ) ;
@@ -197,7 +205,11 @@ impl Manifests {
197
205
}
198
206
199
207
fn diff_versions ( & self ) -> bool {
200
- self . local [ "package" ] [ "version" ] != self . crates_io [ "package" ] [ "version" ]
208
+ println ! (
209
+ "Comparing versions: local={} crates.io={}" ,
210
+ self . local[ "workspace" ] [ "package" ] [ "version" ] , self . crates_io[ "package" ] [ "version" ]
211
+ ) ;
212
+ self . local [ "workspace" ] [ "package" ] [ "version" ] != self . crates_io [ "package" ] [ "version" ]
201
213
}
202
214
203
215
fn diff ( & self ) -> Option < String > {
0 commit comments