@@ -6,15 +6,14 @@ use flate2::read::GzDecoder;
6
6
use hex:: ToHex ;
7
7
use hyper:: body:: Buf ;
8
8
use sha2:: { Digest , Sha256 } ;
9
- use std:: collections:: BTreeMap ;
10
9
use std:: io:: Read ;
11
10
use std:: path:: Path ;
12
11
13
12
use crate :: controllers:: cargo_prelude:: * ;
14
13
use crate :: controllers:: util:: RequestPartsExt ;
15
14
use crate :: models:: {
16
- insert_version_owner_action, Category , Crate , DependencyKind , Keyword , NewCrate , NewVersion ,
17
- Rights , VersionAction ,
15
+ insert_version_owner_action, Category , Crate , Keyword , NewCrate , NewVersion , Rights ,
16
+ VersionAction ,
18
17
} ;
19
18
use crate :: worker;
20
19
@@ -199,8 +198,8 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
199
198
// to get here, and max upload sizes are way less than i32 max
200
199
content_length as i32 ,
201
200
user. id ,
202
- hex_cksum. clone ( ) ,
203
- links. clone ( ) ,
201
+ hex_cksum,
202
+ links,
204
203
) ?
205
204
. save ( conn, & verified_email_address) ?;
206
205
@@ -213,7 +212,7 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
213
212
) ?;
214
213
215
214
// Link this new version to all dependencies
216
- let git_deps = add_dependencies ( conn, & new_crate. deps , version. id ) ?;
215
+ add_dependencies ( conn, & new_crate. deps , version. id ) ?;
217
216
218
217
// Update all keywords for this crate
219
218
Keyword :: update_crate ( conn, & krate, & keywords) ?;
@@ -247,31 +246,7 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
247
246
. uploader ( )
248
247
. upload_crate ( app. http_client ( ) , tarball_bytes, & krate, vers) ?;
249
248
250
- let ( features, features2) : ( BTreeMap < _ , _ > , BTreeMap < _ , _ > ) =
251
- features. into_iter ( ) . partition ( |( _k, vals) | {
252
- !vals
253
- . iter ( )
254
- . any ( |v| v. starts_with ( "dep:" ) || v. contains ( "?/" ) )
255
- } ) ;
256
- let ( features2, v) = if features2. is_empty ( ) {
257
- ( None , None )
258
- } else {
259
- ( Some ( features2) , Some ( 2 ) )
260
- } ;
261
-
262
- // Register this crate in our local git repo.
263
- let git_crate = cargo_registry_index:: Crate {
264
- name : name. 0 ,
265
- vers : vers. to_string ( ) ,
266
- cksum : hex_cksum,
267
- features,
268
- features2,
269
- deps : git_deps,
270
- yanked : Some ( false ) ,
271
- links,
272
- v,
273
- } ;
274
- worker:: add_crate ( git_crate) . enqueue ( conn) ?;
249
+ worker:: add_crate ( name. 0 , vers. to_string ( ) ) . enqueue ( conn) ?;
275
250
276
251
// The `other` field on `PublishWarnings` was introduced to handle a temporary warning
277
252
// that is no longer needed. As such, crates.io currently does not return any `other`
@@ -349,11 +324,11 @@ pub fn add_dependencies(
349
324
conn : & mut PgConnection ,
350
325
deps : & [ EncodableCrateDependency ] ,
351
326
target_version_id : i32 ,
352
- ) -> AppResult < Vec < cargo_registry_index :: Dependency > > {
327
+ ) -> AppResult < ( ) > {
353
328
use self :: dependencies:: dsl:: * ;
354
329
use diesel:: insert_into;
355
330
356
- let git_and_new_dependencies = deps
331
+ let new_dependencies = deps
357
332
. iter ( )
358
333
. map ( |dep| {
359
334
if let Some ( registry) = & dep. registry {
@@ -373,51 +348,25 @@ pub fn add_dependencies(
373
348
}
374
349
}
375
350
376
- // If this dependency has an explicit name in `Cargo.toml` that
377
- // means that the `name` we have listed is actually the package name
378
- // that we're depending on. The `name` listed in the index is the
379
- // Cargo.toml-written-name which is what cargo uses for
380
- // `--extern foo=...`
381
- let ( name, package) = match & dep. explicit_name_in_toml {
382
- Some ( explicit) => ( explicit. to_string ( ) , Some ( dep. name . to_string ( ) ) ) ,
383
- None => ( dep. name . to_string ( ) , None ) ,
384
- } ;
385
-
386
351
Ok ( (
387
- cargo_registry_index:: Dependency {
388
- name,
389
- req : dep. version_req . to_string ( ) ,
390
- features : dep. features . iter ( ) . map ( |s| s. 0 . to_string ( ) ) . collect ( ) ,
391
- optional : dep. optional ,
392
- default_features : dep. default_features ,
393
- target : dep. target . clone ( ) ,
394
- kind : dep. kind . or ( Some ( DependencyKind :: Normal ) ) . map ( |dk| dk. into ( ) ) ,
395
- package,
396
- } ,
397
- (
398
- version_id. eq ( target_version_id) ,
399
- crate_id. eq ( krate. id ) ,
400
- req. eq ( dep. version_req . to_string ( ) ) ,
401
- dep. kind . map ( |k| kind. eq ( k as i32 ) ) ,
402
- optional. eq ( dep. optional ) ,
403
- default_features. eq ( dep. default_features ) ,
404
- features. eq ( & dep. features ) ,
405
- target. eq ( dep. target . as_deref ( ) ) ,
406
- explicit_name. eq ( dep. explicit_name_in_toml . as_deref ( ) )
407
- ) ,
352
+ version_id. eq ( target_version_id) ,
353
+ crate_id. eq ( krate. id ) ,
354
+ req. eq ( dep. version_req . to_string ( ) ) ,
355
+ dep. kind . map ( |k| kind. eq ( k as i32 ) ) ,
356
+ optional. eq ( dep. optional ) ,
357
+ default_features. eq ( dep. default_features ) ,
358
+ features. eq ( & dep. features ) ,
359
+ target. eq ( dep. target . as_deref ( ) ) ,
360
+ explicit_name. eq ( dep. explicit_name_in_toml . as_deref ( ) )
408
361
) )
409
362
} )
410
363
. collect :: < Result < Vec < _ > , _ > > ( ) ?;
411
364
412
- let ( mut git_deps, new_dependencies) : ( Vec < _ > , Vec < _ > ) =
413
- git_and_new_dependencies. into_iter ( ) . unzip ( ) ;
414
- git_deps. sort ( ) ;
415
-
416
365
insert_into ( dependencies)
417
366
. values ( & new_dependencies)
418
367
. execute ( conn) ?;
419
368
420
- Ok ( git_deps )
369
+ Ok ( ( ) )
421
370
}
422
371
423
372
fn verify_tarball (
0 commit comments