standarbuild-detect 0.1.0

Detect project kind (Rust, Node, Bun, Deno, Python, Lua, C/C++) and scan polyglot monorepo workspaces
Documentation
//! Detect the kind of a project (Rust, Node, Bun, Deno, Python, Lua, C, C++)
//! from on-disk signals (`Cargo.toml`, `package.json`, etc.) and scan a
//! polyglot monorepo workspace recursively.
//!
//! The crate is dependency-light and free of opinions about builds: it only
//! answers "what is in this directory?" and "what projects live under this
//! root?".
//!
//! # Quick start
//!
//! ```no_run
//! use std::path::Path;
//! use standarbuild_detect::{detect_in_dir, discover, DiscoverOptions, ProjectKind};
//!
//! let (kind, signals) = detect_in_dir(Path::new("./my-app"));
//! assert!(matches!(kind, ProjectKind::Rust | ProjectKind::Node | _));
//! println!("matched on: {:?}", signals);
//!
//! let projects = discover(Path::new("./my-monorepo"), &DiscoverOptions::default());
//! for p in projects {
//!     println!("{} -> {:?} at {}", p.label, p.kind, p.rel_path);
//! }
//! ```
//!
//! # Features
//!
//! - `serde` *(default)* — derives `Serialize` on the public types and exposes
//!   POSIX-path serializers in [`path_norm`]. Disable with
//!   `default-features = false` if you only need the detection logic.

pub mod detect;
pub mod discover;
pub mod kind;
pub mod path_norm;
pub mod signals;

pub use detect::detect_in_dir;
pub use discover::{discover, DiscoverOptions, Discovered, LabelStrategy};
pub use kind::ProjectKind;
pub use path_norm::to_posix;
#[cfg(feature = "serde")]
pub use path_norm::{serialize_path, serialize_path_opt};
pub use signals::{signal_filenames, SIGNAL_FILES};