Skip to content

Repository files navigation

DevCheck

A command-line Developer Environment Checker. DevCheck scans your computer and reports whether common development tools are installed and accessible from your system PATH — no configuration, no external dependencies, no internet connection required.

Description

Setting up a new machine, onboarding a teammate, or debugging a "works on my machine" issue almost always starts with the same question: what's actually installed on this system, and which version? DevCheck answers that in one command. It inspects your PATH for a configurable list of common developer tools, tries to read each tool's version, and gives you a clean report you can read in the terminal, save as JSON/CSV, or compare against an earlier scan.

DevCheck is strictly read-only — see Safety information.

Features

  • Scan the whole environment in one pass, or check a single tool by name.
  • Classify every tool as Installed, Not Installed, or Installed but version unavailable.
  • Clean, aligned table output in the terminal.
  • Export scan results to JSON or CSV.
  • Save each scan to local history and compare it against the previous scan to see what changed (newly installed tools, version bumps, tools that disappeared from PATH).
  • Graceful handling of missing tools, permission errors, command timeouts, unparsable version output, and unsupported commands — the app never crashes, no matter what is or isn't installed.
  • Interactive numbered CLI menu; no flags or arguments to memorize.

Supported tools

Tool Executable(s) checked Version flag(s) tried
Python python3, python --version
Git git --version
Node.js node --version
npm npm --version
Java java --version, -version
Java Compiler javac --version, -version
pip pip3, pip --version
VS Code code --version
Docker docker --version
Maven mvn --version, -version

The tool list lives in config.py — add, remove, or rename entries there without touching any other file.

Technologies used

  • Python 3 only — no third-party packages.
  • subprocess — safely runs each tool's version command with a timeout.
  • shutil.which() — locates executables on PATH without invoking a shell.
  • json / csv — report export and history storage.
  • pathlib — cross-platform file handling.
  • dataclasses / enum — typed, self-documenting data models.
  • unittest / unittest.mock — the test suite.

Installation

DevCheck requires only a Python 3 interpreter — nothing to install.

git clone https://github.com/<your-username>/devcheck.git
cd devcheck

(No pip install step is needed — see requirements.txt.)

Usage

Run the interactive CLI:

python main.py

You'll see a numbered menu:

================================
DEVCHECK
========

1. Full Environment Scan
2. Check a Specific Tool
3. View Previous Scan
4. Compare Scans
5. Export Report
6. Exit

Choose an option:
  • 1 — Full Environment Scan: checks every configured tool and prints a summary table. The result is automatically saved as the new "previous scan" for future comparisons.
  • 2 — Check a Specific Tool: prompts for a tool name (e.g. Docker) and prints its status, version, and full executable path.
  • 3 — View Previous Scan: reloads and prints the last saved scan from data/scan_history.json.
  • 4 — Compare Scans: shows what changed between the scan on disk before your most recent full scan and the new one (status changes, version bumps, tools gained or lost).
  • 5 — Export Report: runs a fresh scan and writes it to reports/scan_report.json, reports/scan_report.csv, or both.
  • 6 — Exit: quits the program.

Example output

================================
ENVIRONMENT SCAN
================

Tool              Status                          Version
Python            Installed                       3.12.4
Git               Installed                       2.46.0
Node.js           Installed                       22.5.1
npm               Installed                       10.8.2
Java              Installed                       21.0.4
Docker            Not Installed                   -
Maven             Not Installed                   -
VS Code           Installed                       1.92.0

============================================================
Installed: 7
Missing:   3
============================================================

Report format

Every JSON report (data/scan_history.json, reports/*.json) has this shape:

{
  "timestamp": "2026-08-23T14:02:11Z",
  "operating_system": "Linux",
  "results": [
    {
      "tool": "Python",
      "installed": true,
      "status": "Installed",
      "version": "3.12.4",
      "path": "/usr/bin/python3",
      "error": ""
    }
  ]
}
Field Meaning
timestamp UTC time the scan was taken (ISO-8601).
operating_system Windows, macOS, Linux, or whatever platform.system() reports.
tool Tool name, e.g. "Docker".
installed true/false shortcut for "not Not Installed".
status One of Installed, Not Installed, Installed but version unavailable.
version Parsed version string, or "-" if unavailable.
path Full path to the executable, or "-" if not found.
error Explanation when a version couldn't be read (empty string otherwise).

A sample report is included at reports/example_scan.json, and a sample saved scan is included at data/scan_history.json so you can see the format immediately without running a scan first.

CSV exports use the same fields as columns: tool, installed, status, version, path, error.

Cross-platform notes

DevCheck is written to run unmodified on Windows, macOS, and Linux:

  • Tool detection uses shutil.which(), which correctly understands PATHEXT on Windows (so python.exe, node.exe, etc. are found) and standard PATH lookup on macOS/Linux.
  • Some tools have platform-specific executable names (e.g. pip3 vs pip); DevCheck tries multiple candidate names per tool.
  • The operating system name shown in reports is normalized to Windows, macOS, or Linux regardless of the raw value Python reports.
  • No shell-specific syntax, path separators, or OS-only libraries are used.

Safety information

DevCheck never installs, uninstalls, modifies, updates, or configures any software. It only:

  1. Looks for executables on your PATH (read-only lookup).
  2. Runs each tool's own --version-style flag (a harmless, standard, read-only operation every one of these tools supports).
  3. Reads and writes files strictly inside the devcheck/data/ and devcheck/reports/ folders.

If a command fails, times out, or the process lacks permission to run it, DevCheck catches the error and reports it as Installed but version unavailable instead of crashing.

Project structure

devcheck/
│
├── main.py              # CLI entry point and menu
├── checker.py            # Tool detection and version-check logic
├── tool.py                # ToolResult / ToolStatus data model
├── version_parser.py      # Extracts version numbers from raw command output
├── reports.py              # Report building, table printing, JSON/CSV export
├── history.py               # Scan history save/load/compare
├── utils.py                  # OS name, timestamps, directory helpers
├── config.py                  # Tool definitions and settings
│
├── data/
│   └── scan_history.json       # Sample saved scan (overwritten by real scans)
│
├── reports/
│   └── example_scan.json        # Sample exported report
│
├── tests/
│   ├── test_checker.py
│   ├── test_version_parser.py
│   └── test_reports.py
│
├── README.md
├── requirements.txt
├── .gitignore
└── LICENSE

Testing

Run the full test suite with:

python -m unittest discover

The suite covers:

  • Tool detection when a tool is present, missing, or errors out.
  • Version string parsing across varied output formats.
  • Permission-error and timeout handling.
  • Report building and installed/missing summaries.
  • JSON export correctness.
  • CSV export correctness.

Future improvements

  • Optional JSON config file to let users add custom tools without editing config.py.
  • --tool / --export command-line flags for non-interactive/scripted use.
  • Colorized terminal output.
  • Keep a rolling history of more than one previous scan.
  • Additional tools (Rust/Cargo, Go, .NET SDK, Ruby, PHP, kubectl, etc.).

License

Released under the MIT License.

About

A Python CLI tool that checks installed developer tools, detects versions, and generates environment reports.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages