close
The Wayback Machine - https://web.archive.org/web/20200917011351/https://github.com/tversteeg/emplace
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

README.md

emplace

Command-line tool to mirror installed software on multiple machines.

Build Status Downloads Version

Image

Features

  • Outputs a human-readable (RON) file to sync between machines: .emplace

  • Version control with git to automatically push & pull updates

  • Automatic prompt after installing a package

  • Integrates well with dotfiles repositories

  • Parses history file

  • Package managers supported:

    OS Package Manager
    ImageImage Apt
    ImageImageImage Nix
    Image Pacman
    Image RUA
    Image Yay
    Image Snap
    ImageImage Homebrew
    Image Chocolatey
    Image Scoop
    ImageImageImage Cargo
    ImageImageImage Rustup Component
    ImageImageImage Python Pip
    ImageImageImage Python Pip 3
    ImageImageImage Node Package Manager
  • Shells supported:

    Shell
    Image Bash
    Image Zsh
    Image Fish

Installation

Getting Started

  1. Install the emplace binary:

    Windows

    Scoop

    scoop install emplace

    Source

    Rust

    cargo install emplace
  2. Add the init script to your shell's config file:

    Bash

    Add the following to the end of ~/.bashrc:

    # ~/.bashrc
    
    source <(emplace init bash)

    Zsh

    Add the following to the end of ~/.zshrc:

    # ~/.zshrc
    
    eval "$(emplace init zsh)"

    Fish

    Add the following to the end of ~/.config/fish/config.fish:

    # ~/.config/fish/config.fish
    
    emplace init fish | source

Usage

Mirroring Packages

Invoke the supported package manager of choice using the command line in a normal way and you will automatically be prompted to mirror the package, for example:

cargo install topgrade
# -- or --
rustup component add rustfmt
# -- or --
sudo apt install meld
# -- or --
pacman -S zsh
# -- or --
rua install peek
# -- or --
yay -S thunar
# -- or --
sudo snap install scrcpy
# -- or --
npm install -g release
# -- or --
pip3 install --user termtosvg
# -- or --
choco install neovim
# -- or --
scoop install curl
# -- or --
nix-env -iA nixpkgs.nixfmt
# -- or --
brew install wget

Synchronizing On Another Machine

Just invoke emplace install, and you will be prompted with the packages to install:

emplace install

History Analysis

Invoke emplace history $HISTFILE or emplace history /path/to/history/file.
It will parse your history and prompt to select, which packages you want to synchronize.

Removing Synchronized Packages

Run emplace clean and select the packages you want to be cleaned, they won't be removed from your system.

Creating and modifying config files

Run emplace config --new to create a new config and configure the repository or emplace config --path to retrieve the path to the configuration file.

Contributors

Thanks goes to these wonderful people (emoji key):

Image
Logan Magee

πŸ’» πŸ›
Image
Vladimir

πŸ“¦ πŸ’» πŸ› 🚧 πŸ‘€
Image
Jozef HollΓ½

πŸ€”
Image
Oleksii Filonenko

πŸ’» πŸ“¦ πŸ‘€
Image
x0f5c3

πŸ’»
Image
Benjamin S. Leveritt

πŸ€” 🚧
Image
Michael Borejdo

πŸ€”

This project follows the all-contributors specification. Contributions of any kind welcome!

You can’t perform that action at this time.