@@ -286,7 +286,7 @@ fn resolve_packages(
286286 conn,
287287 query. name . as_deref ( ) ,
288288 None ,
289- query . version . as_deref ( ) ,
289+ None ,
290290 None ,
291291 Some ( SortDirection :: Asc ) ,
292292 )
@@ -305,7 +305,7 @@ fn resolve_packages(
305305 conn,
306306 query. name . as_deref ( ) ,
307307 None ,
308- query . version . as_deref ( ) ,
308+ None ,
309309 None ,
310310 Some ( SortDirection :: Asc ) ,
311311 ) ?;
@@ -320,6 +320,15 @@ fn resolve_packages(
320320 } ) ?
321321 } ;
322322
323+ let repo_pkgs: Vec < Package > = if let Some ( ref version) = query. version {
324+ repo_pkgs
325+ . into_iter ( )
326+ . filter ( |p| p. has_version ( version) )
327+ . collect ( )
328+ } else {
329+ repo_pkgs
330+ } ;
331+
323332 if repo_pkgs. is_empty ( ) {
324333 error ! ( "Package {} not found" , name) ;
325334 continue ;
@@ -392,6 +401,8 @@ fn resolve_packages(
392401 }
393402 }
394403
404+ let pkg = pkg. resolve ( query. version . as_deref ( ) ) ;
405+
395406 install_targets. push ( InstallTarget {
396407 package : pkg,
397408 existing_install,
@@ -568,6 +579,8 @@ fn resolve_packages(
568579 }
569580 }
570581
582+ let pkg = pkg. resolve ( query. version . as_deref ( ) ) ;
583+
571584 install_targets. push ( InstallTarget {
572585 package : pkg,
573586 existing_install,
@@ -587,7 +600,7 @@ fn resolve_packages(
587600 query. repo_name . as_deref ( ) ,
588601 query. name . as_deref ( ) ,
589602 query. pkg_id . as_deref ( ) ,
590- query . version . as_deref ( ) ,
603+ None ,
591604 None ,
592605 None ,
593606 None ,
@@ -606,7 +619,7 @@ fn resolve_packages(
606619 conn,
607620 None ,
608621 query. pkg_id . as_deref ( ) ,
609- query . version . as_deref ( ) ,
622+ None ,
610623 None ,
611624 None ,
612625 )
@@ -625,7 +638,7 @@ fn resolve_packages(
625638 conn,
626639 None ,
627640 query. pkg_id . as_deref ( ) ,
628- query . version . as_deref ( ) ,
641+ None ,
629642 None ,
630643 None ,
631644 ) ?;
@@ -640,7 +653,18 @@ fn resolve_packages(
640653 } ) ?
641654 } ;
642655
656+ let repo_pkgs: Vec < Package > = if let Some ( ref version) = query. version {
657+ repo_pkgs
658+ . into_iter ( )
659+ . filter ( |p| p. has_version ( version) )
660+ . collect ( )
661+ } else {
662+ repo_pkgs
663+ } ;
664+
643665 for pkg in repo_pkgs {
666+ let pkg = pkg. resolve ( query. version . as_deref ( ) ) ;
667+
644668 let existing_install = installed_packages
645669 . iter ( )
646670 . find ( |ip| ip. pkg_name == pkg. pkg_name )
@@ -701,6 +725,8 @@ fn resolve_packages(
701725 . find ( |ip| ip. version == db_pkg. version )
702726 . cloned ( ) ;
703727
728+ let db_pkg = db_pkg. resolve ( query. version . as_deref ( ) ) ;
729+
704730 install_targets. push ( InstallTarget {
705731 package : db_pkg,
706732 existing_install,
@@ -753,7 +779,7 @@ fn select_package(
753779 conn,
754780 query. name . as_deref ( ) ,
755781 query. pkg_id . as_deref ( ) ,
756- query . version . as_deref ( ) ,
782+ None ,
757783 None ,
758784 None ,
759785 ) ?;
@@ -776,7 +802,7 @@ fn select_package(
776802 conn,
777803 query. name . as_deref ( ) ,
778804 query. pkg_id . as_deref ( ) ,
779- query . version . as_deref ( ) ,
805+ None ,
780806 None ,
781807 None ,
782808 )
@@ -795,7 +821,7 @@ fn select_package(
795821 conn,
796822 query. name . as_deref ( ) ,
797823 query. pkg_id . as_deref ( ) ,
798- query . version . as_deref ( ) ,
824+ None ,
799825 None ,
800826 None ,
801827 ) ?;
@@ -810,6 +836,15 @@ fn select_package(
810836 } ) ?
811837 } ;
812838
839+ let packages: Vec < Package > = if let Some ( ref version) = query. version {
840+ packages
841+ . into_iter ( )
842+ . filter ( |p| p. has_version ( version) )
843+ . collect ( )
844+ } else {
845+ packages
846+ } ;
847+
813848 match packages. len ( ) {
814849 0 => {
815850 error ! ( "Package {package_name} not found" ) ;
0 commit comments