1- use std:: path:: PathBuf ;
1+ use std:: path:: { Path , PathBuf } ;
22
33use include_dir:: { include_dir, Dir , DirEntry } ;
44
@@ -7,20 +7,28 @@ use crate::{load_workspace_files, LuaFileInfo};
77static RESOURCE_DIR : Dir = include_dir ! ( "$CARGO_MANIFEST_DIR/resources" ) ;
88const VERSION : & str = env ! ( "CARGO_PKG_VERSION" ) ;
99
10- pub fn load_resource_std ( allow_create_resources_dir : bool ) -> ( PathBuf , Vec < LuaFileInfo > ) {
11- let exe_path = std:: env:: current_exe ( ) . unwrap ( ) ;
12- let exe_dir = exe_path. parent ( ) . unwrap ( ) ;
13- let resoucres_dir = exe_dir. join ( "resources" ) ;
14- let std_dir = resoucres_dir. join ( "std" ) ;
15-
16- if allow_create_resources_dir {
17- let result = load_resource_from_file_system ( ) ;
10+ pub fn load_resource_std ( create_resources_dir : Option < String > ) -> ( PathBuf , Vec < LuaFileInfo > ) {
11+ if let Some ( create_resources_dir) = create_resources_dir {
12+ let resource_path = if create_resources_dir. is_empty ( ) {
13+ let exe_path = std:: env:: current_exe ( ) . unwrap ( ) ;
14+ let exe_dir = exe_path. parent ( ) . unwrap ( ) ;
15+ let resoucres_dir = exe_dir. join ( "resources" ) ;
16+ resoucres_dir
17+ } else {
18+ PathBuf :: from ( & create_resources_dir)
19+ } ;
20+ let std_dir = PathBuf :: from ( & create_resources_dir) . join ( "std" ) ;
21+ let result = load_resource_from_file_system ( & resource_path) ;
1822 match result {
1923 Some ( files) => return ( std_dir, files) ,
2024 None => { }
2125 }
2226 }
2327
28+ let exe_path = std:: env:: current_exe ( ) . unwrap ( ) ;
29+ let exe_dir = exe_path. parent ( ) . unwrap ( ) ;
30+ let resoucres_dir = exe_dir. join ( "resources" ) ;
31+ let std_dir = resoucres_dir. join ( "std" ) ;
2432 let files = load_resource_from_include_dir ( ) ;
2533 let files = files
2634 . into_iter ( )
@@ -40,16 +48,12 @@ pub fn load_resource_std(allow_create_resources_dir: bool) -> (PathBuf, Vec<LuaF
4048 ( std_dir, files)
4149}
4250
43- fn load_resource_from_file_system ( ) -> Option < Vec < LuaFileInfo > > {
44- let exe_path = std:: env:: current_exe ( ) . unwrap ( ) ;
45- let exe_dir = exe_path. parent ( ) . unwrap ( ) ;
46- let resoucres_dir = exe_dir. join ( "resources" ) ;
47-
51+ fn load_resource_from_file_system ( resources_dir : & Path ) -> Option < Vec < LuaFileInfo > > {
4852 if check_need_dump_to_file_system ( ) {
49- log:: info!( "Creating resources dir: {:?}" , resoucres_dir ) ;
53+ log:: info!( "Creating resources dir: {:?}" , resources_dir ) ;
5054 let files = load_resource_from_include_dir ( ) ;
5155 for file in & files {
52- let path = resoucres_dir . join ( & file. path ) ;
56+ let path = resources_dir . join ( & file. path ) ;
5357 let parent = path. parent ( ) . unwrap ( ) ;
5458 if !parent. exists ( ) {
5559 match std:: fs:: create_dir_all ( parent) {
@@ -70,7 +74,7 @@ fn load_resource_from_file_system() -> Option<Vec<LuaFileInfo>> {
7074 }
7175 }
7276
73- let version_path = resoucres_dir . join ( "version" ) ;
77+ let version_path = resources_dir . join ( "version" ) ;
7478 let content = format ! ( "{}" , VERSION ) ;
7579 match std:: fs:: write ( & version_path, content) {
7680 Ok ( _) => { }
@@ -81,7 +85,7 @@ fn load_resource_from_file_system() -> Option<Vec<LuaFileInfo>> {
8185 }
8286 }
8387
84- let std_dir = resoucres_dir . join ( "std" ) ;
88+ let std_dir = resources_dir . join ( "std" ) ;
8589 let match_pattern = vec ! [ "**/*.lua" . to_string( ) ] ;
8690 let files = match load_workspace_files ( & std_dir, & match_pattern, & Vec :: new ( ) , & Vec :: new ( ) , None )
8791 {
0 commit comments