@@ -14,7 +14,6 @@ use tracing::{error, trace};
1414
1515use crate :: Runtime ;
1616use comtrya_lib:: {
17- actions:: Actions ,
1817 contexts:: Contexts ,
1918 manifests:: { DependencyBarrier , Manifest } ,
2019 utilities:: { get_privilege_provider, password_manager:: PasswordManager } ,
@@ -41,7 +40,7 @@ impl DependencyGraph {
4140 let mut should_ask_for_pass = false ;
4241 let mut dependency_map = Vec :: new ( ) ;
4342
44- for ( _ , manifest) in manifests. iter_mut ( ) {
43+ for manifest in manifests. values_mut ( ) {
4544 manifest. barrier = Some ( DependencyBarrier :: new ( manifest. depends . len ( ) + 1 ) ) ;
4645 let node = this. add_manifest ( manifest. clone ( ) ) . await ;
4746 this. name_to_idx . insert ( manifest. get_name ( ) , node) ;
@@ -54,7 +53,7 @@ impl DependencyGraph {
5453 let dep_prefix = name. rsplit_once ( '.' ) . map ( |( n, _) | n) . unwrap_or ( & name) ;
5554 let dependency_name = dependency_name. replace ( "./" , & format ! ( "{dep_prefix}." ) ) ;
5655
57- let Some ( dependency_manifest ) = manifests. get ( & dependency_name) else {
56+ let Some ( dependency ) = manifests. get ( & dependency_name) else {
5857 return error ! (
5958 message = "Unresolved dependency" ,
6059 dependency = dependency_name
@@ -64,28 +63,20 @@ impl DependencyGraph {
6463 trace ! (
6564 message = "Dependency Registered" ,
6665 from = name,
67- to = dependency_manifest . get_name( )
66+ to = dependency . get_name( )
6867 ) ;
6968
70- dependency_map. push ( ( node, this. name_to_idx [ & dependency_manifest . get_name ( ) ] ) ) ;
69+ dependency_map. push ( ( node, this. name_to_idx [ & dependency . get_name ( ) ] ) ) ;
7170 } ) ;
7271
73- if !should_ask_for_pass {
74- should_ask_for_pass = manifest. actions . iter ( ) . any ( |action| match action {
75- Actions :: CommandRun ( cva) => cva. action . privileged ,
76- Actions :: PackageInstall ( _) | Actions :: PackageRepository ( _) => true ,
77- _ => false ,
78- } ) ;
79- }
72+ should_ask_for_pass |= manifest. actions . iter ( ) . any ( |action| action. is_privileged ( ) ) ;
8073 }
8174
82- for ( from, to) in dependency_map {
83- this. graph . add_edge ( from, to, ( ) ) ;
75+ for ( from, to) in & dependency_map {
76+ this. graph . add_edge ( * from, * to, ( ) ) ;
8477 }
8578
8679 if should_ask_for_pass {
87- debug ! ( "Should be prompting for password. Asking now" ) ;
88-
8980 let mut password_manager =
9081 PasswordManager :: new ( get_privilege_provider ( contexts) . as_deref ( ) ) ?;
9182 password_manager. prompt ( "Please enter password:" ) ?;
@@ -117,15 +108,17 @@ impl DependencyGraph {
117108 * idx
118109 }
119110
120- pub async fn get_successors ( & self , manifest : & LockedManifest ) -> Vec < LockedManifest > {
121- self . graph
122- . neighbors_directed ( self . get_node_from_manifest ( manifest) . await , Incoming )
111+ pub async fn get_successors ( & self , manifest : & LockedManifest ) -> Option < Vec < LockedManifest > > {
112+ let manifests = self
113+ . graph
114+ . neighbors_directed ( self . get_node_from_manifest ( manifest) . await ?, Incoming )
123115 . map ( |node| Arc :: clone ( & self . graph [ node] . clone ( ) ) )
124- . collect ( )
116+ . collect ( ) ;
117+
118+ Some ( manifests)
125119 }
126120
127- pub async fn get_node_from_manifest ( & self , manifest : & LockedManifest ) -> NodeIndex {
128- // let join_set = JoinSet::new();
129- * self . name_to_idx . get ( & manifest. get_name ( ) ) . unwrap ( )
121+ pub async fn get_node_from_manifest ( & self , manifest : & LockedManifest ) -> Option < NodeIndex > {
122+ self . name_to_idx . get ( & manifest. get_name ( ) ) . copied ( )
130123 }
131124}
0 commit comments