
When determining macOS requirements for a cask, we may need to reference requirements from related on_system blocks (e.g., `on_monterey :or_older`, `on_ventura`, `on_sonoma :or_newer`) when `depends_on macos` isn't adequate. Sometimes casks specify different `depends_on macos` values in macOS on_system blocks but that value is only set when the cask is loaded in an environment that satisfies the on_system block's requirements. There are other casks that contain macOS on_system blocks and use `depends_on macos` outside of the on_system blocks but it may only use the macOS version of the lowest on_system block (e.g., `>= :monterey`), which isn't sufficient if the cask's values vary based on macOS version. To be able to simulate macOS versions that meet the requirements of all the on_system blocks in a cask, we need to collect the macOS requirements in a way that doesn't require OS simulation. This is also something that's easy to do in on_system methods, so this adds a `macos_requirements` array to `UsesOnSystem`, containing `MacOSRequirement` objects created from the cask's macOS on_system block conditions.
Library
This directory contains all the code run by the official brew
command in Homebrew
and all formulae (package descriptions) in taps (repositories containing formulae) in Taps
subdirectories.