Skip to content

Latest commit

 

History

History
31 lines (17 loc) · 3.44 KB

File metadata and controls

31 lines (17 loc) · 3.44 KB

appcast

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 form https://github.com/{{user}}/{{project_name}}/releases.atom. (Example: electron.rb)

  • If the app is distributed via GitLab releases, the appcast will be of the form https://gitlab.com/{{user}}/{{project_name}}/-/tags?format=atom. (Example: grafx.rb)

  • The popular update framework Sparkle generally uses the SUFeedURL property in Contents/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}}'.

Parameters

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.