Merge pull request #7752 from SMillerDev/cask/readall
Support casks in readall
This commit is contained in:
commit
4e10341277
@ -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
|
||||
|
||||
9
Library/Homebrew/extend/os/linux/readall.rb
Normal file
9
Library/Homebrew/extend/os/linux/readall.rb
Normal file
@ -0,0 +1,9 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Readall
|
||||
class << self
|
||||
def valid_casks?(*)
|
||||
true
|
||||
end
|
||||
end
|
||||
end
|
||||
3
Library/Homebrew/extend/os/readall.rb
Normal file
3
Library/Homebrew/extend/os/readall.rb
Normal file
@ -0,0 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "extend/os/linux/readall" if OS.linux?
|
||||
@ -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"
|
||||
|
||||
@ -8,7 +8,7 @@ describe "Homebrew.search_args" do
|
||||
end
|
||||
|
||||
describe "brew search", :integration_test do
|
||||
it "falls back to a GitHub tap search when no formula is found", :needs_network do
|
||||
it "falls back to a GitHub tap search when no formula is found", :needs_macos, :needs_network do
|
||||
setup_test_formula "testball"
|
||||
setup_remote_tap "homebrew/cask"
|
||||
|
||||
@ -16,4 +16,13 @@ describe "brew search", :integration_test do
|
||||
.to output(/firefox/).to_stdout
|
||||
.and be_a_success
|
||||
end
|
||||
|
||||
# doesn't actually need Linux but only want one integration test per-OS.
|
||||
it "finds formula in search", :need_linux do
|
||||
setup_test_formula "testball"
|
||||
|
||||
expect { brew "search", "testball" }
|
||||
.to output(/testball/).to_stdout
|
||||
.and be_a_success
|
||||
end
|
||||
end
|
||||
|
||||
@ -46,7 +46,7 @@ RSpec.shared_context "integration test" do
|
||||
|
||||
example.run
|
||||
ensure
|
||||
FileUtils.rm_r HOMEBREW_PREFIX/"bin"
|
||||
FileUtils.rm_rf HOMEBREW_PREFIX/"bin"
|
||||
end
|
||||
|
||||
# Generate unique ID to be able to
|
||||
|
||||
@ -369,10 +369,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.
|
||||
|
||||
@ -486,7 +486,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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user