Skip to content

Justintime50/alchemist

Repository files navigation

Alchemist

Update, backup, and administer your Homebrew or Chocolatey instance.

Build Status Coverage Status Release Licence

Showcase

Bubble bubble, toil and brew...

Alchemist Backup

Alchemist can backup your entire Homebrew (macOS and Linux) or Chocolatey (Windows) instance. It does this by retrieving the list of installed packages and creating a script that can be run to restore your entire Homebrew or Chocolatey instance.

alchemist --backup

If you run into troubles backing up your Homebrew instance, it's recommended to try running Alcehmist with the --update flag first.

Alchemist Update

macOS and Linux

Alchemist automates the entire Homebrew update process including:

  1. Updating available taps and formula references
  2. Upgrading packages
  3. Upgrading casks
  4. Cleaning up old/stale taps and formula
  5. Checking for problems with your Homebrew instance

Windows

Alchemist will update all of your Chocolatey packages:

alchemist --update

Install

macOS and Linux

# Setup the tap
brew tap justintime50/formulas

# Install the tool
brew install alchemist

Windows

Download the Windows binary from the releases page.

Usage

Logs

Alchemist saves logs to ~/alchemist/update/alchemist-update.log. Logs by default are kept on the system for 90 days and are automatically rotated for you once their size exceeds 1mb or the logs become older than 90 days.

Restore Scripts

Scripts generated from the backup functionality of Alchemist live at ~/alchemist/backup. Simply run brew bundle --file path/to/Brewfile or path/to/restore-choco-packages.bat to restore your packages.

Usage:
    alchemist --update

Options:
    --backup
        Backup your Homebrew instance.
    --update
        Update your Homebrew instance.
    --force
        Forces actions such as backing up even when there are errors. (Brew only)
    --greedy
        Force updates to casks that have auto-update capabilities in their respective UIs.

Development

# Build the project
make build

# Install the project globally from source
make install

# Clean the executables
make clean

# Test the project
make test

## Get test coverage
make coverage

# Lint the project (requires golangci-lint be installed)
make lint