Support casks in readall

This commit is contained in:
Sean Molenaar 2020-06-16 20:35:40 +02:00 committed by Sean Molenaar
parent b37520cc01
commit 3f6d3e5cf0
No known key found for this signature in database
GPG Key ID: EB85127E18A6A2E5
6 changed files with 47 additions and 17 deletions

View File

@ -11,10 +11,10 @@ module Homebrew
usage_banner <<~EOS
`readall` [<options>] [<tap>]
Import all formulae from the specified <tap>, or from all installed taps if none is provided.
This can be useful for debugging issues across all formulae when making
Import all items from the specified <tap>, or from all installed taps if none is provided.
This can be useful for debugging issues across all items when making
significant changes to `formula.rb`, testing the performance of loading
all formulae or checking if any current formulae have Ruby issues.
all items or checking if any current formulae/casks have Ruby issues.
EOS
switch "--aliases",
description: "Verify any alias symlinks in each tap."
@ -30,7 +30,7 @@ module Homebrew
if args.syntax?
scan_files = "#{HOMEBREW_LIBRARY_PATH}/**/*.rb"
ruby_files = Dir.glob(scan_files).reject { |file| file =~ %r{/(vendor|cask)/} }
ruby_files = Dir.glob(scan_files).reject { |file| file =~ %r{/(vendor)/} }
Homebrew.failed = true unless Readall.valid_ruby_syntax?(ruby_files)
end

View File

@ -0,0 +1,9 @@
# frozen_string_literal: true
module Readall
class << self
def valid_casks?(*)
true
end
end
end

View File

@ -0,0 +1,3 @@
# frozen_string_literal: true
require "extend/os/linux/readall" if OS.linux?

View File

@ -1,6 +1,7 @@
# frozen_string_literal: true
require "formula"
require "cask/cask_loader"
module Readall
class << self
@ -35,28 +36,43 @@ module Readall
end
def valid_formulae?(formulae)
failed = false
success = true
formulae.each do |file|
Formulary.factory(file)
rescue Interrupt
raise
rescue Exception => e # rubocop:disable Lint/RescueException
onoe "Invalid formula: #{file}"
puts e
failed = true
$stderr.puts e
success = false
end
!failed
success
end
def valid_casks?(casks)
success = true
casks.each do |file|
Cask::CaskLoader.load(file)
rescue Interrupt
raise
rescue Exception => e # rubocop:disable Lint/RescueException
onoe "Invalid cask: #{file}"
$stderr.puts e
success = false
end
success
end
def valid_tap?(tap, options = {})
failed = false
success = true
if options[:aliases]
valid_aliases = valid_aliases?(tap.alias_dir, tap.formula_dir)
failed = true unless valid_aliases
success = false unless valid_aliases
end
valid_formulae = valid_formulae?(tap.formula_files)
failed = true unless valid_formulae
!failed
valid_casks = valid_casks?(tap.cask_files)
success = false if !valid_formulae || !valid_casks
success
end
private
@ -79,3 +95,5 @@ module Readall
end
end
end
require "extend/os/readall"

View File

@ -367,10 +367,10 @@ Rerun the post-install steps for *`formula`*.
### `readall` [*`options`*] [*`tap`*]
Import all formulae from the specified *`tap`*, or from all installed taps if none
is provided. This can be useful for debugging issues across all formulae when
making significant changes to `formula.rb`, testing the performance of loading
all formulae or checking if any current formulae have Ruby issues.
Import all items from the specified *`tap`*, or from all installed taps if none is
provided. This can be useful for debugging issues across all items when making
significant changes to `formula.rb`, testing the performance of loading all
items or checking if any current formulae/casks have Ruby issues.
* `--aliases`:
Verify any alias symlinks in each tap.

View File

@ -482,7 +482,7 @@ Pin the specified \fIformula\fR, preventing them from being upgraded when issuin
Rerun the post\-install steps for \fIformula\fR\.
.
.SS "\fBreadall\fR [\fIoptions\fR] [\fItap\fR]"
Import all formulae from the specified \fItap\fR, or from all installed taps if none is provided\. This can be useful for debugging issues across all formulae when making significant changes to \fBformula\.rb\fR, testing the performance of loading all formulae or checking if any current formulae have Ruby issues\.
Import all items from the specified \fItap\fR, or from all installed taps if none is provided\. This can be useful for debugging issues across all items when making significant changes to \fBformula\.rb\fR, testing the performance of loading all items or checking if any current formulae/casks have Ruby issues\.
.
.TP
\fB\-\-aliases\fR