9
9
futures:: StreamExt ,
10
10
octocrab:: { models:: workflows:: WorkflowListArtifact , Octocrab , OctocrabBuilder } ,
11
11
rayon:: prelude:: * ,
12
- std:: { collections:: BTreeSet , io:: Read , path:: PathBuf } ,
12
+ std:: {
13
+ collections:: { BTreeMap , BTreeSet } ,
14
+ io:: Read ,
15
+ path:: PathBuf ,
16
+ } ,
13
17
zip:: ZipArchive ,
14
18
} ;
15
19
@@ -220,7 +224,7 @@ pub async fn command_upload_release_distributions(args: &ArgMatches) -> Result<(
220
224
python_versions. insert ( parts[ 1 ] ) ;
221
225
}
222
226
223
- let mut wanted_filenames = BTreeSet :: new ( ) ;
227
+ let mut wanted_filenames = BTreeMap :: new ( ) ;
224
228
for version in python_versions {
225
229
for ( triple, release) in RELEASE_TRIPLES . iter ( ) {
226
230
if let Some ( req) = & release. python_version_requirement {
@@ -231,20 +235,30 @@ pub async fn command_upload_release_distributions(args: &ArgMatches) -> Result<(
231
235
}
232
236
233
237
for suffix in & release. suffixes {
234
- wanted_filenames. insert ( format ! (
235
- "cpython-{}-{}-{}-{}.tar.zst" ,
236
- version, triple, suffix, datetime
237
- ) ) ;
238
+ wanted_filenames. insert (
239
+ format ! (
240
+ "cpython-{}-{}-{}-{}.tar.zst" ,
241
+ version, triple, suffix, datetime
242
+ ) ,
243
+ format ! ( "cpython-{}+{}-{}-{}.tar.zst" , version, tag, triple, suffix) ,
244
+ ) ;
238
245
}
239
246
240
- wanted_filenames. insert ( format ! (
241
- "cpython-{}-{}-install_only-{}.tar.gz" ,
242
- version, triple, datetime
243
- ) ) ;
247
+ wanted_filenames. insert (
248
+ format ! (
249
+ "cpython-{}-{}-install_only-{}.tar.gz" ,
250
+ version, triple, datetime
251
+ ) ,
252
+ format ! ( "cpython-{}+{}-{}-install_only.tar.gz" , version, tag, triple) ,
253
+ ) ;
244
254
}
245
255
}
246
256
247
- let missing = wanted_filenames. difference ( & filenames) . collect :: < Vec < _ > > ( ) ;
257
+ let missing = wanted_filenames
258
+ . keys ( )
259
+ . filter ( |x| !filenames. contains ( * x) )
260
+ . collect :: < Vec < _ > > ( ) ;
261
+
248
262
for f in & missing {
249
263
println ! ( "missing release artifact: {}" , f) ;
250
264
}
@@ -265,13 +279,17 @@ pub async fn command_upload_release_distributions(args: &ArgMatches) -> Result<(
265
279
) ) ;
266
280
} ;
267
281
268
- for filename in wanted_filenames. intersection ( & filenames) {
269
- if release. assets . iter ( ) . any ( |asset| & asset. name == filename) {
270
- println ! ( "release asset {} already present; skipping" , filename) ;
282
+ for ( source, dest) in wanted_filenames {
283
+ if !filenames. contains ( & source) {
284
+ continue ;
285
+ }
286
+
287
+ if release. assets . iter ( ) . any ( |asset| asset. name == dest) {
288
+ println ! ( "release asset {} already present; skipping" , dest) ;
271
289
continue ;
272
290
}
273
291
274
- let path = dist_dir. join ( filename ) ;
292
+ let path = dist_dir. join ( & source ) ;
275
293
let file_data = std:: fs:: read ( & path) ?;
276
294
277
295
let mut url = release. upload_url . clone ( ) ;
@@ -283,9 +301,9 @@ pub async fn command_upload_release_distributions(args: &ArgMatches) -> Result<(
283
301
284
302
url. query_pairs_mut ( )
285
303
. clear ( )
286
- . append_pair ( "name" , filename . as_str ( ) ) ;
304
+ . append_pair ( "name" , dest . as_str ( ) ) ;
287
305
288
- println ! ( "uploading {} to {}" , filename , url) ;
306
+ println ! ( "uploading {} to {}" , source , url) ;
289
307
290
308
let request = client
291
309
. request_builder ( url, reqwest:: Method :: POST )
0 commit comments