1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use crate::UnityProject;
use fast_walker::{WalkItem, WalkPlan};
use gen_iter::GenIter;
use std::path::Path;

pub fn find_unity_projects<P: AsRef<Path>>(root: P) -> impl Iterator<Item = UnityProject> {
    let plan = WalkPlan::new(root).reject_if(|path, _| path.starts_with(".")).into_iter();
    GenIter(move || {
        for item in plan {
            match item {
                WalkItem::File { .. } => {}
                WalkItem::Directory { path } => {
                    if let Ok(project) = UnityProject::new(path) {
                        yield project;
                    }
                }
                WalkItem::Error { .. } => {}
            }
        }
    })
}