Brew Operations

Manage brew packages on mac/OSX. See https://brew.sh/

Facts used in these operations: brew.BrewCasks, brew.BrewPackages, brew.BrewTaps, brew.BrewVersion.

brew.cask_upgrade

Stateless operation

This operation will always execute commands and is not idempotent.

Upgrades all brew casks.

brew.cask_upgrade()

brew.casks

Add/remove/update brew casks.

brew.casks(casks=None, present=True, latest=False, upgrade=False)
  • casks: list of casks to ensure
  • present: whether the casks should be installed
  • latest: whether to upgrade casks without a specified version
  • upgrade: run brew cask upgrade before installing casks
Versions:
Cask versions can be pinned like brew: <pkg>@<version>.

Example:

brew.casks(
    name='Upgrade and install the latest cask',
    casks=["godot"],
    upgrade=True,
    latest=True,
)

brew.packages

Add/remove/update brew packages.

brew.packages(packages=None, present=True, latest=False, update=False, upgrade=False)
  • packages: list of packages to ensure
  • present: whether the packages should be installed
  • latest: whether to upgrade packages without a specified version
  • update: run brew update before installing packages
  • upgrade: run brew upgrade before installing packages
Versions:
Package versions can be pinned like brew: <pkg>@<version>.

Examples:

# Update package list and install packages
brew.packages(
    name='Install Vim and vimpager',
    packages=["vimpager", "vim"],
    update=True,
)

# Install the latest versions of packages (always check)
brew.packages(
    name="Install latest Vim",
    packages=["vim"],
    latest=True,
)

brew.tap

Add/remove brew taps.

brew.tap(src=None, present=True, url=None)
  • src: the name of the tap
  • present: whether this tap should be present or not
  • url: the url of the tap. See https://docs.brew.sh/Taps

Examples:

brew.tap(
    name="Add a brew tap",
    src="includeos/includeos",
)

# Just url is equivalent to
# `brew tap kptdev/kpt https://github.com/kptdev/kpt`
brew.tap(
    url="https://github.com/kptdev/kpt",
)

# src and url is equivalent to
# `brew tap example/project https://github.example.com/project`
brew.tap(
    src="example/project",
    url="https://github.example.com/project",
)

# Multiple taps
for tap in ["includeos/includeos", "ktr0731/evans"]:
    brew.tap(
        name={f"Add brew tap {tap}"},
        src=tap,
    )

brew.update

Stateless operation

This operation will always execute commands and is not idempotent.

Updates brew repositories.

brew.update()

brew.upgrade

Stateless operation

This operation will always execute commands and is not idempotent.

Upgrades all brew packages.

brew.upgrade()