11use crate :: RunNetworkError :: NoPocketIcPath ;
22use crate :: config:: model:: managed:: ManagedNetworkModel ;
33use crate :: config:: model:: network_descriptor:: NetworkDescriptorModel ;
4+ use crate :: directory:: OpenLockFileError ;
45use crate :: managed:: pocketic:: admin:: {
56 CreateHttpGatewayError , CreateInstanceError , PocketIcAdminInterface ,
67} ;
78use crate :: managed:: pocketic:: instance:: PocketIcInstance ;
89use crate :: managed:: pocketic:: native:: spawn_pocketic;
910use crate :: managed:: run:: InitializePocketicError :: NoRootKey ;
10- use crate :: status;
1111use crate :: structure:: NetworkDirectoryStructure ;
12- use fd_lock :: RwLock ;
12+ use crate :: { NetworkDirectory , status } ;
1313use icp_fs:: fs:: {
1414 CreateDirAllError , RemoveDirAllError , RemoveFileError , create_dir_all, remove_dir_all,
1515 remove_file,
@@ -19,7 +19,7 @@ use pocket_ic::common::rest::HttpGatewayBackend;
1919use reqwest:: Url ;
2020use snafu:: prelude:: * ;
2121use std:: env:: var_os;
22- use std:: fs:: { OpenOptions , read_to_string} ;
22+ use std:: fs:: read_to_string;
2323use std:: path:: { Path , PathBuf } ;
2424use std:: process:: ExitStatus ;
2525use std:: time:: Duration ;
@@ -31,27 +31,18 @@ use uuid::Uuid;
3131
3232pub async fn run_network (
3333 config : ManagedNetworkModel ,
34- nds : NetworkDirectoryStructure ,
34+ nd : NetworkDirectory ,
3535) -> Result < ( ) , RunNetworkError > {
3636 let pocketic_path = PathBuf :: from ( var_os ( "ICP_POCKET_IC_PATH" ) . ok_or ( NoPocketIcPath ) ?) ;
3737
38- create_dir_all ( nds . network_root ( ) ) ?;
38+ nd . ensure_exists ( ) ?;
3939
40- let mut file = RwLock :: new (
41- OpenOptions :: new ( )
42- . create ( true )
43- . write ( true )
44- . read ( true )
45- . truncate ( true )
46- . open ( nds. lock_path ( ) )
47- . map_err ( |source| RunNetworkError :: OpenLockFile { source } ) ?,
48- ) ;
40+ let mut file = nd. open_lock_file ( ) ?;
4941 let _guard = file
5042 . try_write ( )
5143 . map_err ( |_| RunNetworkError :: AlreadyRunningThisProject ) ?;
52- eprintln ! ( "Holding lock on {}" , nds. lock_path( ) . display( ) ) ;
5344
54- run_pocketic ( & pocketic_path, config, nds ) . await ?;
45+ run_pocketic ( & pocketic_path, config, nd . structure ( ) ) . await ?;
5546 Ok ( ( ) )
5647}
5748
@@ -66,17 +57,17 @@ pub enum RunNetworkError {
6657 #[ snafu( display( "ICP_POCKET_IC_PATH environment variable is not set" ) ) ]
6758 NoPocketIcPath ,
6859
69- #[ snafu( display ( "failed to open lock file" ) ) ]
70- OpenLockFile { source : std :: io :: Error } ,
60+ #[ snafu( transparent ) ]
61+ OpenLockFile { source : OpenLockFileError } ,
7162
7263 #[ snafu( transparent) ]
73- RunPocketIcError { source : RunPocketIcError } ,
64+ RunPocketIc { source : RunPocketIcError } ,
7465}
7566
7667async fn run_pocketic (
7768 pocketic_path : & Path ,
7869 _config : ManagedNetworkModel ,
79- nds : NetworkDirectoryStructure ,
70+ nds : & NetworkDirectoryStructure ,
8071) -> Result < ( ) , RunPocketIcError > {
8172 eprintln ! ( "PocketIC path: {}" , pocketic_path. display( ) ) ;
8273
0 commit comments