mirror of
https://github.com/wavetermdev/homebrew-cask.git
synced 2026-08-05 13:43:24 -07:00
add arch_only to caveats mini-DSL
Relevant to points raised by @goxberry in #2581
This commit is contained in:
@@ -264,6 +264,7 @@ The following methods may be called to generate standard warning messages:
|
||||
| `logout` | The user should log out and log back in to complete installation
|
||||
| `reboot` | The user should reboot to complete installation
|
||||
| `files_in_usr_local` | The Cask installs files to `/usr/local`, which may confuse Homebrew
|
||||
| `arch_only(list)` | The Cask only supports certain architectures. Currently valid elements of `list` are `intel-32` and `intel-64`
|
||||
|
||||
Example:
|
||||
|
||||
|
||||
@@ -77,6 +77,33 @@ class Cask::CaveatsDSL
|
||||
EOS
|
||||
end
|
||||
|
||||
# minor bug: because output from arch_only is conditional, the
|
||||
# existence of this directive causes "===> Caveats" header to
|
||||
# appear even if no warning is output. One workaround would
|
||||
# be to spin out arch-detection from caveats into a separate
|
||||
# Cask stanza, and that is probably a sensible design.
|
||||
def arch_only(*supported_arches)
|
||||
known_arches = %w{intel-64 intel-32}
|
||||
supported_arches.each do |arch|
|
||||
unless known_arches.include?(arch)
|
||||
# There ought to be some standard exceptions for Cask validation errors
|
||||
raise "The only valid arguments to caveats arch_only in #{@cask} are: #{known_arches.join(', ')}"
|
||||
end
|
||||
end
|
||||
this_arch = "#{Hardware::CPU.type}-#{Hardware::CPU.bits}"
|
||||
unless supported_arches.include?(this_arch)
|
||||
puts <<-EOS.undent
|
||||
Cask #{@cask} provides binaries for these architectures: #{supported_arches.join(', ')}.
|
||||
But you appear to be running on an unsupported architecture:
|
||||
|
||||
#{this_arch}
|
||||
|
||||
Therefore #{@cask} is not expected to work on your system.
|
||||
|
||||
EOS
|
||||
end
|
||||
end
|
||||
|
||||
def method_missing(method, *args)
|
||||
poo = <<-EOPOO.undent
|
||||
Unexpected method #{method} called on caveats in Cask #{@cask}.
|
||||
|
||||
@@ -17,4 +17,9 @@ class WithCaveats < TestCask
|
||||
puts 'Custom text via puts followed by DSL-generated text:'
|
||||
manual_installer('Installer.app')
|
||||
end
|
||||
caveats do
|
||||
# since both valid arches are specified, no output should be
|
||||
# generated here during the test
|
||||
arch_only('intel-32', 'intel-64')
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user