2 unstable releases
| 0.2.0 | Jun 13, 2025 |
|---|---|
| 0.1.0 | Jun 13, 2025 |
#2244 in Parser implementations
63KB
1.5K
SLoC
Examine
Simple project detection and analysis. Pass a path, get comprehensive project info.
Highly experimental at the moment!
Installation
[dependencies]
examine = "0.1.0"
Usage
use examine::examine;
let info = examine(".").unwrap();
println!("Language: {}", info.language);
println!("Version: {}", info.language_version.unwrap_or("Unknown".to_string()));
println!("Status: {}", info.language_status);
println!("Framework: {}", info.framework.unwrap_or("None".to_string()));
Current Status
| Language | Project Detection | Version Detection | EOL Tracking | Frameworks Supported |
|---|---|---|---|---|
| ✅ | ✅ | ✅ | Axum, Actix Web, Rocket, Warp, Bevy, Clap | |
| ✅ | ✅ | ✅ | React, Vue, Angular, Svelte, Express, Next.js, Nuxt | |
| ✅ | ✅ | ✅ | Gin, Echo, Fiber, Gorilla Mux | |
| ✅ | ✅ | ✅ | Django, Flask, FastAPI | |
| ✅ | WIP | WIP | ||
| ✅ | TODO | |||
| ✅ | TODO | |||
| ✅ | TODO | |||
| ✅ | TODO | |||
| ✅ | TODO | |||
| ✅ | TODO | |||
| ✅ | TODO | |||
| ✅ | TODO | |||
| ✅ | TODO | |||
| ✅ | TODO |
Example Output
🔍 Project Analysis
==================
📁 Path: ./my-web-service
📦 Name: my-web-service
💻 Language: Rust
📋 Version: 1.75.0
⚡ Status: ✅ Supported
🚀 Framework: Axum
Version: 0.7.0
Type: Web Framework
Popular: Yes
Alternatives: Actix Web, Warp, Rocket
✨ Summary: Rust + v1.75.0 + Axum v0.7.0
Language Status Guide
- ✅ Supported - Actively maintained, safe to use
- ⚠️ Ending Soon - Will reach EOL within 6 months
- ❌ End of Life - No longer supported, consider upgrading
- ❓ Unknown - Status not tracked or version not detected
CLI Tool
The CLI is only for testing the library and not intended as a distribution. Feel free to write your own CLI tool if you want one.
cargo run --example cli_tool analyze .
cargo run --example cli_tool analyze /path/to/project
API Reference
ProjectInfo struct
pub struct ProjectInfo {
pub language: String,
pub language_version: Option<String>,
pub language_status: LanguageStatus,
pub framework: Option<String>,
pub framework_version: Option<String>,
pub framework_details: Option<FrameworkDetails>,
pub project_name: Option<String>,
pub project_path: String,
}
LanguageStatus enum
pub enum LanguageStatus {
Supported,
EndingSoon { date: String },
EndOfLife { date: String },
Unknown,
}
How it works
- Language Detection - Looks for project files (
Cargo.toml,package.json, etc.) - Version Detection - Parses project files and version config files
- Framework Detection - Analyzes dependencies in project files
- Status Lookup - Checks against known End of Life databases
Contributing
Contributions welcome! Areas where help is needed:
- More languages
- More frameworks. Single Data Source?
- Better version detection
- Updated EOL information. Automated update to state.
- New Ideas
License
MIT License - see LICENSE file for details.
Dependencies
~2.7–4.5MB
~89K SLoC