cargo-port v0.0.1
Initial release of cargo-port — a TUI for inspecting and managing Rust projects.
Project Discovery & Organization
- Recursively scans a directory tree to discover Rust projects and optionally non-Rust git repos
- Organizes projects into a hierarchical tree: workspaces, member groups, and individual packages
- Detects git worktrees and nests them under their primary checkout
- Identifies vendored crates
- Groups workspace members by subdirectory with configurable inline dirs that flatten into the parent
- Configurable directory exclusions
Per-Project Metadata
- Parses
Cargo.tomlfor name, version, description, and workspace status - Detects project types: binary, library, proc-macro, build script
- Auto-discovers examples (grouped by subdirectory), benchmarks, and test targets
- Computes disk usage per project with percentile-based color gradient (green to red)
- Detects git origin type: local (no remote), clone, or fork (has upstream)
- Extracts branch, owner, repo URL, first commit date, and last commit date
- Fetches latest stable version from crates.io
- Fetches GitHub star count
GitHub Actions CI Integration
- Fetches recent CI runs per project via
ghCLI with configurable run count - Displays per-job status across categorized columns (fmt, taplo, clippy, mend, build, test, bench)
- Shows wall-clock duration for each run
- Disk-based cache with merge strategy that works offline with cached data
- Pagination to load older runs on demand
- Open any run directly in the browser
Interactive TUI
- Project list (left panel): expandable/collapsible tree with columns for disk usage, CI status, origin type, and language icon
- Detail panel (right, top): three-column view — Package (name, path, types, disk, version, description, crates.io version, vendored crates), Git (branch, origin, owner, repo, stars, inception/latest dates), and Targets (runnable binaries, examples, benchmarks)
- CI/Output panel (right, bottom): CI run history table or live output from a running target
- Status bar: context-sensitive keyboard shortcut hints
Navigation & Search
- Keyboard-driven navigation with expand/collapse, Home/End, Tab to cycle panels
- Universal finder (
/): fuzzy search popup across all projects, binaries, examples, and benchmarks with color-coded type, project, branch, and directory context - Project list filtering with real-time fuzzy matching and match count
Actions
- Open any project in your configured editor
- Open a project's
Cargo.tomlin your editor from any Cargo.toml-derived field in the detail panel - Run binaries, examples, and benchmarks in debug or release mode with live output streaming
- Kill running processes and view output history
- Run
cargo cleanwith confirmation dialog - Rescan the filesystem
- Clear cached CI data per project
CLI Modes
cargo-port list [--json] [--members]: table or JSON output of discovered projectscargo-port ci [--branch] [-n count] [--json]: CI run history for a specific repo- Default (no subcommand): launches the TUI
Configuration
- Persistent config at platform-specific path, auto-created on first run
- In-TUI settings popup (
s) for: invert scroll, CI run count, inline dirs, exclude dirs, include non-Rust, and editor - All settings persist to
config.toml
Resilience
- Offline-first: CI data served from cache when network is unavailable, with a one-time notification
- No panics:
unwrap()denied project-wide via clippy config