From cf7a9df9233d60d1ff060482cdf7c282cf788844 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Mon, 3 Apr 2023 03:56:04 +0200 Subject: [PATCH 1/4] Include screen savers in `:extract_plist` strategy. --- Library/Homebrew/unversioned_cask_checker.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Library/Homebrew/unversioned_cask_checker.rb b/Library/Homebrew/unversioned_cask_checker.rb index e9620bb582..5ad2bdcde7 100644 --- a/Library/Homebrew/unversioned_cask_checker.rb +++ b/Library/Homebrew/unversioned_cask_checker.rb @@ -41,6 +41,11 @@ module Homebrew @qlplugins ||= @cask.artifacts.select { |a| a.is_a?(Cask::Artifact::Qlplugin) } end + sig { returns(T::Array[Cask::Artifact::ScreenSaver]) } + def screen_savers + @screen_savers ||= @cask.artifacts.select { |a| a.is_a?(Cask::Artifact::ScreenSaver) } + end + sig { returns(T::Array[Cask::Artifact::Colorpicker]) } def colorpickers @colorpickers ||= @cask.artifacts.select { |a| a.is_a?(Cask::Artifact::Colorpicker) } @@ -115,6 +120,7 @@ module Homebrew *colorpickers, *qlplugins, *installers, + *screen_savers, ].flat_map do |artifact| source = artifact.is_a?(Cask::Artifact::Installer) ? artifact.path : artifact.source.basename top_level_info_plists(Pathname.glob(dir/"**"/source/"Contents"/"Info.plist")).sort From 6e5ab6783892347c95768d941207838c8ff83764 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Mon, 3 Apr 2023 04:53:18 +0200 Subject: [PATCH 2/4] Consider version of `.app`s containing installers. --- Library/Homebrew/unversioned_cask_checker.rb | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/unversioned_cask_checker.rb b/Library/Homebrew/unversioned_cask_checker.rb index 5ad2bdcde7..ba7bc849c7 100644 --- a/Library/Homebrew/unversioned_cask_checker.rb +++ b/Library/Homebrew/unversioned_cask_checker.rb @@ -122,8 +122,19 @@ module Homebrew *installers, *screen_savers, ].flat_map do |artifact| - source = artifact.is_a?(Cask::Artifact::Installer) ? artifact.path : artifact.source.basename - top_level_info_plists(Pathname.glob(dir/"**"/source/"Contents"/"Info.plist")).sort + sources = if artifact.is_a?(Cask::Artifact::Installer) + # Installers are sometimes contained within an `.app`, so try both. + installer_path = artifact.path + installer_path.ascend + .flat_map { |path| (path == installer_path || path.extname == ".app") ? [path] : [] } + .sort + else + [artifact.source.basename] + end + + sources.flat_map do |source| + top_level_info_plists(Pathname.glob(dir/"**"/source/"Contents"/"Info.plist")).sort + end end info_plist_paths.each(&parse_info_plist) From cf3054526ac6cd4a833fcd096825c2e3f900b38a Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Mon, 3 Apr 2023 20:47:15 +0200 Subject: [PATCH 3/4] Use `select` instead of `flat_map`. --- Library/Homebrew/unversioned_cask_checker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/unversioned_cask_checker.rb b/Library/Homebrew/unversioned_cask_checker.rb index ba7bc849c7..329bd3c0de 100644 --- a/Library/Homebrew/unversioned_cask_checker.rb +++ b/Library/Homebrew/unversioned_cask_checker.rb @@ -126,7 +126,7 @@ module Homebrew # Installers are sometimes contained within an `.app`, so try both. installer_path = artifact.path installer_path.ascend - .flat_map { |path| (path == installer_path || path.extname == ".app") ? [path] : [] } + .select { |path| path == installer_path || path.extname == ".app" } .sort else [artifact.source.basename] From e57143542a437b5f21655dae2d0042a2aba685c6 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Tue, 4 Apr 2023 05:06:58 +0200 Subject: [PATCH 4/4] Consider `dictionary` stanzas in livechecks. --- Library/Homebrew/unversioned_cask_checker.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Library/Homebrew/unversioned_cask_checker.rb b/Library/Homebrew/unversioned_cask_checker.rb index 329bd3c0de..9da27738c1 100644 --- a/Library/Homebrew/unversioned_cask_checker.rb +++ b/Library/Homebrew/unversioned_cask_checker.rb @@ -41,6 +41,11 @@ module Homebrew @qlplugins ||= @cask.artifacts.select { |a| a.is_a?(Cask::Artifact::Qlplugin) } end + sig { returns(T::Array[Cask::Artifact::Dictionary]) } + def dictionaries + @dictionaries ||= @cask.artifacts.select { |a| a.is_a?(Cask::Artifact::Dictionary) } + end + sig { returns(T::Array[Cask::Artifact::ScreenSaver]) } def screen_savers @screen_savers ||= @cask.artifacts.select { |a| a.is_a?(Cask::Artifact::ScreenSaver) } @@ -118,6 +123,7 @@ module Homebrew *keyboard_layouts, *mdimporters, *colorpickers, + *dictionaries, *qlplugins, *installers, *screen_savers,