The value of the appcast
stanza is a string, holding the URL for an appcast which provides information on future updates.
Example: atom.rb
There are a few different ways the appcast
can be determined:
-
If the app is distributed via GitHub releases, the
appcast
will be of the formhttps://github.com/{{user}}/{{project_name}}/releases.atom
. (Example:electron.rb
) -
If the app is distributed via GitLab releases, the
appcast
will be of the formhttps://gitlab.com/{{user}}/{{project_name}}/-/tags?format=atom
. (Example:grafx.rb
) -
The popular update framework Sparkle generally uses the
SUFeedURL
property inContents/Info.plist
inside.app
bundles. (Example:glyphs.rb
) -
Sourceforge projects follow the form
https://sourceforge.net/projects/{{project_name}}/rss
. A more specific page can be used as needed, pointing to a specific directory structure:https://sourceforge.net/projects/{{project_name}}/rss?path=/{{path_here}}
. (Example:seashore.rb
) -
An appcast can be any URL hosted by the app’s developer that changes every time a new release is out or that contains the version number of the current release (e.g. a download HTML page). Webpages that only change on new version releases are preferred, as are sites that do not contain previous version strings (i.e. avoid changelog pages if the download page contains the current version number but not older ones). (Example:
razorsql.rb
)
The find-appcast
script is able to identify some of these. Run it with "$(brew --repository)/Library/Taps/homebrew/homebrew-cask/developer/bin/find-appcast" '{{/path/to/software.app}}'
.
key | value |
---|---|
configuration: |
a custom string for brew cask audit --appcast {{cask_file}} to check against. |
Example of using configuration
: hwsensors.rb
The main casks repo only accepts submissions for stable versions of software (and documented exceptions), but it still gets pull requests for unstable versions. By checking the submitted version
against the contents of an appcast, we can better detect these invalid cases.
But if a version
is 6.26.1440
and the appcast’s contents only show 6.24
, the check for “is version
in the appcast feed” will fail. With configuration
, the check is told to “look for this string instead of version
”. In the example, configuration: version.major_minor
is saying “look for 6.24
”, making the check succeed.