Stamp your developer environment on any machine
Project description
๐ Imprint
Stamp your developer environment on any machine.
One command to snapshot everything โ dotfiles, VS Code extensions, packages, shell config, custom scripts.
One command to restore on any new machine.
# Clone the repository and install locally
git clone https://github.com/Hina/imprint.git
cd imprint
pip install .
The Problem
You have your machine perfectly set up. VS Code with 30 extensions. Your .zshrc with 50 aliases. Python, Node, custom scripts, fonts. Then you sit at a new machine and spend 3โ6 hours rebuilding everything from memory.
Imprint fixes this in two commands:
imp snapshot # Captures EVERYTHING on this machine
imp restore # Restores EVERYTHING on the new machine
Quick Start
On Your Current Machine
# In the Imprint source directory
pip install .
imp snapshot
This captures your complete environment into ~/.imprint/ and optionally pushes to your private GitHub repo.
On a New Machine
git clone https://github.com/Hina/imprint.git
cd imprint
pip install .
imp restore https://github.com/yourname/imprint-config
Done. Everything restored.
Day-to-Day
imp diff # See what's changed since last snapshot
imp update # Save changes and push
imp status # Quick overview of what's tracked
What Gets Captured
| Category | Details |
|---|---|
| Dotfiles | .zshrc, .bashrc, .gitconfig, .vimrc, .tmux.conf, .editorconfig, PowerShell profiles |
| VS Code | All extensions list + settings.json |
| Packages | pip (global), npm (global), apt / brew / winget |
| Shell | Type, version, framework (oh-my-zsh), theme, plugins, alias count |
| Git | user.name, user.email, editor, default branch |
| Scripts | Everything in ~/bin/ |
| System | Python version, Node version, Git version, OS info |
Tech Stack
| Layer | Technology |
|---|---|
| CLI | Click 8.x |
| Terminal UI | Rich (spinners, tables, colors) |
| Config | TOML (tomllib + tomli_w) |
| Git | GitPython |
| Platform | Linux, macOS, Windows, WSL |
Architecture
imprint/
โโโ cli.py โ Click CLI โ snapshot, restore, diff, update, status
โโโ config.py โ ImprintConfig โ manages ~/.imprint/
โโโ manifest.py โ environment.toml read/write
โโโ snapshot.py โ Orchestrates all collectors
โโโ restore.py โ Orchestrates all installers
โโโ diff.py โ Compare current vs saved
โโโ collectors/
โ โโโ system.py โ Python/Node/Git versions
โ โโโ dotfiles.py โ Find dotfiles in $HOME
โ โโโ vscode.py โ Extensions + settings.json
โ โโโ shell.py โ Shell type, framework, plugins
โ โโโ packages.py โ pip/npm/apt/brew/winget
โ โโโ git_config.py โ Git config values
โ โโโ scripts.py โ ~/bin/ scripts
โโโ installers/
โ โโโ dotfiles.py โ Symlink dotfiles
โ โโโ vscode.py โ Install extensions
โ โโโ packages.py โ Install packages
โ โโโ shell.py โ Shell setup guidance
โ โโโ scripts.py โ Restore ~/bin/
โโโ utils/
โโโ platform.py โ OS detection (Linux/macOS/Windows/WSL)
โโโ safety.py โ .imprintignore filtering
โโโ display.py โ Rich console helpers
โโโ git.py โ GitPython wrapper
Security
Imprint never captures sensitive files. The .imprintignore system blocks:
- SSH keys (
.ssh/id_*,*.pem,*.key) - Tokens and secrets (
*.token,*secret*,*api_key*) - Environment files (
.env,.env.*) - Cloud credentials (
.aws/credentials,.gcloud/,.kube/) - Shell history (
.bash_history,.zsh_history) - GPG keys (
.gnupg/)
These patterns are hard-coded and cannot be overridden.
Testing
pip install -e ".[dev]"
python -m pytest tests/ -v
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file imprint_cli-1.0.0.tar.gz.
File metadata
- Download URL: imprint_cli-1.0.0.tar.gz
- Upload date:
- Size: 35.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7878b82a565eb22c9881858e214f0ac6a74e0aa033ea8edbf2fbdc845ff86c86
|
|
| MD5 |
b9b352c7cea34791ca819e5604e1e2b7
|
|
| BLAKE2b-256 |
40c47b315199a251cc73bfe88a32f7d999d6b5ab143c872c15ec606d86114291
|
File details
Details for the file imprint_cli-1.0.0-py3-none-any.whl.
File metadata
- Download URL: imprint_cli-1.0.0-py3-none-any.whl
- Upload date:
- Size: 29.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3e6cb484236858667bfa8f309444bf37abdc57c370c25984b48afec3c4f9116
|
|
| MD5 |
40db7d0a1e20ec376ecb3204174ee4cf
|
|
| BLAKE2b-256 |
673776ae23331739b4c2e39dfa69828d8e69af9a8ac2bf6ebf0e2d36ddbd7e1d
|