diff --git a/Casks/accord.rb b/Casks/accord.rb index 39e989598b2b7..f80e965f85090 100644 --- a/Casks/accord.rb +++ b/Casks/accord.rb @@ -9,7 +9,7 @@ livecheck do url :url - regex(%r{href=.*?/tag/v?\.?(\d+(?:\.\d+)+)["' >]}i) + regex(/v?\.?(\d+(?:\.\d+)+)/i) strategy :github_latest end diff --git a/Casks/bonitastudiocommunity.rb b/Casks/bonitastudiocommunity.rb index 8d122ee041da5..606bdc41a774c 100644 --- a/Casks/bonitastudiocommunity.rb +++ b/Casks/bonitastudiocommunity.rb @@ -10,7 +10,7 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/[^"' >]*?(\d+(?:[.-]\d+)+(?:-\w+)?)["' >]}i) + regex(/(\d+(?:[.-]\d+)+(?:-\w+)?)/i) strategy :github_latest end diff --git a/Casks/btcpayserver-vault.rb b/Casks/btcpayserver-vault.rb index 284ab3cab9791..7babbd5278344 100644 --- a/Casks/btcpayserver-vault.rb +++ b/Casks/btcpayserver-vault.rb @@ -9,7 +9,7 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/Vault/v?(\d+(?:\.\d+)+)["' >]}i) + regex(/v?(\d+(?:\.\d+)+)/i) strategy :github_latest end diff --git a/Casks/camera-live.rb b/Casks/camera-live.rb index 41d8a4a2e8c50..eb6b7eafab8ca 100644 --- a/Casks/camera-live.rb +++ b/Casks/camera-live.rb @@ -9,7 +9,7 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/v?(\d+)["' >]}i) + regex(/v?(\d+)/i) strategy :github_latest end diff --git a/Casks/chrysalis.rb b/Casks/chrysalis.rb index f6d7fce5dbd36..da0f28b6076c9 100644 --- a/Casks/chrysalis.rb +++ b/Casks/chrysalis.rb @@ -12,7 +12,7 @@ # tag in a different repository, which led to an incorrect version match. livecheck do url :url - regex(%r{href=.*?/Chrysalis/releases/tag/v?(\d+(?:\.\d+)+)["' >]}i) + regex(/v?(\d+(?:\.\d+)+)/i) strategy :github_latest end diff --git a/Casks/desmume.rb b/Casks/desmume.rb index 06f24ad6491ea..205df8d4e9054 100644 --- a/Casks/desmume.rb +++ b/Casks/desmume.rb @@ -10,9 +10,9 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/[^"' >]*?(\d+(?:[._-]\d+)+[a-z]?)["' >]}i) - strategy :github_latest do |page, regex| - page.scan(regex).map { |match| match[0].tr("_", ".") } + regex(/^(?:release[._-])?(\d+(?:[._-]\d+)+[a-z]?)$/i) + strategy :github_latest do |json, regex| + json["tag_name"]&.scan(regex)&.map { |match| match[0].tr("_", ".") } end end diff --git a/Casks/elk.rb b/Casks/elk.rb index a5b264146de31..33c63ec68a592 100644 --- a/Casks/elk.rb +++ b/Casks/elk.rb @@ -12,7 +12,7 @@ livecheck do url :url - regex(%r{href=.*?/tag/elk[._-]native[._-]v?(\d+(?:\.\d+)+)["' >]}i) + regex(/elk[._-]native[._-]v?(\d+(?:\.\d+)+)/i) strategy :github_latest end diff --git a/Casks/extraterm.rb b/Casks/extraterm.rb index 08b17286ba1e1..9998c9b82e02f 100644 --- a/Casks/extraterm.rb +++ b/Casks/extraterm.rb @@ -8,9 +8,13 @@ desc "Swiss army chainsaw of terminal emulators" homepage "https://extraterm.org/" + # As of writing, upstream marks all releases on GitHub as "pre-release". + # This should be updated to use the `GithubLatest` strategy if/when stable + # versions become available. livecheck do - url :url - strategy :github_latest + url "https://github.com/sedwards2009/extraterm/releases" + regex(%r{href=["']?[^"' >]*?/tag/v?(\d+(?:\.\d+)+)["' >]}i) + strategy :page_match end app "ExtratermQt.app" diff --git a/Casks/firefly.rb b/Casks/firefly.rb index 1b622e178c5a6..ef1d2242c9cf3 100644 --- a/Casks/firefly.rb +++ b/Casks/firefly.rb @@ -10,7 +10,7 @@ livecheck do url :url - regex(%r{href=.*?/tag/desktop[._-]v?(\d+(?:\.\d+)+)["' >]}i) + regex(/desktop[._-]v?(\d+(?:\.\d+)+)/i) strategy :github_latest end diff --git a/Casks/flame.rb b/Casks/flame.rb index 1ecf49538967a..6247d46b72178 100644 --- a/Casks/flame.rb +++ b/Casks/flame.rb @@ -11,9 +11,9 @@ livecheck do url :url - regex(%r{href=.*?/tag/v?(\d+(?:\.\d+){1,2})(?:\s*[(._-](\d+)\)?)?["' >]}i) - strategy :github_latest do |page, regex| - page.scan(regex).map do |match| + regex(/^v?(\d+(?:\.\d+)+)(?:\((\d+)\))?$/i) + strategy :github_latest do |json, regex| + json["tag_name"]&.scan(regex)&.map do |match| match[1].present? ? "#{match[0]},#{match[1]}" : match[0] end end diff --git a/Casks/fvim.rb b/Casks/fvim.rb index 86d54e135405a..84e68940f9305 100644 --- a/Casks/fvim.rb +++ b/Casks/fvim.rb @@ -9,11 +9,11 @@ livecheck do url :url - strategy :github_latest do |page| - match = page.match(%r{href=.*?/tag/v?(\d+(?:\.\d+)+)\+(g?\h+)["' >]}i) - next if match.blank? - - "#{match[1]},#{match[2]}" + regex(/^v?(\d+(?:\.\d+)+)(?:[+-](g?\h+))?$/i) + strategy :github_latest do |json, regex| + json["tag_name"]&.scan(regex)&.map do |match| + match[1].present? ? "#{match[0]},#{match[1]}" : match[0] + end end end diff --git a/Casks/home-assistant.rb b/Casks/home-assistant.rb index 6e38f0cdb45a0..d531b5e740bb9 100644 --- a/Casks/home-assistant.rb +++ b/Casks/home-assistant.rb @@ -8,16 +8,11 @@ desc "Companion app for Home Assistant home automation software" homepage "https://companion.home-assistant.io/" - # We use the GitHubLatest strategy as Home Assistant also tags pre-releases, and - # we also specify a regex since tags are unconventional, e.g. `2021.2.2/2021.55`, - # and use a custom block to replace the slash with a comma in the resulting version livecheck do url :url - strategy :github_latest do |page| - version = page.match(%r{href=".+/tree/(?:mac|release)/([\d.]+)/([\d.]+)"}i) - next if version.blank? - - "#{version[1]},#{version[2]}" + regex(%r{^(?:mac|release)/(\d+(?:\.\d+)+)/(\d+(?:\.\d+)*)}i) + strategy :github_latest do |json, regex| + json["tag_name"]&.scan(regex)&.map { |match| "#{match[0]},#{match[1]}" } end end diff --git a/Casks/hydrus-network.rb b/Casks/hydrus-network.rb index ec150ae6e189b..734638a2aff47 100644 --- a/Casks/hydrus-network.rb +++ b/Casks/hydrus-network.rb @@ -10,7 +10,7 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tree/v?(\d+(?:\.\d+)*[a-z]?)[^"' >]*?["' >]}i) + regex(/v?(\d+(?:\.\d+)*[a-z]?)/i) strategy :github_latest end diff --git a/Casks/josm.rb b/Casks/josm.rb index c7a0f6ba563d3..e9474e7b3a960 100644 --- a/Casks/josm.rb +++ b/Casks/josm.rb @@ -10,7 +10,7 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tree/\D*?(\d+(?:\.\d+)*)[^"' >]*?["' >]}i) + regex(/\D*?(\d+(?:\.\d+)*)/i) strategy :github_latest end diff --git a/Casks/jupyterlab.rb b/Casks/jupyterlab.rb index 95c0acb0a5c23..fd562b26b4c76 100644 --- a/Casks/jupyterlab.rb +++ b/Casks/jupyterlab.rb @@ -12,7 +12,7 @@ livecheck do url :url - regex(%r{href=.*?/tag/v?(\d+(?:[.-]\d+)+)["' >]}i) + regex(/v?(\d+(?:[.-]\d+)+)/i) strategy :github_latest end diff --git a/Casks/lbry.rb b/Casks/lbry.rb index c146084542bd5..477c06921da2e 100644 --- a/Casks/lbry.rb +++ b/Casks/lbry.rb @@ -10,7 +10,7 @@ livecheck do url :url - regex(%r{href=.*?/lbry-desktop/releases/tag/v?(\d+(?:\.\d+)+)["' >]}i) + regex(/v?(\d+(?:\.\d+)+)/i) strategy :github_latest end diff --git a/Casks/mambaforge.rb b/Casks/mambaforge.rb index 446cbbe7b0365..52d903a53113e 100644 --- a/Casks/mambaforge.rb +++ b/Casks/mambaforge.rb @@ -12,7 +12,7 @@ livecheck do url :url - regex(%r{href=.*?/tag/v?(\d+(?:[._-]\d+)+)["' >]}i) + regex(/v?(\d+(?:[._-]\d+)+)/i) strategy :github_latest end diff --git a/Casks/manyverse.rb b/Casks/manyverse.rb index 72e2d65353056..84d422b062027 100644 --- a/Casks/manyverse.rb +++ b/Casks/manyverse.rb @@ -10,7 +10,7 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/v?(\d+(?:\.\d+)+-beta)["' >]}i) + regex(/v?(\d+(?:\.\d+)+-beta)/i) strategy :github_latest end diff --git a/Casks/miniforge.rb b/Casks/miniforge.rb index 1fc75ec1731ca..7dd2411b8e9b2 100644 --- a/Casks/miniforge.rb +++ b/Casks/miniforge.rb @@ -12,7 +12,7 @@ livecheck do url :homepage - regex(%r{href=.*?/tag/v?(\d+(?:[.-]\d+)+)["' >]}i) + regex(/v?(\d+(?:[.-]\d+)+)/i) strategy :github_latest end diff --git a/Casks/n1ghtshade.rb b/Casks/n1ghtshade.rb index d4586c7bbd8cc..95654e9db9fe4 100644 --- a/Casks/n1ghtshade.rb +++ b/Casks/n1ghtshade.rb @@ -9,7 +9,7 @@ livecheck do url :url - regex(%r{href=.*?/tag/v?([\w._-]+)["' >]}i) + regex(/v?([\w._-]+)/i) strategy :github_latest end diff --git a/Casks/obs-websocket.rb b/Casks/obs-websocket.rb index 8bade01808dcd..4e2b17e403419 100644 --- a/Casks/obs-websocket.rb +++ b/Casks/obs-websocket.rb @@ -7,9 +7,13 @@ desc "Remote-control OBS Studio through WebSockets" homepage "https://github.com/obsproject/obs-websocket" + # Upstream has published releases for two different major versions, so the + # "latest" release may be for an older major version. Unless/until this is + # resolved, we have to check more than just the "latest" release. livecheck do - url :url - strategy :github_latest + url "https://github.com/obsproject/obs-websocket/releases?q=prerelease%3Afalse" + regex(%r{href=["']?[^"' >]*?/tag/v?(\d+(?:\.\d+)+)[^"' >]*?["' >]}i) + strategy :page_match end pkg "obs-websocket-#{version}-macOS.pkg" diff --git a/Casks/only-switch.rb b/Casks/only-switch.rb index 21db8d2dda50a..6af23f03eb68f 100644 --- a/Casks/only-switch.rb +++ b/Casks/only-switch.rb @@ -9,7 +9,7 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/release[._-]v?(\d+(?:\.\d+)+)["' >]}i) + regex(/release[._-]v?(\d+(?:\.\d+)+)/i) strategy :github_latest end diff --git a/Casks/onlyoffice.rb b/Casks/onlyoffice.rb index 0e7f756a3b78b..9c8e45baac91d 100644 --- a/Casks/onlyoffice.rb +++ b/Casks/onlyoffice.rb @@ -13,7 +13,7 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/[^"' >]*?(\d+(?:\.\d+)+)["' >]}i) + regex(/(\d+(?:\.\d+)+)/i) strategy :github_latest end diff --git a/Casks/openrocket.rb b/Casks/openrocket.rb index f3aacc0c0739c..c465bc98bf813 100644 --- a/Casks/openrocket.rb +++ b/Casks/openrocket.rb @@ -13,7 +13,7 @@ livecheck do url :url - regex(%r{href=.*?/tag/v?(?:release)?[._-]?(\d+(?:\.\d+)+)["'>]}i) + regex(/v?(?:release)?[._-]?(\d+(?:\.\d+)+)/i) strategy :github_latest end diff --git a/Casks/outline-manager.rb b/Casks/outline-manager.rb index d016c64a9bae2..c18435c77aa91 100644 --- a/Casks/outline-manager.rb +++ b/Casks/outline-manager.rb @@ -10,7 +10,7 @@ livecheck do url :stable - regex(%r{href=["']?[^"' >]*?/tag/(?:manager[._-])?v?(\d+(?:\.\d+)+)["' >]}i) + regex(/(?:manager[._-])?v?(\d+(?:\.\d+)+)/i) strategy :github_latest end diff --git a/Casks/pingnoo.rb b/Casks/pingnoo.rb index e291eaa6b81c1..1d7ea254eee4a 100644 --- a/Casks/pingnoo.rb +++ b/Casks/pingnoo.rb @@ -10,7 +10,7 @@ livecheck do url :url - regex(%r{href=.*?/tag/v?(\d+(?:\.\d+)+-\w+)["' >]}i) + regex(/v?(\d+(?:\.\d+)+-\w+)/i) strategy :github_latest end diff --git a/Casks/plover.rb b/Casks/plover.rb index 289bec4805614..1649ee54a4a3d 100644 --- a/Casks/plover.rb +++ b/Casks/plover.rb @@ -10,7 +10,7 @@ livecheck do url :url - regex(%r{href=.*?/tag/v?(\d+(?:\.\d+)+[\w.]+)["' >]}i) + regex(/v?(\d+(?:\.\d+)+[\w.]+)/i) strategy :github_latest end diff --git a/Casks/processing.rb b/Casks/processing.rb index 4cefd23cb9c28..69f59d2a258d5 100644 --- a/Casks/processing.rb +++ b/Casks/processing.rb @@ -13,10 +13,9 @@ livecheck do url :url - regex(%r{href=.*?tree/processing[._-](\d+)[._-]v?(\d+(?:\.\d+)+)}i) - strategy :github_latest do |page| - page.scan(regex) - .map { |match| "#{match[1]},#{match[0]}" } + regex(/^processing[._-](\d+(?:\.\d+)*)[@_-](\d+(?:\.\d+)+)$/i) + strategy :github_latest do |json, regex| + json["tag_name"]&.scan(regex)&.map { |match| "#{match[1]},#{match[0]}" } end end diff --git a/Casks/ricochet-refresh.rb b/Casks/ricochet-refresh.rb index 6b8d28cfafe33..2944fe0c93f94 100644 --- a/Casks/ricochet-refresh.rb +++ b/Casks/ricochet-refresh.rb @@ -10,7 +10,7 @@ livecheck do url "https://github.com/blueprint-freespeech/ricochet-refresh/releases" - regex(%r{href=.*?/tag/v?(\d+(?:\.\d+)+)[-"' >]}i) + regex(/v?(\d+(?:\.\d+)+)/i) strategy :github_latest end diff --git a/Casks/sequel-ace.rb b/Casks/sequel-ace.rb index 1eb1583772bc2..228b43da4ee26 100644 --- a/Casks/sequel-ace.rb +++ b/Casks/sequel-ace.rb @@ -9,11 +9,11 @@ livecheck do url :url - strategy :github_latest do |page| - match = page.match(%r{href=.*?/tag/production/v?(\d+(?:\.\d+)+)-(\d+)["' >]}i) - next if match.blank? - - "#{match[1]},#{match[2]}" + regex(%r{^production/v?(\d+(?:\.\d+)+)(?:-(\d+))?}i) + strategy :github_latest do |json, regex| + json["tag_name"]&.scan(regex)&.map do |match| + match[1].present? ? "#{match[0]},#{match[1]}" : match[0] + end end end diff --git a/Casks/time-to-leave.rb b/Casks/time-to-leave.rb index aa6c20a25beed..953660a306f72 100644 --- a/Casks/time-to-leave.rb +++ b/Casks/time-to-leave.rb @@ -11,7 +11,7 @@ # on the GitHub releases page, so we have to use the `GithubLatest` strategy. livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/\D*([^"' >]+?)["' >]}i) + regex(/^\D*?(\d+(?:\.\d+)+)$/i) strategy :github_latest end diff --git a/Casks/turtl.rb b/Casks/turtl.rb index a28028b4ef7dd..7fbc6f6418610 100644 --- a/Casks/turtl.rb +++ b/Casks/turtl.rb @@ -15,7 +15,7 @@ # newer version may wrongly appear to be older). livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/\D*([^"' >]+?)["' >]}i) + regex(/^\D*?(\d+(?:\.\d+)+.*)$/i) strategy :github_latest end diff --git a/Casks/ubports-installer.rb b/Casks/ubports-installer.rb index b8db00363a747..04cb0d07ad284 100644 --- a/Casks/ubports-installer.rb +++ b/Casks/ubports-installer.rb @@ -10,7 +10,7 @@ livecheck do url :url - regex(%r{href=.*?/tag/v?(\d+(?:\.\d+)+(?:-beta)?)["' >]}i) + regex(/v?(\d+(?:\.\d+)+(?:-beta)?)/i) strategy :github_latest end diff --git a/Casks/utm.rb b/Casks/utm.rb index 38c1b250206f1..5efccf360f4dd 100644 --- a/Casks/utm.rb +++ b/Casks/utm.rb @@ -10,7 +10,7 @@ livecheck do url :url - regex(%r{href=.*?/tag/v?(\d+(?:[.-]\d+)+)["' >]}i) + regex(/v?(\d+(?:[.-]\d+)+)/i) strategy :github_latest end diff --git a/Casks/vidcutter.rb b/Casks/vidcutter.rb index 3af11994d9cb4..f6ac2fedb8a05 100644 --- a/Casks/vidcutter.rb +++ b/Casks/vidcutter.rb @@ -9,7 +9,6 @@ livecheck do url :url - regex(%r{href=.*?/VidCutter[._-]v?(\d+(?:\.\d+)+)[._-]macOS\.dmg}i) strategy :github_latest end diff --git a/Casks/vimediamanager.rb b/Casks/vimediamanager.rb index 918a80472662e..b6c770b1168f0 100644 --- a/Casks/vimediamanager.rb +++ b/Casks/vimediamanager.rb @@ -9,7 +9,7 @@ livecheck do url :url - regex(%r{href=.*?/v?(\d+(?:\.\d+)+[a-z]\d+)["' >]}i) + regex(/v?(\d+(?:\.\d+)+[a-z]\d+)/i) strategy :github_latest end diff --git a/Casks/vine-server.rb b/Casks/vine-server.rb index 76c9393f3796d..5081c4d050e96 100644 --- a/Casks/vine-server.rb +++ b/Casks/vine-server.rb @@ -9,9 +9,9 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/[^"' >]*?(\d+(?:[._-]\d+)+[a-z]?)["' >]}i) - strategy :github_latest do |page, regex| - page.scan(regex).map { |match| match[0].tr("_", ".") } + regex(/^v?(\d+(?:[._]\d+)+)$/i) + strategy :github_latest do |json, regex| + json["tag_name"]&.scan(regex)&.map { |match| match[0].tr("_", ".") } end end diff --git a/Casks/waterfox-classic.rb b/Casks/waterfox-classic.rb index 397827acbedd1..238faf4da4c11 100644 --- a/Casks/waterfox-classic.rb +++ b/Casks/waterfox-classic.rb @@ -10,7 +10,7 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/v?(\d+(?:\.\d+)+)-classic["' >]}i) + regex(/v?(\d+(?:\.\d+)+)-classic/i) strategy :github_latest end diff --git a/Casks/webots.rb b/Casks/webots.rb index ac66572d819bb..5247a09a9c44f 100644 --- a/Casks/webots.rb +++ b/Casks/webots.rb @@ -11,7 +11,7 @@ livecheck do url :url - regex(%r{href=.*?/tag/([\w._-]+)["' >]}i) + regex(/([\w._-]+)/i) strategy :github_latest end diff --git a/Casks/wezterm.rb b/Casks/wezterm.rb index 46174e0ed40f5..069a62492fac6 100644 --- a/Casks/wezterm.rb +++ b/Casks/wezterm.rb @@ -10,9 +10,9 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/[^"' >]*?(\d+(?:[.-]\d+)+)-(\h+)["' >]}i) - strategy :github_latest do |page, regex| - page.scan(regex).map { |match| "#{match[0]},#{match[1]}" } + regex(/^(\d+(?:[.-]\d+)+)-(\h+)$/i) + strategy :github_latest do |json, regex| + json["tag_name"]&.scan(regex)&.map { |match| "#{match[0]},#{match[1]}" } end end diff --git a/Casks/zesarux.rb b/Casks/zesarux.rb index a2f5dbab06a14..65e681d4c2893 100644 --- a/Casks/zesarux.rb +++ b/Casks/zesarux.rb @@ -9,7 +9,7 @@ livecheck do url :url - regex(%r{href=["']?[^"' >]*?/tag/ZEsarUX-(\d+(?:\.\d+)+)["' >]}i) + regex(/ZEsarUX-(\d+(?:\.\d+)+)/i) strategy :github_latest end