examine 0.1.0

Simple project detection and analysis - just pass a path and get project info
Documentation

Examine

Crates.io Documentation License: MIT

Simple project detection and analysis. Pass a path, get comprehensive project info.

Highly experimental at the moment!

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()));

Installation

[dependencies]
examine = "0.1.0"

What it detects

Languages: Rust, JavaScript, Go, Python, Java, PHP, Ruby, Swift, Dart, C/C++, C#, Elixir, Haskell, Clojure

Frameworks:

  • Rust: Axum, Actix Web, Rocket, Warp, Bevy, Clap
  • JavaScript: React, Vue, Angular, Svelte, Express, Next.js, Nuxt
  • Go: Gin, Echo, Fiber, Gorilla Mux
  • Python: Django, Flask, FastAPI

End-of-life tracking for Node.js, Python, Go, Rust, and Java versions.

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

  1. Language Detection - Looks for project files (Cargo.toml, package.json, etc.)
  2. Version Detection - Parses project files and version config files
  3. Framework Detection - Analyzes dependencies in project files
  4. Status Lookup - Checks against known End of Life databases

Contributing

Contributions welcome! Areas where help is needed:

  • More languages (C#, Kotlin, Scala, etc.)
  • More frameworks
  • Better version detection
  • Updated EOL information
  • New Ideas

License

MIT License - see LICENSE file for details.