Skip to content

Development

CtrlUserKnown edited this page Jul 21, 2026 · 1 revision

Development

dots is a Rust Cargo workspace.

Layout

Crate Role
crates/dots The dots binary: CLI, TUI screens, installer, symlink/link engine, config, and the bundled premade assets/.
crates/tui-core Shared TUI chrome — header/footer/description bars, color theme, and the flash-message model — used by the dots screens.

Key modules in crates/dots/src:

  • main.rs — CLI parsing (clap) and command dispatch; launches the TUI when run with no subcommand.
  • symlinks.rs / links.rs — the symlink engine and the links.toml manifest.
  • packages.rs — the DEPS dependency table and shell plugin list.
  • installer.rs — package-manager detection and premade config application.
  • aliases.rs — alias parsing, CRUD, and the built-in vs user alias sources.
  • network.rs — live network monitor (latency probe, DNS, VPN detection) for the dashboard.
  • update.rs — update checks and pulls.
  • config/settings.toml, the ~/.personal layer, and profile import/export.
  • tui/ — dashboard and per-screen views.

Build & test

cargo build --release                 # optimized binary at target/release/dots
cargo test --all                      # unit + integration tests
cargo clippy --all -- -D warnings     # lints (CI treats warnings as errors)
cargo fmt --all -- --check            # formatting check

There's also a shell integration test that CI runs:

bash tests/integration/test_setup.sh

Container test environment

An isolated, disposable test environment lives in test-env/ — Containerfiles plus a manage.sh helper for spinning up interactive and CI-style containers to exercise the installer and the tool without touching your real home directory. A manual QA checklist is in docs/manual-test-checklist.md.

Continuous integration

CI runs on both Linux and macOS via .github/workflows/ci.yml: tests, clippy, rustfmt --check, and the shell integration test. Releases are built by .github/workflows/release.yml.

Clone this wiki locally