1+ use std:: path:: PathBuf ;
2+
13use include_dir:: { include_dir, Dir , DirEntry } ;
24
35use crate :: { load_workspace_files, LuaFileInfo } ;
46
57static RESOURCE_DIR : Dir = include_dir ! ( "$CARGO_MANIFEST_DIR/resources" ) ;
68
7- pub fn load_resource_std ( allow_create_resources_dir : bool ) -> Vec < LuaFileInfo > {
9+ pub fn load_resource_std ( allow_create_resources_dir : bool ) -> ( PathBuf , Vec < LuaFileInfo > ) {
10+ let exe_path = std:: env:: current_exe ( ) . unwrap ( ) ;
11+ let exe_dir = exe_path. parent ( ) . unwrap ( ) ;
12+ let resoucres_dir = exe_dir. join ( "resources" ) ;
13+ let std_dir = resoucres_dir. join ( "std" ) ;
14+
815 if allow_create_resources_dir {
916 let result = load_resource_from_file_system ( ) ;
1017 match result {
11- Some ( files) => return files,
18+ Some ( files) => return ( std_dir , files) ,
1219 None => { }
1320 }
1421 }
1522
1623 let files = load_resource_from_include_dir ( ) ;
17- return files
24+ let files = files
1825 . into_iter ( )
1926 . filter_map ( |file| {
2027 if file. path . ends_with ( ".lua" ) {
21- Some ( file)
28+ let path = std_dir. join ( & file. path ) . to_str ( ) . unwrap ( ) . to_string ( ) ;
29+ Some ( LuaFileInfo {
30+ path,
31+ content : file. content ,
32+ } )
2233 } else {
2334 None
2435 }
2536 } )
2637 . collect :: < _ > ( ) ;
38+
39+ ( std_dir, files)
2740}
2841
2942fn load_resource_from_file_system ( ) -> Option < Vec < LuaFileInfo > > {
@@ -83,7 +96,7 @@ fn walk_resource_dir(dir: &Dir, files: &mut Vec<LuaFileInfo>) {
8396 DirEntry :: File ( file) => {
8497 let path = file. path ( ) ;
8598 let content = file. contents_utf8 ( ) . unwrap ( ) ;
86-
99+
87100 files. push ( LuaFileInfo {
88101 path : path. to_str ( ) . unwrap ( ) . to_string ( ) ,
89102 content : content. to_string ( ) ,
@@ -94,4 +107,4 @@ fn walk_resource_dir(dir: &Dir, files: &mut Vec<LuaFileInfo>) {
94107 }
95108 }
96109 }
97- }
110+ }
0 commit comments