179 Commits

Author SHA1 Message Date
Mohammad Zain Abbas
e784377537 Code refactoring for info Hash for resources 2022-08-03 16:07:48 +02:00
Mohammad Zain Abbas
6f79b5dee2 Minor change: fix the argument for formulae 2022-08-03 15:47:32 +02:00
Mohammad Zain Abbas
9b31dc7e87
Refactored print_latest_version for resource
Co-authored-by: Nanda H Krishna <me@nandahkrishna.com>
2022-08-03 18:41:44 +05:00
Mohammad Zain Abbas
424c5bfce2
Minor change: update parameters
Co-authored-by: Nanda H Krishna <me@nandahkrishna.com>
2022-08-03 18:37:36 +05:00
Mohammad Zain Abbas
06d45fea80
Minor fix: ambiguous_cask should be false for resources
Co-authored-by: Nanda H Krishna <me@nandahkrishna.com>
2022-08-03 18:36:55 +05:00
Mohammad Zain Abbas
fd4a02ff34
Refactored check_resource to resource in print_latest_version
Co-authored-by: Nanda H Krishna <me@nandahkrishna.com>
2022-08-03 18:35:52 +05:00
Mohammad Zain Abbas
ac614e29f9 After brew typecheck --fix 2022-08-02 00:54:18 +02:00
Mohammad Zain Abbas
3bd747d41b Merge branch 'mohammad' of https://github.com/mohammadzainabbas/brew into mohammad 2022-08-02 00:35:19 +02:00
Mohammad Zain Abbas
609485cdd7 Added a blank line before the output from print_latest_version in the debug output 2022-08-02 00:35:16 +02:00
Mohammad Zain Abbas
87b8c7bb6d
Added double blank line before resources to better separate the debug output
Co-authored-by: Sam Ford <1584702+samford@users.noreply.github.com>
2022-08-02 03:33:34 +05:00
Mohammad Zain Abbas
9c4b9b7e14 Refactored a bit + brew style --fix 2022-08-02 00:27:53 +02:00
Mohammad Zain Abbas
e718318eaf Fixed issue with info[:meta] for resources 2022-08-01 23:50:18 +02:00
Mohammad Zain Abbas
6daa22bc8e Fixed issue with print_latest_version 2022-08-01 23:34:53 +02:00
Mohammad Zain Abbas
b651fe475c Added newer_than_upstream and outdated in resource info 2022-07-31 10:24:55 +02:00
Mohammad Zain Abbas
ce202dc61c Updated livecheck: Refactored for resources' output 2022-07-31 10:17:15 +02:00
Mohammad Zain Abbas
4de6509906 Removed print_latest_resource_version 2022-07-31 10:09:20 +02:00
Mohammad Zain Abbas
4f8f852fbc Refactored print_latest_version for resources as well 2022-07-31 10:08:39 +02:00
Mohammad Zain Abbas
40bbbd601e Refractored resource_version to work for a single resource 2022-07-31 09:49:19 +02:00
Mohammad Zain Abbas
4088c4683e
Indenting resources by two spaces
Co-authored-by: Sam Ford <1584702+samford@users.noreply.github.com>
2022-07-31 12:39:23 +05:00
Mohammad Zain Abbas
c074e8c020
Aligned output with the existing style seen in #latest_version
Co-authored-by: Sam Ford <1584702+samford@users.noreply.github.com>
2022-07-31 12:38:40 +05:00
Mohammad Zain Abbas
5beb7c1772 Simplified check resources' condition for Formulae 2022-07-31 09:35:41 +02:00
Mohammad Zain Abbas
6ec81ac31c No need to show that no resources exists for formulae 2022-07-31 09:33:01 +02:00
Mohammad Zain Abbas
806f0be69a Refactoring in progress 2022-07-27 21:28:28 +02:00
Mohammad Zain Abbas
0b5a68ca9b After brew style --fix for livecheck command 2022-07-27 20:43:07 +02:00
Mohammad Zain Abbas
3dc1b9c231 Refactored run_checks and resource_version methods for livecheck command 2022-07-27 18:25:12 +02:00
Mohammad Zain Abbas
1f55f15d66 Removed extra bits 2022-07-27 16:51:26 +02:00
Mohammad Zain Abbas
8e3e9743ac Basic structure completed for livecheckable resources 2022-07-27 16:37:31 +02:00
Mohammad Zain Abbas
73cf8fd205 Updated latest version for resources 2022-07-27 15:24:33 +02:00
Mohammad Zain Abbas
e72487c8b0 Updated for current and latest versions for resources 2022-07-27 15:13:55 +02:00
Mohammad Zain Abbas
2777610095 Work in progress for resource_version 2022-07-27 13:54:20 +02:00
Mohammad Zain Abbas
e84cc8d116 Work in progress for livecheckable resources 2022-07-27 13:27:21 +02:00
Mohammad Zain Abbas
7ce15eaa60 Basic debug info 2022-07-25 00:56:36 +02:00
Mohammad Zain Abbas
a60cd00973 Minor: added version_info for resources 2022-07-24 19:54:00 +02:00
Mohammad Zain Abbas
1ee4f1a696 Work in progress for extending livecheck command for resources 2022-07-24 17:39:07 +02:00
Mohammad Zain Abbas
f4a42d7d66 Added method resource_version to check for resources 2022-07-24 15:47:40 +02:00
Mohammad Zain Abbas
7575170a0b Work in progress for livecheckable resources 2022-07-21 20:02:54 +02:00
Sam Ford
2194f6e12b
Only require livecheck block URL when appropriate
`ExtractPlist` doesn't require a URL like other strategies (it takes
a `Cask` instead) but we've had to provide one in existing
`livecheck` blocks to get past this requirement in livecheck. This
commit makes it so this requirement is only enforced when a
strategy's `#find_versions` method has a required `url` parameter
(not an optional one, as in `ExtractPlist`).
2022-06-24 00:08:54 -04:00
Sam Ford
52cd5dde9c
Respect --newer-only and --quiet in JSON output 2022-06-08 15:50:11 -04:00
Sam Ford
802a430300
livecheck: omit skipped when --newer-only is used 2022-06-08 15:50:11 -04:00
Bo Anderson
38ae98cbcd
livecheck: improve host checks to instead check domains 2022-05-20 01:43:00 +01:00
Sam Ford
2f0a53c0da
Livecheck: Use Homebrew curl based on root domain
At the moment, `#use_homebrew_curl?` can only be true for a
`homepage` or `stable`/cask `url` with `using: :homebrew_curl`. If
the checked URL differs from these URLs, livecheck won't use brewed
curl. This limitation prevents livecheck from using brewed curl for a
`livecheck` block URL that's a string literal (not a symbol for a
`#checkable_url` like `:stable`, `:head`, `:url`). `libzip` was the
original formula referenced in the related brew issue and it meets
this criterion, so it doesn't appear to be handled by the existing
`#use_homebrew_curl?` implementation.

Additionally, the existing behavior can cause livecheck to
unnecessarily use brewed curl for a completely different website
(e.g., `cubelib`, `otf2`). For example, if the `stable` URL has
`using: :homebrew_curl` and the `livecheck` block has `url
:homepage`, livecheck will use brewed curl when checking the
`homepage`. If these are completely different domains/servers, it's
unlikely that we would need to use brewed curl when checking the
`homepage`, so this particular behavior may not be beneficial.

This commit reimplements `use_homebrew_curl?` to apply brewed curl
when the checked URL's root domain is the same as the root domain of
an aforementioned formula/cask URL with `using: :homebrew_curl`. For
example, this looser approach would allow a `livecheck` block
checking `https://www.example.com/downloads/` to use brewed curl if
the `stable` URL was `https://downloads.example.com/example.zip` with
`using: :homebrew_curl`. These could be different servers but, based
on related formulae, this looseness is necessary for the moment.

This approach aims to resolve both issues, allowing brewed curl to be
applied to a slightly broader range of URLs (i.e., not limited to
just the `#checkable_urls`) while also helping to avoid unnecessarily
applying brewed curl when it's less likely to be useful (completely
different domains). Neither approach is perfect but this one may be
more useful in the interim time.

Depending on how this looser approach works in practice, we may want
to consider returning to a stricter approach once we have something
like `using: :homebrew_curl` in `livecheck` blocks (this is
forthcoming). Being explicit in a `livecheck` block is the most
reliable approach (i.e., only use brewed curl when needed), so we
could favor that and pare down the automated approach to only what's
needed to support implicit checks (i.e., with no `livecheck` block).
Of course, it's also possible to drop the automated approach entirely
and simply require a `livecheck` block in this scenario but we can
decide on how to handle this when the time comes.
2022-05-18 18:48:17 -04:00
Mike McQuaid
95213893a6
Revert "Livecheck: Use Homebrew curl based on root domain" 2022-05-18 15:36:12 -04:00
Sam Ford
fb8a4e5658
Livecheck: Use Homebrew curl based on root domain
At the moment, `#use_homebrew_curl?` can only be true for a
`homepage` or `stable`/cask `url` with `using: :homebrew_curl`. If
the checked URL differs from these URLs, livecheck won't use brewed
curl. This limitation prevents livecheck from using brewed curl for a
`livecheck` block URL that's a string literal (not a symbol for a
`#checkable_url` like `:stable`, `:head`, `:url`). `libzip` was the
original formula referenced in the related brew issue and it meets
this criterion, so it doesn't appear to be handled by the existing
`#use_homebrew_curl?` implementation.

Additionally, the existing behavior can cause livecheck to
unnecessarily use brewed curl for a completely different website
(e.g., `cubelib`, `otf2`). For example, if the `stable` URL has
`using: :homebrew_curl` and the `livecheck` block has `url
:homepage`, livecheck will use brewed curl when checking the
`homepage`. If these are completely different domains/servers, it's
unlikely that we would need to use brewed curl when checking the
`homepage`, so this particular behavior may not be beneficial.

This commit reimplements `use_homebrew_curl?` to apply brewed curl
when the checked URL's root domain is the same as the root domain of
an aforementioned formula/cask URL with `using: :homebrew_curl`. For
example, this looser approach would allow a `livecheck` block
checking `https://www.example.com/downloads/` to use brewed curl if
the `stable` URL was `https://downloads.example.com/example.zip` with
`using: :homebrew_curl`. These could be different servers but, based
on related formulae, this looseness is necessary for the moment.

This approach aims to resolve both issues, allowing brewed curl to be
applied to a slightly broader range of URLs (i.e., not limited to
just the `#checkable_urls`) while also helping to avoid unnecessarily
applying brewed curl when it's less likely to be useful (completely
different domains). Neither approach is perfect but this one may be
more useful in the interim time.

Depending on how this looser approach works in practice, we may want
to consider returning to a stricter approach once we have something
like `using: :homebrew_curl` in `livecheck` blocks (this is
forthcoming). Being explicit in a `livecheck` block is the most
reliable approach (i.e., only use brewed curl when needed), so we
could favor that and pare down the automated approach to only what's
needed to support implicit checks (i.e., with no `livecheck` block).
Of course, it's also possible to drop the automated approach entirely
and simply require a `livecheck` block in this scenario but we can
decide on how to handle this when the time comes.
2022-05-17 00:34:32 -04:00
mhmdanas
37c46e1acd Remove space before colon in livecheck output 2022-04-27 01:09:16 +03:00
Sam Ford
bd4124c10f
Livecheck: Avoid duplicate URLs
Some formulae/casks contain duplicate checkable URLs or contain
URLs that become duplicates after `#preprocess_url` is used. With
the former, a formula's `stable` and `head` URLs can be the same if
they both use the Git repository. With the latter, a formula's
`homepage` and `stable` URLs are different but `#preprocess_url` can
return the same Git repository URL for each (which can also be
a duplicate of the `head` URL).

The `fabric-completion` formula is a worst case scenario, as it
contains both of these conditions but the repository has no tags.
By default, livecheck would needlessly check the repository three
times (i.e., no versions are found so livecheck tries the next URL,
which happens to be the same URL).

This commit avoids duplicate URLs in `#checkable_urls` and keeps
track of checked URLs in `#latest_version` to avoid a duplicate
caused by `#preprocess_url`. This should effectively resolve the
issue of checking the same URL more than once for a given
formula/cask. Checking the same URL only once across all the
formulae/casks in a given livecheck run will be handled in a later
commit (though I've done most of the groundwork already in previous
PRs).
2021-12-14 10:31:15 -05:00
EricFromCanada
ed3042c37a
livecheck: use brewed curl if called for by download URL 2021-11-28 12:57:24 -05:00
Sam Ford
f8ded0a435
PageMatch: Enforce requirements in #find_versions
This aligns `PageMatch` with how cask strategies handle requirements
in their `#find_versions` methods. This moves related logic from
`Livecheck#latest_version` into the `PageMatch` strategy, which feels
a bit more appropriate.
2021-11-20 00:39:00 -05:00
Sam Ford
e73524b093
livecheck: Fix debug strategy info printing
The `ExtractPlist` strategy doesn't return certain values (e.g.,
`:url`), so it's necessary to also ensure these values are present
before printing related debug info. Without these changes, we end up
printing info for a blank value (e.g., "URL (strategy):").
2021-11-19 23:58:55 -05:00
Sam Ford
13b349b4ae
Refactor #find_versions parameters in strategies 2021-08-16 12:01:32 -04:00
Sam Ford
cf79ced740
Rework how strategy constants are identified
Up to this point, we've had to rely on making `Strategy` constants
private to ensure that the only available constants are strategies.
With the current setup, the existence of a constant that's not a
strategy would break `Strategy#strategies` and
`Livecheck#livecheck_strategy_names`.

Instead, we can achieve the same goal by skipping over constants
that aren't a class. Other than saving us from having to make these
constants private, this is necessary to be able to create a
`Strategy` constant that can be used in all strategies.
2021-08-11 18:25:34 -04:00