aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/readall.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/cmd/readall.rb')
-rw-r--r--Library/Homebrew/cmd/readall.rb74
1 files changed, 10 insertions, 64 deletions
diff --git a/Library/Homebrew/cmd/readall.rb b/Library/Homebrew/cmd/readall.rb
index a2447c0c8..5442e4206 100644
--- a/Library/Homebrew/cmd/readall.rb
+++ b/Library/Homebrew/cmd/readall.rb
@@ -3,14 +3,12 @@
# when making significant changes to formula.rb,
# or to determine if any current formulae have Ruby issues
-require "formula"
-require "tap"
-require "thread"
+require "readall"
module Homebrew
def readall
- if ARGV.delete("--syntax")
- ruby_files = Queue.new
+ if ARGV.include?("--syntax")
+ ruby_files = []
scan_files = %W[
#{HOMEBREW_LIBRARY}/*.rb
#{HOMEBREW_LIBRARY}/Homebrew/**/*.rb
@@ -20,69 +18,17 @@ module Homebrew
ruby_files << rb
end
- failed = false
- workers = (0...Hardware::CPU.cores).map do
- Thread.new do
- begin
- while rb = ruby_files.pop(true)
- # As a side effect, print syntax errors/warnings to `$stderr`.
- failed = true if syntax_errors_or_warnings?(rb)
- end
- rescue ThreadError # ignore empty queue error
- end
- end
- end
- workers.each(&:join)
- Homebrew.failed = failed
+ Homebrew.failed = true unless Readall.valid_ruby_syntax?(ruby_files)
end
- formulae = []
- alias_dirs = []
- if ARGV.named.empty?
- formulae = Formula.files
- alias_dirs = Tap.map(&:alias_dir)
+ options = { :aliases => ARGV.include?("--aliases") }
+ taps = if ARGV.named.any?
+ [Tap.fetch(ARGV.named.first)]
else
- tap = Tap.fetch(ARGV.named.first)
- raise TapUnavailableError, tap.name unless tap.installed?
- formulae = tap.formula_files
- alias_dirs = [tap.alias_dir]
+ Tap
end
-
- if ARGV.delete("--aliases")
- alias_dirs.each do |alias_dir|
- next unless alias_dir.directory?
- Pathname.glob("#{alias_dir}/*").each do |f|
- next unless f.symlink?
- next if f.file?
- onoe "Broken alias: #{f}"
- Homebrew.failed = true
- end
- end
- end
-
- formulae.each do |file|
- begin
- Formulary.factory(file)
- rescue Interrupt
- raise
- rescue Exception => e
- onoe "problem in #{file}"
- puts e
- Homebrew.failed = true
- end
+ taps.each do |tap|
+ Homebrew.failed = true unless Readall.valid_tap?(tap, options)
end
end
-
- private
-
- def syntax_errors_or_warnings?(rb)
- # Retrieve messages about syntax errors/warnings printed to `$stderr`, but
- # discard a `Syntax OK` printed to `$stdout` (in absence of syntax errors).
- messages = Utils.popen_read("#{RUBY_PATH} -c -w #{rb} 2>&1 >/dev/null")
- $stderr.print messages
-
- # Only syntax errors result in a non-zero status code. To detect syntax
- # warnings we also need to inspect the output to `$stderr`.
- !$?.success? || !messages.chomp.empty?
- end
end