mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 13:18:29 +00:00
- Workspace support (`[workspace]` with deps ordering) - `clean --all` for workspace members Changed: - Project root discovery for `build/run/clean` (searches parent dirs) - Workspace paths are excluded from root source scan - Build output now uses a Cargo-style `Compiling <name> v<version>` line - Build time now reports total time for the whole build stage (workspace included) - Cache hits are silent (no compile line when nothing is rebuilt) - Safer build cache: fingerprints include headers and resolved library files
32 lines
800 B
Rust
32 lines
800 B
Rust
use std::io;
|
|
use std::path::{Path, PathBuf};
|
|
|
|
#[allow(dead_code)]
|
|
pub fn check_dir(dir: Option<&str>) -> io::Result<Vec<String>> {
|
|
let path: PathBuf = match dir {
|
|
None | Some(".") | Some("./") => std::env::current_dir()?,
|
|
Some(value) => std::env::current_dir()?.join(value),
|
|
};
|
|
|
|
let mut items = Vec::new();
|
|
for entry in std::fs::read_dir(path)? {
|
|
let entry = entry?;
|
|
items.push(entry.file_name().to_string_lossy().to_string());
|
|
}
|
|
|
|
Ok(items)
|
|
}
|
|
|
|
pub fn find_project_root(start: &Path) -> io::Result<Option<PathBuf>> {
|
|
let mut current = start.to_path_buf();
|
|
loop {
|
|
if current.join("dcr.toml").is_file() {
|
|
return Ok(Some(current));
|
|
}
|
|
if !current.pop() {
|
|
break;
|
|
}
|
|
}
|
|
Ok(None)
|
|
}
|