43 Commits

Author SHA1 Message Date
Sam Ford
13b349b4ae
Refactor #find_versions parameters in strategies 2021-08-16 12:01:32 -04:00
Sam Ford
c936a9420e
Improve documentation comments 2021-08-11 19:05:59 -04:00
Sam Ford
56dd89114d
Standardize valid strategy block return types
Valid `strategy` block return types currently vary between
strategies. Some only accept a string whereas others accept a string
or array of strings. [`strategy` blocks also accept a `nil` return
(to simplify early returns) but this was already standardized across
strategies.]

While some strategies only identify one version by default (where a
string is an appropriate return type), it could be that a strategy
block identifies more than one version. In this situation, the
strategy would need to be modified to accept (and work with) an
array from a `strategy` block.

Rather than waiting for this to become a problem, this modifies all
strategies to standardize on allowing `strategy` blocks to return a
string or array of strings (even if only one of these is currently
used in practice). Standardizing valid return types helps to further
simplify the mental model for `strategy` blocks and reduce cognitive
load.

This commit extracts related logic from `#find_versions` into
methods like `#versions_from_content`, which is conceptually similar
to `PageMatch#page_matches` (renamed to `#versions_from_content`
for consistency). This allows us to write tests for the related code
without having to make network requests (or stub them) at this point.
In general, this also helps to better align the structure of
strategies and how the various `#find_versions` methods work with
versions.

There's still more planned work to be done here but this is a step
in the right direction.
2021-08-11 19:05:57 -04:00
Sam Ford
a970780851
livecheck: allow nil return from strategy blocks 2021-08-02 18:33:34 -04:00
Sam Ford
87564b6ccb
Sparkle: Use OS::Mac::Version#prerelease? 2021-06-28 16:54:53 -04:00
Sam Ford
4433f4a985
Sparkle: Update minimumSystemVersion condition 2021-06-28 15:48:35 -04:00
Michael Cho
823dc28c21
livecheck/strategy/sparkle: check minimumSystemVersion for compatibility 2021-06-28 15:39:19 -04:00
Sam Ford
2c4a7ae2cb
Sparkle: Replace Nokogiri with REXML 2021-06-25 17:45:25 -04:00
Sam Ford
23f8cb9f4a
Sparkle: Handle ArgumentError from Time#parse 2021-06-22 10:02:57 -04:00
Sam Ford
a5768de0c3
Sparkle: Account for empty pubDate 2021-06-22 09:23:56 -04:00
Sam Ford
e7d3b2cb31
Sparkle: Move default pub_date value 2021-06-22 09:14:56 -04:00
hyuraku
6720f8bd1e
repair pub-date in livecheck 2021-06-22 09:14:55 -04:00
Nanda H Krishna
1182440f80
livecheck/strategy/sparkle: install bundler gems 2021-05-20 19:58:17 +05:30
Markus Reiter
9bb1ba324f
Always take latest item in Sparkle strategy. 2021-04-17 01:32:19 +02:00
Markus Reiter
bbf8a10f2c
Always take first item in Sparkle strategy. 2021-04-15 01:15:59 +02:00
Markus Reiter
a210b1a04e
Add extract_plist strategy. 2021-04-07 04:58:31 +02:00
nandahkrishna
8e5451df2f
style: use parentheses for assignment in conditions 2021-02-12 18:33:37 +05:30
Markus Reiter
21e543d4e0 Only select Sparkle items for macOS. 2021-01-10 19:58:44 +01:00
Markus Reiter
bf7efb369c Fix Sparkle strategy. 2020-12-24 03:33:14 +01:00
Sam Ford
99ea95c28d
Sparkle: Expand tests 2020-12-20 01:56:54 -05:00
Sam Ford
c6c303acfe
Sparkle: Rename contents to content 2020-12-20 00:23:22 -05:00
Sam Ford
3933b866b6
Sparkle: Align with PageMatch
This inlines the `PRIORITY` and `#match?` logic from `PageMatch`
into `Sparkle` instead of subclassing `PageMatch`. `Sparkle` doesn't
really make sense as a subclass of `PageMatch` (since it functions
in a completely different manner), so it's better to simply copy
over these parts of `PageMatch`. This also helps to separate the
strategies, so any changes to `PRIORITY` or `#match?` in `PageMatch`
won't affect `Sparkle`.
2020-12-19 19:34:28 -05:00
Sam Ford
f93ecd7d55
Satisfy brew typecheck and style 2020-12-19 19:34:27 -05:00
Sam Ford
57995f936f
Sparkle: Remove unnecessary NICE_NAME 2020-12-19 19:34:27 -05:00
Sam Ford
9fdc902630
Sparkle: Reorganize methods, etc. 2020-12-19 19:34:26 -05:00
Sam Ford
1bd2be5e04
Rename page_contents to page_content 2020-12-19 19:34:25 -05:00
Sam Ford
f5774c1af4
Sparkle: Use demodulized class name in error text 2020-12-19 19:34:25 -05:00
Markus Reiter
b8de4e8b21
Simplify strategies. 2020-12-19 19:34:24 -05:00
Markus Reiter
3723cd7dec
Remove detection for Sparkle strategy. 2020-12-19 19:34:23 -05:00
Markus Reiter
4aaa2de6c4
Fix syntax. 2020-12-19 19:34:23 -05:00
Markus Reiter
71759035dd
Fix Sparkle detection if content type is missing. 2020-12-19 19:34:23 -05:00
Markus Reiter
75eb6d1780
Add Item for Sparkle strategy. 2020-12-19 19:34:23 -05:00
Markus Reiter
3aa5395f75
Look in more places for URL, short version and version. 2020-12-19 19:34:22 -05:00
Markus Reiter
02849cf3e7
Don't pass nice_version to block. 2020-12-19 19:34:21 -05:00
Markus Reiter
54a3eb2adb
Include item title in Sparkle strategy. 2020-12-19 19:34:21 -05:00
Markus Reiter
d5e1d004e8
Fix Sparkle strategy when only URLs but no versions are found. 2020-12-19 19:34:21 -05:00
Markus Reiter
a8d893f134
Handle Sparkle appcast which specify the version next to the enclosure. 2020-12-19 19:34:20 -05:00
Markus Reiter
5ae726e2b4
Match Sparkle appcasts with HTTPS namespace. 2020-12-19 19:34:20 -05:00
Markus Reiter
82535696fa
Fix code style. 2020-12-19 19:34:20 -05:00
Markus Reiter
f76b5f105f
Skip fetching headers if URL has .xml extension. 2020-12-19 19:34:19 -05:00
Markus Reiter
9017778326
Don't use Cask::DSL::Version in Sparkle strategy. 2020-12-19 19:34:19 -05:00
Markus Reiter
b3c46ba2b9
Allow extracting URL in Sparkle strategy. 2020-12-19 19:34:17 -05:00
Markus Reiter
c24af82a25
Add Sparkle livecheck strategy. 2020-12-19 19:34:17 -05:00