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(**kwargs)
Note:
This operation also inherits all global arguments.

brew.casks

Add/remove/update brew casks.

brew.casks(casks: str | list[str] | None=None, present=True, latest=False, upgrade=False, **kwargs)
  • 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,
)
Note:
This operation also inherits all global arguments.

brew.packages

Add/remove/update brew packages.

brew.packages(
    packages: str | list[str] | None=None, present=True, latest=False, update=False,
    upgrade=False, **kwargs,
)
  • 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,
)
Note:
This operation also inherits all global arguments.

brew.tap

Add/remove brew taps.

brew.tap(src: str | None=None, present=True, url: str | None=None, **kwargs)
  • 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,
    )
Note:
This operation also inherits all global arguments.

brew.update

Stateless operation

This operation will always execute commands and is not idempotent.

Updates brew repositories.

brew.update(**kwargs)
Note:
This operation also inherits all global arguments.

brew.upgrade

Stateless operation

This operation will always execute commands and is not idempotent.

Upgrades all brew packages.

brew.upgrade(**kwargs)
Note:
This operation also inherits all global arguments.