examine

Crates.ioexamine
lib.rsexamine
version0.2.0
created_at2025-06-13 03:55:33.117319+00
updated_at2025-06-13 04:22:15.869545+00
descriptionSimple project detection and analysis - just pass a path and get project info
homepagehttps://github.com/anistark/examine
repositoryhttps://github.com/anistark/examine
max_upload_size
id1711022
size73,970
Ani (anistark)

documentation

https://docs.rs/examine

README

Examine

Crates.io Documentation Crates.io Downloads Crates.io Downloads (latest version) Open Source License: MIT maintenance-status

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
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
Java WIP WIP
PHP TODO
Ruby TODO
Swift TODO
Dart TODO
C TODO
C++ TODO
C# TODO
Elixir TODO
Haskell TODO
Clojure 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

  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
  • 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.

Commit count: 4

cargo fmt