Skip to main content

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

imprint_cli-1.0.0.tar.gz (35.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

imprint_cli-1.0.0-py3-none-any.whl (29.1 kB view details)

Uploaded Python 3

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

Hashes for imprint_cli-1.0.0.tar.gz
Algorithm Hash digest
SHA256 7878b82a565eb22c9881858e214f0ac6a74e0aa033ea8edbf2fbdc845ff86c86
MD5 b9b352c7cea34791ca819e5604e1e2b7
BLAKE2b-256 40c47b315199a251cc73bfe88a32f7d999d6b5ab143c872c15ec606d86114291

See more details on using hashes here.

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

Hashes for imprint_cli-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c3e6cb484236858667bfa8f309444bf37abdc57c370c25984b48afec3c4f9116
MD5 40db7d0a1e20ec376ecb3204174ee4cf
BLAKE2b-256 673776ae23331739b4c2e39dfa69828d8e69af9a8ac2bf6ebf0e2d36ddbd7e1d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page