@@ -139,82 +139,76 @@ fn list_crates(root: &PathBuf) -> Result<BTreeMap<CrateId, Crate>> {
139139}
140140
141141fn discover_crates ( dir : & PathBuf , crates : & mut BTreeMap < CrateId , Crate > ) -> Result < ( ) > {
142- let d = std:: fs:: read_dir ( dir) ?;
143- for c in d {
144- let entry = c?;
145- if entry. file_type ( ) ?. is_dir ( ) {
146- let path = dir. join ( entry. path ( ) ) ;
147- let cargo_toml = path. join ( "Cargo.toml" ) ;
148-
149- if cargo_toml. exists ( ) {
150- let content = fs:: read_to_string ( & cargo_toml) ?;
151-
152- // Try to parse as a crate, skip if it's a workspace
153- let parsed: Result < ParsedCrate , _ > = toml:: from_str ( & content) ;
154- if let Ok ( parsed) = parsed {
155- let id = parsed. package . name ;
156-
157- let metadata = & parsed. package . metadata . embassy ;
142+ let wd = walkdir:: WalkDir :: new ( dir) ;
143+ for entry in wd
144+ . into_iter ( )
145+ . filter_entry ( |e| e. file_type ( ) . is_dir ( ) && !e. file_name ( ) . eq_ignore_ascii_case ( "target" ) )
146+ {
147+ let entry = entry?;
148+ let path = dir. join ( entry. path ( ) ) ;
149+ let cargo_toml = path. join ( "Cargo.toml" ) ;
150+
151+ if cargo_toml. exists ( ) {
152+ let content = fs:: read_to_string ( & cargo_toml) ?;
153+
154+ // Try to parse as a crate, skip if it's a workspace
155+ let parsed: Result < ParsedCrate , _ > = toml:: from_str ( & content) ;
156+ if let Ok ( parsed) = parsed {
157+ let id = parsed. package . name ;
158+
159+ let metadata = & parsed. package . metadata . embassy ;
160+
161+ if metadata. skip {
162+ continue ;
163+ }
158164
159- if metadata. skip {
160- continue ;
165+ let mut dependencies = Vec :: new ( ) ;
166+ for ( k, _) in parsed. dependencies {
167+ if k. starts_with ( "embassy-" ) {
168+ dependencies. push ( k) ;
161169 }
170+ }
162171
163- let mut dependencies = Vec :: new ( ) ;
164- for ( k, _) in parsed. dependencies {
172+ let mut dev_dependencies = Vec :: new ( ) ;
173+ if let Some ( deps) = parsed. dev_dependencies {
174+ for ( k, _) in deps {
165175 if k. starts_with ( "embassy-" ) {
166- dependencies. push ( k) ;
167- }
168- }
169-
170- let mut dev_dependencies = Vec :: new ( ) ;
171- if let Some ( deps) = parsed. dev_dependencies {
172- for ( k, _) in deps {
173- if k. starts_with ( "embassy-" ) {
174- dev_dependencies. push ( k) ;
175- }
176+ dev_dependencies. push ( k) ;
176177 }
177178 }
179+ }
178180
179- let mut build_dependencies = Vec :: new ( ) ;
180- if let Some ( deps) = parsed. build_dependencies {
181- for ( k, _) in deps {
182- if k. starts_with ( "embassy-" ) {
183- build_dependencies. push ( k) ;
184- }
181+ let mut build_dependencies = Vec :: new ( ) ;
182+ if let Some ( deps) = parsed. build_dependencies {
183+ for ( k, _) in deps {
184+ if k. starts_with ( "embassy-" ) {
185+ build_dependencies. push ( k) ;
185186 }
186187 }
187-
188- let mut configs = metadata. build . clone ( ) ;
189- if configs. is_empty ( ) {
190- configs. push ( BuildConfig {
191- features : vec ! [ ] ,
192- target : None ,
193- artifact_dir : None ,
194- } )
195- }
196-
197- crates. insert (
198- id. clone ( ) ,
199- Crate {
200- name : id,
201- version : parsed. package . version ,
202- path,
203- dependencies,
204- dev_dependencies,
205- build_dependencies,
206- configs,
207- publish : parsed. package . publish ,
208- } ,
209- ) ;
210188 }
211- } else {
212- // Recursively search subdirectories, but only for examples, tests, and docs
213- let file_name = entry. file_name ( ) ;
214- let dir_name = file_name. to_string_lossy ( ) ;
215- if dir_name == "examples" || dir_name == "tests" || dir_name == "docs" {
216- discover_crates ( & path, crates) ?;
189+
190+ let mut configs = metadata. build . clone ( ) ;
191+ if configs. is_empty ( ) {
192+ configs. push ( BuildConfig {
193+ features : vec ! [ ] ,
194+ target : None ,
195+ artifact_dir : None ,
196+ } )
217197 }
198+
199+ crates. insert (
200+ id. clone ( ) ,
201+ Crate {
202+ name : id,
203+ version : parsed. package . version ,
204+ path,
205+ dependencies,
206+ dev_dependencies,
207+ build_dependencies,
208+ configs,
209+ publish : parsed. package . publish ,
210+ } ,
211+ ) ;
218212 }
219213 }
220214 }
0 commit comments