Skip to content
CAI
Software that uses CAICheck a score

buo/homebrew-cask-upgrade

50.8

Weak · 19 September 2026

990

lines of production code

Ruby

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a command-line utility for managing Homebrew Cask applications, designed to streamline software upgrades on macOS. It provides capabilities for upgrading casks, pinning specific applications to prevent updates, and checking for outdated versions without installing them. The tool supports both interactive and non-interactive modes, allowing users to selectively upgrade applications or run automated reports.

Features

Introduce cask pinning and livecheck commands

This change adds new capabilities to manage cask update preferences and check for updates. Users can now pin specific casks to prevent them from being upgraded, with commands to add, list, remove, export, and load pinned casks from a file. Additionally, a new livecheck command allows users to check for outdated casks without performing an upgrade, and the upgrade command now supports interactive mode where users can pin apps during the update process.

lib/bcu/command · high confidence

New \`brew cu\` command with pinning and interactive mode

Users can now use the \brew cu\ command to upgrade Homebrew Cask applications, featuring a new interactive mode for selective upgrades, the ability to pin specific casks to prevent automatic updates, and options to control Homebrew updates, cleanup, and verbosity. A companion non-interactive wrapper script is also provided to facilitate standard \brew cask upgrade\ workflows.

cmd · high confidence

Behavioural changes

Improved cask resolution and tabular output formatting

The tool now manually loads casks to avoid iteration errors when retrieving installed apps, ensuring more reliable detection of outdated software. Output is presented in a responsive, colorized table that shortens long version strings and conditionally displays detailed information (such as full versions and URLs) only when the verbose flag is enabled, improving readability on smaller terminals.

lib/extend · high confidence

Migrate from legacy Hbc API to Homebrew External Command support

The tool has been rewritten to utilize Homebrew's External Command support, replacing the previous standalone script (lib/brew-cask-upgrade.rb) with a new entry point (lib/bcu.rb). This change removes the direct dependency on the legacy 'hbc' library and its associated vendor forks, instead loading Homebrew's internal cask libraries via the load path and delegating execution to specific command modules (e.g., Upgrade, Pin, Livecheck) based on user arguments.

lib · high confidence

New option parsing and command structure for Homebrew Cask Updater

The tool now uses a dedicated options parser (\lib/bcu/options.rb\) to handle command-line arguments, introducing support for new capabilities such as pinning/unpinning casks (\--pin\, \--unpin\, \--pinned\), including Mac App Store applications (\--include-mas\), and running in report-only mode (\--report-only\). Existing behaviors are adjusted to support flags like \--cleanup\, \--no-brew-update\, \--no-quarantine\, and interactive installation, while deprecated short options for pinning (\-p\, \-u\) are blocked in favor of the new command-based syntax.

lib/bcu · high confidence

Shell script wrapper for Homebrew cask-upgrade

The bin/brew-cask-upgrade script has been rewritten from a Ruby implementation to a shell script that invokes the Homebrew cask-upgrade command. It now checks for the existence of the brew executable and attempts to run the upgrade; if the command fails, it automatically taps the buo/cask-upgrade repository and retries the upgrade operation.

bin · high confidence

Dependencies

Update to version 2.0.2 with Ruby 4.0 requirement

The brew-cask-upgrade gem has been updated to version 2.0.2, which now requires Ruby version 4.0.0 or higher. This change also includes minor metadata updates such as adding a frozen string literal directive and specifying multi-factor authentication requirements for RubyGems.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 51.

Lenses

  • Code Health 96
  • Architecture 69
  • Maturity 52
  • Readiness 36
  • Security 78

Changes since last survey

  • 300 commits — 246 feature/other, 54 fixes

By area

  • lib/bcu — 78 commits
  • .github/workflows — 68 commits
  • (root) — 62 commits
  • lib/bcu.rb — 45 commits
  • lib/extend — 29 commits
  • cmd/brew-cu.rb — 8 commits
  • (repo) — 6 commits
  • .github/dependabot.yml — 3 commits
  • cmd/brewcask-upgrade — 1 commit

Notable commits

  • fix: Attempt to fix #205
  • fix: CI: pin load - fix execution dir for comparison
  • fix: Fix "can't modify frozen Array" crash on brew update
  • fix: Fix 'invalid characters' error by filtering hidden directories
  • fix: Fix CI for MacOS 15
  • fix: Fix RuboCop style violations
  • fix: Fix RuboCop violation: Use guard clause in cleanup method
  • fix: Fix Rubocop errors
  • fix: Fix Style/PartitionInsteadOfDoubleSelect: use partition instead of select/reject
  • fix: Fix pinned command
  • fix: Fix brew cu --help mangling glob asterisks
  • fix: Fix call to deleted method
  • fix: Fix casks from third-party taps being resolved against homebrew/cask
  • fix: Fix code style violation
  • fix: Fix code style violations
  • fix: Fix codestyle
  • fix: Fix deprecation notice
  • fix: Fix empty app selection cases
  • fix: Fix eror rescue
  • fix: Fix error msg during cleanup
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

buo/homebrew-cask-upgrade was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 38f5e9898c83991accab3a70770c0defcb164c9f — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.