Skip to content

Commit 02a8846

Browse files
committed
fix: use walkdir
1 parent c6ba763 commit 02a8846

File tree

1 file changed

+59
-65
lines changed

1 file changed

+59
-65
lines changed

src/main.rs

Lines changed: 59 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -139,82 +139,76 @@ fn list_crates(root: &PathBuf) -> Result<BTreeMap<CrateId, Crate>> {
139139
}
140140

141141
fn 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

Comments
 (0)