@@ -75,28 +75,34 @@ impl ProjectBuildGraph {
7575 let mut packages = HashMap :: new ( ) ;
7676 let mut members = Vec :: new ( ) ;
7777
78- if manifest_path. exists ( ) {
79- let content = std:: fs:: read_to_string ( & manifest_path) ?;
80- let manifest: Manifest = toml:: from_str ( & content) ?;
81-
82- if let Some ( workspace_cfg) = & manifest. workspace {
83- // Workspace mode
84- members = workspace_cfg. members . clone ( ) ;
85- for member_glob in & members {
86- // Simulating directory lookup for member folders
87- let member_dir = root. join ( member_glob) ;
88- if member_dir. exists ( ) {
89- let pkg = load_package ( & member_dir) ?;
90- packages. insert ( pkg. name . clone ( ) , pkg) ;
78+ match std:: fs:: read_to_string ( & manifest_path) {
79+ Ok ( content) => {
80+ let manifest: Manifest = toml:: from_str ( & content) ?;
81+
82+ if let Some ( workspace_cfg) = & manifest. workspace {
83+ // Workspace mode
84+ members = workspace_cfg. members . clone ( ) ;
85+ for member_glob in & members {
86+ // Simulating directory lookup for member folders
87+ let member_dir = root. join ( member_glob) ;
88+ if member_dir. exists ( ) {
89+ let pkg = load_package ( & member_dir) ?;
90+ packages. insert ( pkg. name . clone ( ) , pkg) ;
91+ }
9192 }
93+ } else {
94+ // Single package mode
95+ let pkg = load_package ( root) ?;
96+ packages. insert ( pkg. name . clone ( ) , pkg) ;
9297 }
93- } else {
94- // Single package mode
95- let pkg = load_package ( root) ?;
96- packages. insert ( pkg. name . clone ( ) , pkg) ;
9798 }
98- } else {
99- // No tech.toml, single file virtual package mode
99+ Err ( e) if e. kind ( ) == std:: io:: ErrorKind :: NotFound => {
100+ // No tech.toml, single file virtual package mode
101+ }
102+ Err ( e) => return Err ( e. into ( ) ) ,
103+ }
104+
105+ if packages. is_empty ( ) {
100106 let entry = root. to_path_buf ( ) ;
101107 let parent = entry. parent ( ) . unwrap_or ( root) . to_path_buf ( ) ;
102108 let pkg = Package {
@@ -148,12 +154,10 @@ impl ProjectBuildGraph {
148154
149155 // 1. Add all entry points to compilation list
150156 for pkg in self . workspace . packages . values_mut ( ) {
151- if pkg. entry_file . exists ( ) {
152- if let Ok ( source) = std:: fs:: read_to_string ( & pkg. entry_file ) {
153- let fid = source_mgr. add_file ( pkg. entry_file . clone ( ) , source. clone ( ) ) ;
154- pkg. entry_file_id = Some ( fid) ;
155- to_resolve. push ( ( fid, pkg. entry_file . clone ( ) , pkg. name . clone ( ) ) ) ;
156- }
157+ if let Ok ( source) = std:: fs:: read_to_string ( & pkg. entry_file ) {
158+ let fid = source_mgr. add_file ( pkg. entry_file . clone ( ) , source. clone ( ) ) ;
159+ pkg. entry_file_id = Some ( fid) ;
160+ to_resolve. push ( ( fid, pkg. entry_file . clone ( ) , pkg. name . clone ( ) ) ) ;
157161 }
158162 }
159163
@@ -269,12 +273,10 @@ impl ProjectBuildGraph {
269273 }
270274 }
271275
272- if import_file. exists ( ) {
273- if let Ok ( source) = std:: fs:: read_to_string ( & import_file) {
274- let dep_fid = source_mgr. add_file ( import_file. clone ( ) , source) ;
275- dep_fids. push ( dep_fid) ;
276- to_resolve. push ( ( dep_fid, import_file, pkg_name. clone ( ) ) ) ;
277- }
276+ if let Ok ( source) = std:: fs:: read_to_string ( & import_file) {
277+ let dep_fid = source_mgr. add_file ( import_file. clone ( ) , source) ;
278+ dep_fids. push ( dep_fid) ;
279+ to_resolve. push ( ( dep_fid, import_file, pkg_name. clone ( ) ) ) ;
278280 }
279281 }
280282
0 commit comments