corge-rs 0.1.1

A small Rust-powered build tool for C projects: init, build, deps, profiles, and tooling.
Documentation
use std::fs;
use std::path::PathBuf;

fn fetch_files_by_extension(path: &PathBuf, extension: &str) -> anyhow::Result<Vec<PathBuf>> {
    let mut c_files = vec![];

    for dir_entry in fs::read_dir(path)? {
        let dir_entry = dir_entry?;

        if dir_entry.path().is_dir() {
            let child_c_files = fetch_files_by_extension(&dir_entry.path(), extension)?;
            c_files.extend(child_c_files);
        } else {
            let is_source_file = dir_entry
                .path()
                .extension()
                .map(|file_extension| file_extension == extension)
                .unwrap_or(false);

            if is_source_file {
                c_files.push(dir_entry.path());
            }
        }
    }

    Ok(c_files)
}

pub fn fetch_files(path: &PathBuf, extension: &str) -> anyhow::Result<Vec<PathBuf>> {
    fetch_files_by_extension(&path, extension)
}