Prevent warning and errors from breaking the sync

This commit is contained in:
Tommaso Negri
2024-12-03 14:39:24 +01:00
parent d8521a0fc7
commit e9f09adde2
+37 -20
View File
@@ -2,13 +2,14 @@
require "formula" require "formula"
require "json" require "json"
require "readall"
module Homebrew module Homebrew
module Cmd module Cmd
class BrewerTapContentInfo < AbstractCommand class BrewerTapContentInfo < AbstractCommand
cmd_args do cmd_args do
description <<~EOS description <<~EOS
Do something. Place a description here. Display the information about third-party casks and formulas.
EOS EOS
flag "--json", flag "--json",
description: "Print a JSON representation. Currently the default value for <version> is `v1` for " \ description: "Print a JSON representation. Currently the default value for <version> is `v1` for " \
@@ -19,36 +20,52 @@ module Homebrew
switch "--cask", "--casks", switch "--cask", "--casks",
description: "Treat all named arguments as casks." description: "Treat all named arguments as casks."
conflicts "--formula", "--cask" conflicts "--formula", "--cask"
named_args [:tap]
end end
def run def run
formulae = [] begin
casks = [] original_stderr = $stderr.clone
$stderr.reopen(File.new("/dev/null", "w"))
Tap.each do |tap| formulae = []
next if ["homebrew/core", "homebrew/cask"].include?(tap.name) casks = []
unless args.cask? Tap.each do |tap|
tap.formula_files.each do |formula_file| next if ["homebrew/core", "homebrew/cask"].include?(tap.name)
formulae << Formulary.factory(formula_file) next unless valid_tap? tap
unless args.cask?
tap.formula_files.each do |formula_file|
formulae << Formulary.factory(formula_file)
end
end
unless args.formula?
tap.cask_files.each do |cask_file|
casks << Cask::CaskLoader::FromPathLoader.new(cask_file).load(config: nil)
end
end end
end end
unless args.formula? json = {
tap.cask_files.each do |cask_file| "formulae": formulae.map(&:to_hash),
casks << Cask::CaskLoader::FromPathLoader.new(cask_file).load(config: nil) "casks": casks.map(&:to_h)
end }
end
puts JSON.pretty_generate(json)
ensure
$stderr.reopen(original_stderr)
end end
end
json = { private
"formulae": formulae.map(&:to_hash),
"casks": casks.map(&:to_h)
}
puts JSON.pretty_generate(json) def valid_tap?(tap)
begin
Readall.valid_tap?(tap, aliases: true)
rescue Interrupt, RuntimeError
false
end
end end
end end
end end