Metadata-Version: 2.4
Name: dotsync-py
Version: 0.1.0
Summary: Fleet-style dotfiles manager with push cascading and status dashboard
Project-URL: Homepage, https://github.com/scott-shef/dotsync
Project-URL: Repository, https://github.com/scott-shef/dotsync
Project-URL: Issues, https://github.com/scott-shef/dotsync/issues
Author-email: Scott Sheffield <scott@shef.us>
License-Expression: MIT
License-File: LICENSE
Keywords: cli,dotfiles,fleet,sync
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.11
Requires-Dist: click>=8.1
Requires-Dist: rich>=13.0
Requires-Dist: tomli-w>=1.0
Provides-Extra: dev
Requires-Dist: pytest-mock>=3.12; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Description-Content-Type: text/markdown

# dotsync

Fleet-style dotfiles manager with push cascading and status dashboard.

## What makes it different

- **Fleet dashboard** — see the sync status of all your machines at once
- **Push cascading** — push from one machine, auto-pull on all others via SSH
- **New-machine bootstrap** — SSH key setup, GitHub key, clone, link, brew
- **Simple config** — one TOML file, no templating engine

## Install

```bash
pipx install dotsync
```

## Quick start

```bash
# Bootstrap a new machine (generates SSH key, clones dotfiles, links, brews)
dotsync setup

# See fleet status
dotsync status

# Push changes to all machines
dotsync push

# Pull latest on this machine
dotsync pull

# Manage fleet
dotsync add work-laptop --ssh-alias work
dotsync remove old-desktop

# Retry failed brew packages
dotsync pending
```

## Config

dotsync reads `~/.dotfiles/.dotsync.toml`:

```toml
[dotsync]
repo = "git@github.com:you/dotfiles.git"
dotfiles_path = "~/.dotfiles"

[links]
".zshrc" = ".zshrc"
".zprofile" = ".zprofile"
".gitconfig" = ".gitconfig"
"ssh/config" = ".ssh/config"

[brew]
brewfile = "Brewfile"
pending_file = ".brew-pending"

[[machines]]
name = "work-mini"
ssh_alias = "work-mini"

[[machines]]
name = "home-mini"
ssh_alias = "home-mini"
```

## Status

Alpha — core scaffolding complete, implementation in progress.

## License

MIT
