@@ -84,12 +84,12 @@ struct ReleaseAssetConnection {
8484}
8585#[ derive( Deserialize , Debug ) ]
8686struct ReleaseAsset {
87- id : i64 ,
87+ id : String ,
8888 name : String ,
8989}
9090
9191pub fn parse_id ( id : String ) -> Result < ModIdentifier > {
92- let split = id. split ( '- ' ) . collect_vec ( ) ;
92+ let split = id. split ( ': ' ) . collect_vec ( ) ;
9393 let ( id, pin) = match split. as_slice ( ) {
9494 [ id, pin] => ( id, Some ( pin) ) ,
9595 [ id] => ( id, None ) ,
@@ -438,81 +438,81 @@ pub async fn add(
438438 ) ;
439439
440440 for ( ( ( owner, repo) , releases) , pin) in gh_repos. into_iter ( ) . zip ( gh_asset_ids) {
441- let res = ' gh_check: {
442- let identifier = ModIdentifier :: GitHubRepository ( ( owner. clone ( ) , repo. clone ( ) ) , pin) ;
443-
444- if profile. mods . iter ( ) . any ( |mod_| {
445- mod_. name . eq_ignore_ascii_case ( repo. as_ref ( ) )
446- || matches ! (
447- & mod_. identifier,
448- ModIdentifier :: GitHubRepository ( ( o, r) , _) if o == & owner && r == & repo,
449- )
450- } ) {
451- break ' gh_check Err ( Error :: AlreadyAdded ) ;
452- }
453- if let Some ( pin) = pin {
454- if !releases
455- . into_iter ( )
456- . flat_map ( |release| release. release_assets . nodes )
457- . any ( |asset| asset. id == pin)
458- {
459- break ' gh_check Err ( Error :: IncorrectVersionPin ) ;
441+ let res =
442+ ' gh_check: {
443+ let identifier =
444+ ModIdentifier :: GitHubRepository ( ( owner. clone ( ) , repo. clone ( ) ) , pin. clone ( ) ) ;
445+
446+ if profile. mods . iter ( ) . any ( |mod_| {
447+ mod_. name . eq_ignore_ascii_case ( repo. as_ref ( ) )
448+ || matches ! (
449+ & mod_. identifier,
450+ ModIdentifier :: GitHubRepository ( ( o, r) , _) if o == & owner && r == & repo,
451+ )
452+ } ) {
453+ break ' gh_check Err ( Error :: AlreadyAdded ) ;
460454 }
461- } else if perform_checks {
462- // Check if the repo is compatible
463- check:: select_latest (
464- releases
455+ if let Some ( pin) = & pin {
456+ if !releases
465457 . into_iter ( )
466- . flat_map ( |release| {
467- release
468- . release_assets
469- . nodes
470- . into_iter ( )
471- . map ( move |asset| Metadata {
472- title : release. name . clone ( ) ,
473- description : release. description . clone ( ) ,
474- channel : if release. is_prerelease {
475- ReleaseChannel :: Beta
476- } else {
477- ReleaseChannel :: Release
478- } ,
479- game_versions : asset
480- . name
481- . trim_end_matches ( ".jar" )
482- . split ( [ '-' , '_' , '+' ] )
483- . map ( |s| s. trim_start_matches ( "mc" ) )
484- . map ( ToOwned :: to_owned)
485- . collect_vec ( ) ,
486- loaders : asset
487- . name
488- . trim_end_matches ( ".jar" )
489- . split ( [ '-' , '_' , '+' ] )
490- . filter_map ( |s| ModLoader :: from_str ( s) . ok ( ) )
491- . collect_vec ( ) ,
492- filename : asset. name ,
458+ . flat_map ( |release| release. release_assets . nodes )
459+ . any ( |asset| & asset. id == pin)
460+ {
461+ break ' gh_check Err ( Error :: IncorrectVersionPin ) ;
462+ }
463+ } else if perform_checks {
464+ // Check if the repo is compatible
465+ check:: select_latest (
466+ releases
467+ . into_iter ( )
468+ . flat_map ( |release| {
469+ release. release_assets . nodes . into_iter ( ) . map ( move |asset| {
470+ Metadata {
471+ title : release. name . clone ( ) ,
472+ description : release. description . clone ( ) ,
473+ channel : if release. is_prerelease {
474+ ReleaseChannel :: Beta
475+ } else {
476+ ReleaseChannel :: Release
477+ } ,
478+ game_versions : asset
479+ . name
480+ . trim_end_matches ( ".jar" )
481+ . split ( [ '-' , '_' , '+' ] )
482+ . map ( |s| s. trim_start_matches ( "mc" ) )
483+ . map ( ToOwned :: to_owned)
484+ . collect_vec ( ) ,
485+ loaders : asset
486+ . name
487+ . trim_end_matches ( ".jar" )
488+ . split ( [ '-' , '_' , '+' ] )
489+ . filter_map ( |s| ModLoader :: from_str ( s) . ok ( ) )
490+ . collect_vec ( ) ,
491+ filename : asset. name ,
492+ }
493493 } )
494- } )
495- . collect_vec ( )
496- . iter ( ) ,
497- if override_profile {
498- profile. filters . clone ( )
499- } else {
500- [ profile. filters . clone ( ) , filters. clone ( ) ] . concat ( )
501- } ,
502- )
503- . await ?;
504- }
494+ } )
495+ . collect_vec ( )
496+ . iter ( ) ,
497+ if override_profile {
498+ profile. filters . clone ( )
499+ } else {
500+ [ profile. filters . clone ( ) , filters. clone ( ) ] . concat ( )
501+ } ,
502+ )
503+ . await ?;
504+ }
505505
506- profile. push_mod (
507- repo. clone ( ) ,
508- identifier. clone ( ) ,
509- repo. clone ( ) ,
510- override_profile,
511- filters. clone ( ) ,
512- ) ;
506+ profile. push_mod (
507+ repo. clone ( ) ,
508+ identifier. clone ( ) ,
509+ repo. clone ( ) ,
510+ override_profile,
511+ filters. clone ( ) ,
512+ ) ;
513513
514- Ok ( identifier)
515- } ;
514+ Ok ( identifier)
515+ } ;
516516 match res {
517517 Ok ( id) => success_names. push ( ( format ! ( "{owner}/{repo}" ) , id) ) ,
518518 Err ( err) => errors. push ( ( format ! ( "{owner}/{repo}" ) , err) ) ,
0 commit comments