Metadata-Version: 2.4
Name: dotpilot
Version: 0.1.0
Summary: Symlink-based dotfiles manager with auto-sync and system bootstrapping
Author: Ryan Munro
Author-email: Ryan Munro <500774+munro@users.noreply.github.com>
License-Expression: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: System :: Installation/Setup
Classifier: Topic :: System :: Systems Administration
Classifier: Typing :: Typed
Requires-Dist: click>=8.0
Requires-Dist: rich>=13.0
Requires-Python: >=3.12
Project-URL: Homepage, https://github.com/Submersible/dotpilot
Project-URL: Issues, https://github.com/Submersible/dotpilot/issues
Project-URL: Repository, https://github.com/Submersible/dotpilot
Description-Content-Type: text/markdown

# dotpilot

Symlink-based dotfiles manager with auto-sync and system bootstrapping.

## Install

```bash
uv tool install dotpilot
```

Or with pip:

```bash
pip install dotpilot
```

## Quick start

```bash
dotpilot status              # Show untracked dotfiles + sync status
dotpilot install --apply     # Symlink dotfiles into ~/
dotpilot sync --apply        # Fetch & fast-forward merge from origin
```

## Commands

All commands default to `~/dotfiles`. Override with `--dotfiles DIRECTORY`.

| Command | Description |
|---|---|
| `dotpilot install` | Symlink dotfiles into ~/ (dry-run by default) |
| `dotpilot sync` | Fetch and fast-forward merge from origin |
| `dotpilot track <path>` | Start tracking a dotfile or directory |
| `dotpilot untracked` | List untracked dotfiles in ~/ and ~/.config |
| `dotpilot status` | Show untracked dotfiles and sync status |
| `dotpilot cron` | Install or remove the auto-sync cron job |
| `dotpilot bootstrap` | Install system packages for a fresh machine |

All mutating commands are **dry-run by default** — pass `--apply` to execute.

## How it works

dotpilot manages your dotfiles as symlinks. Your dotfiles live in a git repo (default `~/dotfiles`), and dotpilot creates symlinks from `~/` pointing into the repo.

- **Root-level dotfiles** (e.g. `.zshrc`) are symlinked directly
- **`.config/` directories** (e.g. `.config/nvim`) are symlinked as directories
- **`.overwrite` files** are copied instead of symlinked (for files that can't be symlinks)
- **`.delete` files** remove the corresponding file from `~/`
- **`track`** copies a file into the dotfiles repo and replaces the original with a symlink

## License

MIT
