Adjust the rules based on the current codebase. Remove various enable,
disables and default values that are unnecessary. Add more comments
explaining why. Make minor changes needed to enable a few more rules.
Suppose you have devel and stable versions of `foo` installed.
Their versions should be grouped together regardless their specs.
Output before the change:
foo (2.4), foo (3.28-01) < 5.1
Output after the change:
foo (2.4, 3.28-01) < 5.1
Introduce `--fetch-HEAD` option. Without this option upgrade and
outdated never fetch latest upstream commit to detect if HEAD is
outdated -- tabs are used instead. However, if option is passed,
we fetch commit from upstream, which is more time consuming,
but we can be sure that version is up-to-date or outdated.
`any?` is not the opposite of `empty?`. Besides the case that
`[false, nil].any?` will return false, `any?`(O(n)) has much worse
performance than `empty?`(O(1)).
After some musing on brunophilipe/Cakebrew#71, I thought it would
be useful to let Cakebrew and other tools grab the outdated formulae
version information using a method more elegant than regex.
ClosesHomebrew/homebrew#30693.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Previously if I did `brew install boxen/brews/imagemagick` and then `brew
upgrade boxen/brews/imagemagick` and the version of `imagemagick` in
`boxen/brews` was older than the version in `Homebrew/homebrew` then it would
install the correct version from the `boxen/brews` tap and then try to
immediately upgrade it to the version from `Homebrew/homebrew`. I'd argue
fairly strongly that this behaviour is pretty unintuitive; when you fully
specify a formula from a tap then it should be prioritised by `brew upgrade`
and `brew outdated.
This commit makes `brew upgrade boxen/brews/imagemagick` only upgrade the
version of `imagemagick` if the version in the `boxen/brews` tap is newer.
Similarly `brew outdated imagemagick` and `brew outdated
boxen/brews/imagemagick` will show different results if the newer version
differs between `boxen/brews` and `Homebrew/homebrew`.
ClosesHomebrew/homebrew#36699.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
If formulae names are passed as arguments check if just they are outdated. Additionally, return a failed code if they are outdated.
This will hopefully be able to stop people complaining about the outdated error code as they can now just run e.g.:
`brew outdated git && brew upgrade git`
ClosesHomebrew/homebrew#31242.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>