Merge pull request #3319 from reitermarkus/squiggly-heredocs
Use “squiggly” heredocs.
This commit is contained in:
commit
76cd7c7949
@ -29,7 +29,7 @@ Layout/IndentArray:
|
|||||||
EnforcedStyle: special_inside_parentheses
|
EnforcedStyle: special_inside_parentheses
|
||||||
|
|
||||||
Layout/IndentHeredoc:
|
Layout/IndentHeredoc:
|
||||||
EnforcedStyle: unindent
|
EnforcedStyle: squiggly
|
||||||
|
|
||||||
# conflicts with DSL-style path concatenation with `/`
|
# conflicts with DSL-style path concatenation with `/`
|
||||||
Layout/SpaceAroundOperators:
|
Layout/SpaceAroundOperators:
|
||||||
|
|||||||
@ -253,7 +253,7 @@ module Hbc
|
|||||||
end
|
end
|
||||||
|
|
||||||
def trash_paths(*paths, command: nil, **_)
|
def trash_paths(*paths, command: nil, **_)
|
||||||
result = command.run!("/usr/bin/osascript", args: ["-e", <<-'EOS'.undent, *paths])
|
result = command.run!("/usr/bin/osascript", args: ["-e", <<~'EOS', *paths])
|
||||||
on run argv
|
on run argv
|
||||||
repeat with i from 1 to (count argv)
|
repeat with i from 1 to (count argv)
|
||||||
set item i of argv to (item i of argv as POSIX file)
|
set item i of argv to (item i of argv as POSIX file)
|
||||||
|
|||||||
@ -10,7 +10,7 @@ module Hbc
|
|||||||
|
|
||||||
module ManualInstaller
|
module ManualInstaller
|
||||||
def install_phase(**)
|
def install_phase(**)
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
To complete the installation of Cask #{cask}, you must also
|
To complete the installation of Cask #{cask}, you must also
|
||||||
run the installer at
|
run the installer at
|
||||||
|
|
||||||
|
|||||||
@ -174,7 +174,7 @@ module Hbc
|
|||||||
add_warning "error retrieving appcast: #{result[:command_result].stderr}"
|
add_warning "error retrieving appcast: #{result[:command_result].stderr}"
|
||||||
else
|
else
|
||||||
expected = cask.appcast.checkpoint
|
expected = cask.appcast.checkpoint
|
||||||
add_warning <<-EOS.undent unless expected == actual_checkpoint
|
add_warning <<~EOS unless expected == actual_checkpoint
|
||||||
appcast checkpoint mismatch
|
appcast checkpoint mismatch
|
||||||
Expected: #{expected}
|
Expected: #{expected}
|
||||||
Actual: #{actual_checkpoint}
|
Actual: #{actual_checkpoint}
|
||||||
|
|||||||
@ -190,7 +190,7 @@ module Hbc
|
|||||||
when 2..Float::INFINITY
|
when 2..Float::INFINITY
|
||||||
loaders = possible_tap_casks.map(&FromTapPathLoader.method(:new))
|
loaders = possible_tap_casks.map(&FromTapPathLoader.method(:new))
|
||||||
|
|
||||||
raise CaskError, <<-EOS.undent
|
raise CaskError, <<~EOS
|
||||||
Cask #{ref} exists in multiple taps:
|
Cask #{ref} exists in multiple taps:
|
||||||
#{loaders.map { |loader| " #{loader.tap}/#{loader.token}" }.join("\n")}
|
#{loaders.map { |loader| " #{loader.tap}/#{loader.token}" }.join("\n")}
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -235,7 +235,7 @@ module Hbc
|
|||||||
end
|
end
|
||||||
|
|
||||||
def purpose
|
def purpose
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
brew-cask provides a friendly homebrew-style CLI workflow for the
|
brew-cask provides a friendly homebrew-style CLI workflow for the
|
||||||
administration of macOS applications distributed as binaries.
|
administration of macOS applications distributed as binaries.
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@ module Hbc
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.template(cask_token)
|
def self.template(cask_token)
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
cask '#{cask_token}' do
|
cask '#{cask_token}' do
|
||||||
version ''
|
version ''
|
||||||
sha256 ''
|
sha256 ''
|
||||||
|
|||||||
@ -16,7 +16,7 @@ module Hbc
|
|||||||
super
|
super
|
||||||
|
|
||||||
if args.count != 1
|
if args.count != 1
|
||||||
raise ArgumentError, <<-EOS.undent
|
raise ArgumentError, <<~EOS
|
||||||
This command requires exactly one argument.
|
This command requires exactly one argument.
|
||||||
|
|
||||||
#{self.class.usage}
|
#{self.class.usage}
|
||||||
@ -31,7 +31,7 @@ module Hbc
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.usage
|
def self.usage
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Usage: brew cask _audit_modified_casks [options...] <commit range>
|
Usage: brew cask _audit_modified_casks [options...] <commit range>
|
||||||
|
|
||||||
Given a range of Git commits, find any Casks that were modified and run `brew
|
Given a range of Git commits, find any Casks that were modified and run `brew
|
||||||
|
|||||||
@ -25,7 +25,7 @@ module Hbc
|
|||||||
|
|
||||||
single = versions.count == 1
|
single = versions.count == 1
|
||||||
|
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
#{cask} #{versions.join(", ")} #{single ? "is" : "are"} still installed.
|
#{cask} #{versions.join(", ")} #{single ? "is" : "are"} still installed.
|
||||||
Remove #{single ? "it" : "them all"} with `brew cask uninstall --force #{cask}`.
|
Remove #{single ? "it" : "them all"} with `brew cask uninstall --force #{cask}`.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -13,7 +13,7 @@ module Hbc
|
|||||||
|
|
||||||
def self.installer_cmd
|
def self.installer_cmd
|
||||||
return @installer_cmd ||= INSTALLER_PATHNAME if installer_exist?
|
return @installer_cmd ||= INSTALLER_PATHNAME if installer_exist?
|
||||||
raise CaskError, <<-EOS.undent
|
raise CaskError, <<~EOS
|
||||||
Adobe AIR runtime not present, try installing it via
|
Adobe AIR runtime not present, try installing it via
|
||||||
|
|
||||||
brew cask install adobe-air
|
brew cask install adobe-air
|
||||||
|
|||||||
@ -9,22 +9,22 @@ module Hbc
|
|||||||
class DSL
|
class DSL
|
||||||
class Caveats < Base
|
class Caveats < Base
|
||||||
def path_environment_variable(path)
|
def path_environment_variable(path)
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
To use #{@cask}, you may need to add the #{path} directory
|
To use #{@cask}, you may need to add the #{path} directory
|
||||||
to your PATH environment variable, eg (for bash shell):
|
to your PATH environment variable, eg (for bash shell):
|
||||||
|
|
||||||
export PATH=#{path}:"$PATH"
|
export PATH=#{path}:"$PATH"
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
def zsh_path_helper(path)
|
def zsh_path_helper(path)
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
To use #{@cask}, zsh users may need to add the following line to their
|
To use #{@cask}, zsh users may need to add the following line to their
|
||||||
~/.zprofile. (Among other effects, #{path} will be added to the
|
~/.zprofile. (Among other effects, #{path} will be added to the
|
||||||
PATH environment variable):
|
PATH environment variable):
|
||||||
|
|
||||||
eval `/usr/libexec/path_helper -s`
|
eval `/usr/libexec/path_helper -s`
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -32,7 +32,7 @@ module Hbc
|
|||||||
def files_in_usr_local
|
def files_in_usr_local
|
||||||
localpath = "/usr/local"
|
localpath = "/usr/local"
|
||||||
return unless HOMEBREW_PREFIX.to_s.downcase.start_with?(localpath)
|
return unless HOMEBREW_PREFIX.to_s.downcase.start_with?(localpath)
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
Cask #{@cask} installs files under "#{localpath}". The presence of such
|
Cask #{@cask} installs files under "#{localpath}". The presence of such
|
||||||
files can cause warnings when running "brew doctor", which is considered
|
files can cause warnings when running "brew doctor", which is considered
|
||||||
to be a bug in Homebrew-Cask.
|
to be a bug in Homebrew-Cask.
|
||||||
@ -42,72 +42,72 @@ module Hbc
|
|||||||
|
|
||||||
def depends_on_java(java_version = "any")
|
def depends_on_java(java_version = "any")
|
||||||
if java_version == "any"
|
if java_version == "any"
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
#{@cask} requires Java. You can install the latest version with
|
#{@cask} requires Java. You can install the latest version with
|
||||||
|
|
||||||
brew cask install java
|
brew cask install java
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
elsif java_version.include?("9") || java_version.include?("+")
|
elsif java_version.include?("9") || java_version.include?("+")
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
#{@cask} requires Java #{java_version}. You can install the latest version with
|
#{@cask} requires Java #{java_version}. You can install the latest version with
|
||||||
|
|
||||||
brew cask install java
|
brew cask install java
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
else
|
else
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
#{@cask} requires Java #{java_version}. You can install it with
|
#{@cask} requires Java #{java_version}. You can install it with
|
||||||
|
|
||||||
brew cask install caskroom/versions/java#{java_version}
|
brew cask install caskroom/versions/java#{java_version}
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def logout
|
def logout
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
You must log out and log back in for the installation of #{@cask}
|
You must log out and log back in for the installation of #{@cask}
|
||||||
to take effect.
|
to take effect.
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
def reboot
|
def reboot
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
You must reboot for the installation of #{@cask} to take effect.
|
You must reboot for the installation of #{@cask} to take effect.
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
def discontinued
|
def discontinued
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
#{@cask} has been officially discontinued upstream.
|
#{@cask} has been officially discontinued upstream.
|
||||||
It may stop working correctly (or at all) in recent versions of macOS.
|
It may stop working correctly (or at all) in recent versions of macOS.
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
def free_license(web_page)
|
def free_license(web_page)
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
The vendor offers a free license for #{@cask} at
|
The vendor offers a free license for #{@cask} at
|
||||||
#{web_page}
|
#{web_page}
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
def malware(radar_number)
|
def malware(radar_number)
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
#{@cask} has been reported to bundle malware. Like with any app, use at your own risk.
|
#{@cask} has been reported to bundle malware. Like with any app, use at your own risk.
|
||||||
|
|
||||||
A report has been made to Apple about this app. Their certificate will hopefully be revoked.
|
A report has been made to Apple about this app. Their certificate will hopefully be revoked.
|
||||||
See the public report at
|
See the public report at
|
||||||
#{Formatter.url("https://openradar.appspot.com/#{radar_number}")}
|
#{Formatter.url("https://openradar.appspot.com/#{radar_number}")}
|
||||||
|
|
||||||
If this report is accurate, please duplicate it at
|
If this report is accurate, please duplicate it at
|
||||||
#{Formatter.url("https://bugreport.apple.com/")}
|
#{Formatter.url("https://bugreport.apple.com/")}
|
||||||
If this report is a mistake, please let us know by opening an issue at
|
If this report is a mistake, please let us know by opening an issue at
|
||||||
#{Formatter.url("https://github.com/caskroom/homebrew-cask/issues/new")}
|
#{Formatter.url("https://github.com/caskroom/homebrew-cask/issues/new")}
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|||||||
@ -44,7 +44,7 @@ module Hbc
|
|||||||
|
|
||||||
class CaskAlreadyInstalledError < AbstractCaskErrorWithToken
|
class CaskAlreadyInstalledError < AbstractCaskErrorWithToken
|
||||||
def to_s
|
def to_s
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Cask '#{token}' is already installed.
|
Cask '#{token}' is already installed.
|
||||||
|
|
||||||
To re-install #{token}, run:
|
To re-install #{token}, run:
|
||||||
@ -80,7 +80,7 @@ module Hbc
|
|||||||
|
|
||||||
class CaskX11DependencyError < AbstractCaskErrorWithToken
|
class CaskX11DependencyError < AbstractCaskErrorWithToken
|
||||||
def to_s
|
def to_s
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Cask '#{token}' requires XQuartz/X11, which can be installed using Homebrew-Cask by running
|
Cask '#{token}' requires XQuartz/X11, which can be installed using Homebrew-Cask by running
|
||||||
#{Formatter.identifier("brew cask install xquartz")}
|
#{Formatter.identifier("brew cask install xquartz")}
|
||||||
|
|
||||||
@ -132,7 +132,7 @@ module Hbc
|
|||||||
|
|
||||||
class CaskSha256MissingError < CaskSha256Error
|
class CaskSha256MissingError < CaskSha256Error
|
||||||
def to_s
|
def to_s
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Cask '#{token}' requires a checksum:
|
Cask '#{token}' requires a checksum:
|
||||||
#{Formatter.identifier("sha256 '#{actual}'")}
|
#{Formatter.identifier("sha256 '#{actual}'")}
|
||||||
EOS
|
EOS
|
||||||
@ -148,7 +148,7 @@ module Hbc
|
|||||||
end
|
end
|
||||||
|
|
||||||
def to_s
|
def to_s
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Checksum for Cask '#{token}' does not match.
|
Checksum for Cask '#{token}' does not match.
|
||||||
|
|
||||||
Expected: #{Formatter.success(expected.to_s)}
|
Expected: #{Formatter.success(expected.to_s)}
|
||||||
@ -162,7 +162,7 @@ module Hbc
|
|||||||
|
|
||||||
class CaskNoShasumError < CaskSha256Error
|
class CaskNoShasumError < CaskSha256Error
|
||||||
def to_s
|
def to_s
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Cask '#{token}' does not have a sha256 checksum defined and was not installed.
|
Cask '#{token}' does not have a sha256 checksum defined and was not installed.
|
||||||
This means you have the #{Formatter.identifier("--require-sha")} option set, perhaps in your HOMEBREW_CASK_OPTS.
|
This means you have the #{Formatter.identifier("--require-sha")} option set, perhaps in your HOMEBREW_CASK_OPTS.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -326,7 +326,7 @@ module Hbc
|
|||||||
],
|
],
|
||||||
sudo: true)
|
sudo: true)
|
||||||
else
|
else
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
Accessibility access cannot be enabled automatically on this version of macOS.
|
Accessibility access cannot be enabled automatically on this version of macOS.
|
||||||
See System Preferences to enable it manually.
|
See System Preferences to enable it manually.
|
||||||
EOS
|
EOS
|
||||||
@ -347,7 +347,7 @@ module Hbc
|
|||||||
],
|
],
|
||||||
sudo: true)
|
sudo: true)
|
||||||
else
|
else
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
Accessibility access cannot be disabled automatically on this version of macOS.
|
Accessibility access cannot be disabled automatically on this version of macOS.
|
||||||
See System Preferences to disable it manually.
|
See System Preferences to disable it manually.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -166,12 +166,12 @@ module Hbc
|
|||||||
_warn_plist_garbage(command, Regexp.last_match[2])
|
_warn_plist_garbage(command, Regexp.last_match[2])
|
||||||
xml = Plist.parse_xml(output)
|
xml = Plist.parse_xml(output)
|
||||||
unless xml.respond_to?(:keys) && !xml.keys.empty?
|
unless xml.respond_to?(:keys) && !xml.keys.empty?
|
||||||
raise CaskError, <<-EOS
|
raise CaskError, <<~EOS
|
||||||
Empty result parsing plist output from command.
|
Empty result parsing plist output from command.
|
||||||
command was:
|
command was:
|
||||||
#{command}
|
#{command}
|
||||||
output we attempted to parse:
|
output we attempted to parse:
|
||||||
#{output}
|
#{output}
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
xml
|
xml
|
||||||
|
|||||||
@ -90,7 +90,7 @@ module Hbc
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.error_message_with_suggestions
|
def self.error_message_with_suggestions
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Follow the instructions here:
|
Follow the instructions here:
|
||||||
#{Formatter.url(BUG_REPORTS_URL)}
|
#{Formatter.url(BUG_REPORTS_URL)}
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
module Hbc
|
module Hbc
|
||||||
def self.full_version
|
def self.full_version
|
||||||
@full_version ||= begin
|
@full_version ||= begin
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Homebrew-Cask #{HOMEBREW_VERSION}
|
Homebrew-Cask #{HOMEBREW_VERSION}
|
||||||
caskroom/homebrew-cask #{Hbc.default_tap.version_string}
|
caskroom/homebrew-cask #{Hbc.default_tap.version_string}
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -44,7 +44,7 @@ class Caveats
|
|||||||
def keg_only_text
|
def keg_only_text
|
||||||
return unless f.keg_only?
|
return unless f.keg_only?
|
||||||
|
|
||||||
s = <<-EOS.undent
|
s = <<~EOS
|
||||||
This formula is keg-only, which means it was not symlinked into #{HOMEBREW_PREFIX},
|
This formula is keg-only, which means it was not symlinked into #{HOMEBREW_PREFIX},
|
||||||
because #{f.keg_only_reason.to_s.chomp}.
|
because #{f.keg_only_reason.to_s.chomp}.
|
||||||
EOS
|
EOS
|
||||||
@ -86,12 +86,12 @@ class Caveats
|
|||||||
|
|
||||||
case shell
|
case shell
|
||||||
when :bash
|
when :bash
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Bash completion has been installed to:
|
Bash completion has been installed to:
|
||||||
#{HOMEBREW_PREFIX}/etc/bash_completion.d
|
#{HOMEBREW_PREFIX}/etc/bash_completion.d
|
||||||
EOS
|
EOS
|
||||||
when :zsh
|
when :zsh
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
zsh #{installed.join(" and ")} have been installed to:
|
zsh #{installed.join(" and ")} have been installed to:
|
||||||
#{HOMEBREW_PREFIX}/share/zsh/site-functions
|
#{HOMEBREW_PREFIX}/share/zsh/site-functions
|
||||||
EOS
|
EOS
|
||||||
@ -111,7 +111,7 @@ class Caveats
|
|||||||
homebrew_site_packages = Language::Python.homebrew_site_packages
|
homebrew_site_packages = Language::Python.homebrew_site_packages
|
||||||
user_site_packages = Language::Python.user_site_packages "python"
|
user_site_packages = Language::Python.user_site_packages "python"
|
||||||
pth_file = user_site_packages/"homebrew.pth"
|
pth_file = user_site_packages/"homebrew.pth"
|
||||||
instructions = <<-EOS.undent.gsub(/^/, " ")
|
instructions = <<~EOS.gsub(/^/, " ")
|
||||||
mkdir -p #{user_site_packages}
|
mkdir -p #{user_site_packages}
|
||||||
echo 'import site; site.addsitedir("#{homebrew_site_packages}")' >> #{pth_file}
|
echo 'import site; site.addsitedir("#{homebrew_site_packages}")' >> #{pth_file}
|
||||||
EOS
|
EOS
|
||||||
@ -119,7 +119,7 @@ class Caveats
|
|||||||
if f.keg_only?
|
if f.keg_only?
|
||||||
keg_site_packages = f.opt_prefix/"lib/python2.7/site-packages"
|
keg_site_packages = f.opt_prefix/"lib/python2.7/site-packages"
|
||||||
unless Language::Python.in_sys_path?("python", keg_site_packages)
|
unless Language::Python.in_sys_path?("python", keg_site_packages)
|
||||||
s = <<-EOS.undent
|
s = <<~EOS
|
||||||
If you need Python to find bindings for this keg-only formula, run:
|
If you need Python to find bindings for this keg-only formula, run:
|
||||||
echo #{keg_site_packages} >> #{homebrew_site_packages/f.name}.pth
|
echo #{keg_site_packages} >> #{homebrew_site_packages/f.name}.pth
|
||||||
EOS
|
EOS
|
||||||
@ -131,7 +131,7 @@ class Caveats
|
|||||||
return if Language::Python.reads_brewed_pth_files?("python")
|
return if Language::Python.reads_brewed_pth_files?("python")
|
||||||
|
|
||||||
if !Language::Python.in_sys_path?("python", homebrew_site_packages)
|
if !Language::Python.in_sys_path?("python", homebrew_site_packages)
|
||||||
s = <<-EOS.undent
|
s = <<~EOS
|
||||||
Python modules have been installed and Homebrew's site-packages is not
|
Python modules have been installed and Homebrew's site-packages is not
|
||||||
in your Python sys.path, so you will not be able to import the modules
|
in your Python sys.path, so you will not be able to import the modules
|
||||||
this formula installed. If you plan to develop with these modules,
|
this formula installed. If you plan to develop with these modules,
|
||||||
@ -139,7 +139,7 @@ class Caveats
|
|||||||
EOS
|
EOS
|
||||||
s += instructions
|
s += instructions
|
||||||
elsif keg.python_pth_files_installed?
|
elsif keg.python_pth_files_installed?
|
||||||
s = <<-EOS.undent
|
s = <<~EOS
|
||||||
This formula installed .pth files to Homebrew's site-packages and your
|
This formula installed .pth files to Homebrew's site-packages and your
|
||||||
Python isn't configured to process them, so you will not be able to
|
Python isn't configured to process them, so you will not be able to
|
||||||
import the modules this formula installed. If you plan to develop
|
import the modules this formula installed. If you plan to develop
|
||||||
@ -155,7 +155,7 @@ class Caveats
|
|||||||
return unless keg
|
return unless keg
|
||||||
return unless keg.elisp_installed?
|
return unless keg.elisp_installed?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Emacs Lisp files have been installed to:
|
Emacs Lisp files have been installed to:
|
||||||
#{HOMEBREW_PREFIX}/share/emacs/site-lisp/#{f.name}
|
#{HOMEBREW_PREFIX}/share/emacs/site-lisp/#{f.name}
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -38,7 +38,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
def report_unremovable_kegs
|
def report_unremovable_kegs
|
||||||
ofail <<-EOS.undent
|
ofail <<~EOS
|
||||||
Could not cleanup old kegs! Fix your permissions on:
|
Could not cleanup old kegs! Fix your permissions on:
|
||||||
#{Cleanup.unremovable_kegs.join "\n "}
|
#{Cleanup.unremovable_kegs.join "\n "}
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -43,7 +43,7 @@ module Homebrew
|
|||||||
detected_name = basename[/(.*?)-?#{Regexp.escape(version)}/, 1] || basename
|
detected_name = basename[/(.*?)-?#{Regexp.escape(version)}/, 1] || basename
|
||||||
canonical_name = Formulary.canonical_name(detected_name)
|
canonical_name = Formulary.canonical_name(detected_name)
|
||||||
|
|
||||||
odie <<-EOS.undent if detected_name != canonical_name
|
odie <<~EOS if detected_name != canonical_name
|
||||||
The detected name #{detected_name.inspect} exists in Homebrew as an alias
|
The detected name #{detected_name.inspect} exists in Homebrew as an alias
|
||||||
of #{canonical_name.inspect}. Consider using the canonical name instead:
|
of #{canonical_name.inspect}. Consider using the canonical name instead:
|
||||||
brew diy --name=#{canonical_name}
|
brew diy --name=#{canonical_name}
|
||||||
|
|||||||
@ -43,7 +43,7 @@ module Homebrew
|
|||||||
out = checks.send(method)
|
out = checks.send(method)
|
||||||
next if out.nil? || out.empty?
|
next if out.nil? || out.empty?
|
||||||
if first_warning
|
if first_warning
|
||||||
$stderr.puts <<-EOS.undent
|
$stderr.puts <<~EOS
|
||||||
#{Tty.bold}Please note that these warnings are just used to help the Homebrew maintainers
|
#{Tty.bold}Please note that these warnings are just used to help the Homebrew maintainers
|
||||||
with debugging if you file an issue. If everything you use Homebrew for is
|
with debugging if you file an issue. If everything you use Homebrew for is
|
||||||
working fine: please don't worry and just ignore them. Thanks!#{Tty.reset}
|
working fine: please don't worry and just ignore them. Thanks!#{Tty.reset}
|
||||||
|
|||||||
@ -29,7 +29,7 @@ module Homebrew
|
|||||||
files["00.config.out"] = { content: s.string }
|
files["00.config.out"] = { content: s.string }
|
||||||
files["00.doctor.out"] = { content: `brew doctor 2>&1` }
|
files["00.doctor.out"] = { content: `brew doctor 2>&1` }
|
||||||
unless f.core_formula?
|
unless f.core_formula?
|
||||||
tap = <<-EOS.undent
|
tap = <<~EOS
|
||||||
Formula: #{f.name}
|
Formula: #{f.name}
|
||||||
Tap: #{f.tap}
|
Tap: #{f.tap}
|
||||||
Path: #{f.path}
|
Path: #{f.path}
|
||||||
@ -47,7 +47,7 @@ module Homebrew
|
|||||||
|
|
||||||
if ARGV.include?("--new-issue") || ARGV.switch?("n")
|
if ARGV.include?("--new-issue") || ARGV.switch?("n")
|
||||||
if GitHub.api_credentials_type == :none
|
if GitHub.api_credentials_type == :none
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
You can create a new personal access token:
|
You can create a new personal access token:
|
||||||
#{GitHub::ALL_SCOPES_URL}
|
#{GitHub::ALL_SCOPES_URL}
|
||||||
and then set the new HOMEBREW_GITHUB_API_TOKEN as the authentication method.
|
and then set the new HOMEBREW_GITHUB_API_TOKEN as the authentication method.
|
||||||
@ -64,7 +64,7 @@ module Homebrew
|
|||||||
|
|
||||||
def brief_build_info(f)
|
def brief_build_info(f)
|
||||||
build_time_str = f.logs.ctime.strftime("%Y-%m-%d %H:%M:%S")
|
build_time_str = f.logs.ctime.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
s = <<-EOS.undent
|
s = <<~EOS
|
||||||
Homebrew build logs for #{f.full_name} on #{OS_VERSION}
|
Homebrew build logs for #{f.full_name} on #{OS_VERSION}
|
||||||
EOS
|
EOS
|
||||||
if ARGV.include?("--with-hostname")
|
if ARGV.include?("--with-hostname")
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
HOMEBREW_HELP = <<-EOS.unindent.freeze
|
HOMEBREW_HELP = <<~EOS.freeze
|
||||||
Example usage:
|
Example usage:
|
||||||
brew search [TEXT|/REGEX/]
|
brew search [TEXT|/REGEX/]
|
||||||
brew (info|home|options) [FORMULA...]
|
brew (info|home|options) [FORMULA...]
|
||||||
|
|||||||
@ -128,7 +128,7 @@ module Homebrew
|
|||||||
"#{c.name}#{reason}"
|
"#{c.name}#{reason}"
|
||||||
end.sort!
|
end.sort!
|
||||||
unless conflicts.empty?
|
unless conflicts.empty?
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
Conflicts with:
|
Conflicts with:
|
||||||
#{conflicts.join("\n ")}
|
#{conflicts.join("\n ")}
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -110,17 +110,17 @@ module Homebrew
|
|||||||
ARGV.formulae.each do |f|
|
ARGV.formulae.each do |f|
|
||||||
# head-only without --HEAD is an error
|
# head-only without --HEAD is an error
|
||||||
if !ARGV.build_head? && f.stable.nil? && f.devel.nil?
|
if !ARGV.build_head? && f.stable.nil? && f.devel.nil?
|
||||||
raise <<-EOS.undent
|
raise <<~EOS
|
||||||
#{f.full_name} is a head-only formula
|
#{f.full_name} is a head-only formula
|
||||||
Install with `brew install --HEAD #{f.full_name}`
|
Install with `brew install --HEAD #{f.full_name}`
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
# devel-only without --devel is an error
|
# devel-only without --devel is an error
|
||||||
if !ARGV.build_devel? && f.stable.nil? && f.head.nil?
|
if !ARGV.build_devel? && f.stable.nil? && f.head.nil?
|
||||||
raise <<-EOS.undent
|
raise <<~EOS
|
||||||
#{f.full_name} is a devel-only formula
|
#{f.full_name} is a devel-only formula
|
||||||
Install with `brew install --devel #{f.full_name}`
|
Install with `brew install --devel #{f.full_name}`
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -150,12 +150,12 @@ module Homebrew
|
|||||||
# sure --force flag is passed.
|
# sure --force flag is passed.
|
||||||
if f.outdated?
|
if f.outdated?
|
||||||
optlinked_version = Keg.for(f.opt_prefix).version
|
optlinked_version = Keg.for(f.opt_prefix).version
|
||||||
onoe <<-EOS.undent
|
onoe <<~EOS
|
||||||
#{f.full_name} #{optlinked_version} is already installed
|
#{f.full_name} #{optlinked_version} is already installed
|
||||||
To upgrade to #{f.version}, run `brew upgrade #{f.name}`
|
To upgrade to #{f.version}, run `brew upgrade #{f.name}`
|
||||||
EOS
|
EOS
|
||||||
else
|
else
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
#{f.full_name} #{f.pkg_version} is already installed
|
#{f.full_name} #{f.pkg_version} is already installed
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -173,13 +173,13 @@ module Homebrew
|
|||||||
msg = "#{f.full_name} #{installed_version} is already installed"
|
msg = "#{f.full_name} #{installed_version} is already installed"
|
||||||
linked_not_equals_installed = f.linked_version != installed_version
|
linked_not_equals_installed = f.linked_version != installed_version
|
||||||
if f.linked? && linked_not_equals_installed
|
if f.linked? && linked_not_equals_installed
|
||||||
msg = <<-EOS.undent
|
msg = <<~EOS
|
||||||
#{msg}
|
#{msg}
|
||||||
The currently linked version is #{f.linked_version}
|
The currently linked version is #{f.linked_version}
|
||||||
You can use `brew switch #{f} #{installed_version}` to link this version.
|
You can use `brew switch #{f} #{installed_version}` to link this version.
|
||||||
EOS
|
EOS
|
||||||
elsif !f.linked? || f.keg_only?
|
elsif !f.linked? || f.keg_only?
|
||||||
msg = <<-EOS.undent
|
msg = <<~EOS
|
||||||
#{msg}, it's just not linked.
|
#{msg}, it's just not linked.
|
||||||
You can use `brew link #{f}` to link this version.
|
You can use `brew link #{f}` to link this version.
|
||||||
EOS
|
EOS
|
||||||
@ -188,7 +188,7 @@ module Homebrew
|
|||||||
elsif !f.any_version_installed? && old_formula = f.old_installed_formulae.first
|
elsif !f.any_version_installed? && old_formula = f.old_installed_formulae.first
|
||||||
msg = "#{old_formula.full_name} #{old_formula.installed_version} already installed"
|
msg = "#{old_formula.full_name} #{old_formula.installed_version} already installed"
|
||||||
if !old_formula.linked? && !old_formula.keg_only?
|
if !old_formula.linked? && !old_formula.keg_only?
|
||||||
msg = <<-EOS.undent
|
msg = <<~EOS
|
||||||
#{msg}, it's just not linked.
|
#{msg}, it's just not linked.
|
||||||
You can use `brew link #{old_formula.full_name}` to link this version.
|
You can use `brew link #{old_formula.full_name}` to link this version.
|
||||||
EOS
|
EOS
|
||||||
@ -197,7 +197,7 @@ module Homebrew
|
|||||||
elsif f.migration_needed? && !ARGV.force?
|
elsif f.migration_needed? && !ARGV.force?
|
||||||
# Check if the formula we try to install is the same as installed
|
# Check if the formula we try to install is the same as installed
|
||||||
# but not migrated one. If --force passed then install anyway.
|
# but not migrated one. If --force passed then install anyway.
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
#{f.oldname} already installed, it's just not migrated
|
#{f.oldname} already installed, it's just not migrated
|
||||||
You can migrate formula with `brew migrate #{f}`
|
You can migrate formula with `brew migrate #{f}`
|
||||||
Or you can force install it with `brew install #{f} --force`
|
Or you can force install it with `brew install #{f} --force`
|
||||||
@ -283,7 +283,7 @@ module Homebrew
|
|||||||
def check_ppc
|
def check_ppc
|
||||||
case Hardware::CPU.type
|
case Hardware::CPU.type
|
||||||
when :ppc
|
when :ppc
|
||||||
abort <<-EOS.undent
|
abort <<~EOS
|
||||||
Sorry, Homebrew does not support your computer's CPU architecture.
|
Sorry, Homebrew does not support your computer's CPU architecture.
|
||||||
For PPC support, see: https://github.com/mistydemeo/tigerbrew
|
For PPC support, see: https://github.com/mistydemeo/tigerbrew
|
||||||
EOS
|
EOS
|
||||||
@ -308,7 +308,7 @@ module Homebrew
|
|||||||
def check_cellar
|
def check_cellar
|
||||||
FileUtils.mkdir_p HOMEBREW_CELLAR unless File.exist? HOMEBREW_CELLAR
|
FileUtils.mkdir_p HOMEBREW_CELLAR unless File.exist? HOMEBREW_CELLAR
|
||||||
rescue
|
rescue
|
||||||
raise <<-EOS.undent
|
raise <<~EOS
|
||||||
Could not create #{HOMEBREW_CELLAR}
|
Could not create #{HOMEBREW_CELLAR}
|
||||||
Check you have permission to write to #{HOMEBREW_CELLAR.parent}
|
Check you have permission to write to #{HOMEBREW_CELLAR.parent}
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -29,7 +29,7 @@ module Homebrew
|
|||||||
keg_only = keg_only?(keg.rack)
|
keg_only = keg_only?(keg.rack)
|
||||||
if HOMEBREW_PREFIX.to_s == "/usr/local" && keg_only &&
|
if HOMEBREW_PREFIX.to_s == "/usr/local" && keg_only &&
|
||||||
keg.name.start_with?("openssl", "libressl")
|
keg.name.start_with?("openssl", "libressl")
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
Refusing to link: #{keg.name}
|
Refusing to link: #{keg.name}
|
||||||
Linking keg-only #{keg.name} means you may end up linking against the insecure,
|
Linking keg-only #{keg.name} means you may end up linking against the insecure,
|
||||||
deprecated system OpenSSL while using the headers from Homebrew's #{keg.name}.
|
deprecated system OpenSSL while using the headers from Homebrew's #{keg.name}.
|
||||||
|
|||||||
@ -19,7 +19,7 @@ module Homebrew
|
|||||||
module_function
|
module_function
|
||||||
|
|
||||||
def linkapps
|
def linkapps
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
`brew linkapps` has been deprecated and will eventually be removed!
|
`brew linkapps` has been deprecated and will eventually be removed!
|
||||||
|
|
||||||
Unfortunately `brew linkapps` cannot behave nicely with e.g. Spotlight using
|
Unfortunately `brew linkapps` cannot behave nicely with e.g. Spotlight using
|
||||||
|
|||||||
@ -31,7 +31,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
if File.exist? "#{repo}/.git/shallow"
|
if File.exist? "#{repo}/.git/shallow"
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
#{name} is a shallow clone so only partial output will be shown.
|
#{name} is a shallow clone so only partial output will be shown.
|
||||||
To get a full clone run:
|
To get a full clone run:
|
||||||
git -C "#{git_cd}" fetch --unshallow
|
git -C "#{git_cd}" fetch --unshallow
|
||||||
|
|||||||
@ -87,7 +87,7 @@ module Homebrew
|
|||||||
arg.include?(char) && !arg.start_with?("/")
|
arg.include?(char) && !arg.start_with?("/")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
ohai <<-EOS.undent
|
ohai <<~EOS
|
||||||
Did you mean to perform a regular expression search?
|
Did you mean to perform a regular expression search?
|
||||||
Surround your query with /slashes/ to search locally by regex.
|
Surround your query with /slashes/ to search locally by regex.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -27,14 +27,14 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
ENV["PS1"] = 'brew \[\033[1;32m\]\w\[\033[0m\]$ '
|
ENV["PS1"] = 'brew \[\033[1;32m\]\w\[\033[0m\]$ '
|
||||||
ENV["VERBOSE"] = "1"
|
ENV["VERBOSE"] = "1"
|
||||||
puts <<-EOS.undent_________________________________________________________72
|
puts <<~EOS
|
||||||
Your shell has been configured to use Homebrew's build environment;
|
Your shell has been configured to use Homebrew's build environment;
|
||||||
this should help you build stuff. Notably though, the system versions of
|
this should help you build stuff. Notably though, the system versions of
|
||||||
gem and pip will ignore our configuration and insist on using the
|
gem and pip will ignore our configuration and insist on using the
|
||||||
environment they were built under (mostly). Sadly, scons will also
|
environment they were built under (mostly). Sadly, scons will also
|
||||||
ignore our configuration.
|
ignore our configuration.
|
||||||
When done, type `exit'.
|
When done, type `exit'.
|
||||||
EOS
|
EOS
|
||||||
$stdout.flush
|
$stdout.flush
|
||||||
exec ENV["SHELL"]
|
exec ENV["SHELL"]
|
||||||
end
|
end
|
||||||
|
|||||||
@ -131,7 +131,7 @@ module Homebrew
|
|||||||
|
|
||||||
class DeveloperDependentsMessage < DependentsMessage
|
class DeveloperDependentsMessage < DependentsMessage
|
||||||
def output
|
def output
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
#{list reqs} #{are_required_by_deps}.
|
#{list reqs} #{are_required_by_deps}.
|
||||||
You can silence this warning with:
|
You can silence this warning with:
|
||||||
#{sample_command}
|
#{sample_command}
|
||||||
@ -141,7 +141,7 @@ module Homebrew
|
|||||||
|
|
||||||
class NondeveloperDependentsMessage < DependentsMessage
|
class NondeveloperDependentsMessage < DependentsMessage
|
||||||
def output
|
def output
|
||||||
ofail <<-EOS.undent
|
ofail <<~EOS
|
||||||
Refusing to uninstall #{list reqs}
|
Refusing to uninstall #{list reqs}
|
||||||
because #{they reqs} #{are_required_by_deps}.
|
because #{they reqs} #{are_required_by_deps}.
|
||||||
You can override this and force removal with:
|
You can override this and force removal with:
|
||||||
|
|||||||
@ -20,7 +20,7 @@ module Homebrew
|
|||||||
module_function
|
module_function
|
||||||
|
|
||||||
def unlinkapps
|
def unlinkapps
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
`brew unlinkapps` has been deprecated and will eventually be removed!
|
`brew unlinkapps` has been deprecated and will eventually be removed!
|
||||||
|
|
||||||
Unfortunately `brew linkapps` cannot behave nicely with e.g. Spotlight using either aliases or symlinks and Homebrew formulae do not build "proper" `.app` bundles that can be relocated. Instead, please consider using `brew cask` and migrate formulae using `.app`s to casks.
|
Unfortunately `brew linkapps` cannot behave nicely with e.g. Spotlight using either aliases or symlinks and Homebrew formulae do not build "proper" `.app` bundles that can be relocated. Instead, please consider using `brew cask` and migrate formulae using `.app`s to casks.
|
||||||
|
|||||||
@ -33,7 +33,7 @@ module Homebrew
|
|||||||
|
|
||||||
# Use an extra newline and bold to avoid this being missed.
|
# Use an extra newline and bold to avoid this being missed.
|
||||||
ohai "Homebrew has enabled anonymous aggregate user behaviour analytics."
|
ohai "Homebrew has enabled anonymous aggregate user behaviour analytics."
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
#{Tty.bold}Read the analytics documentation (and how to opt-out) here:
|
#{Tty.bold}Read the analytics documentation (and how to opt-out) here:
|
||||||
#{Formatter.url("https://docs.brew.sh/Analytics.html")}#{Tty.reset}
|
#{Formatter.url("https://docs.brew.sh/Analytics.html")}#{Tty.reset}
|
||||||
|
|
||||||
@ -167,7 +167,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
if @migration_failed
|
if @migration_failed
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
Failed to migrate #{legacy_cache} to
|
Failed to migrate #{legacy_cache} to
|
||||||
#{HOMEBREW_CACHE}. Please do so manually.
|
#{HOMEBREW_CACHE}. Please do so manually.
|
||||||
EOS
|
EOS
|
||||||
@ -176,7 +176,7 @@ module Homebrew
|
|||||||
FileUtils.rm_rf legacy_cache
|
FileUtils.rm_rf legacy_cache
|
||||||
if legacy_cache.exist?
|
if legacy_cache.exist?
|
||||||
FileUtils.touch migration_attempted_file
|
FileUtils.touch migration_attempted_file
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
Failed to delete #{legacy_cache}.
|
Failed to delete #{legacy_cache}.
|
||||||
Please do so manually.
|
Please do so manually.
|
||||||
EOS
|
EOS
|
||||||
@ -191,7 +191,7 @@ module Homebrew
|
|||||||
ohai "Migrating HOMEBREW_REPOSITORY (please wait)..."
|
ohai "Migrating HOMEBREW_REPOSITORY (please wait)..."
|
||||||
|
|
||||||
unless HOMEBREW_PREFIX.writable_real?
|
unless HOMEBREW_PREFIX.writable_real?
|
||||||
ofail <<-EOS.undent
|
ofail <<~EOS
|
||||||
#{HOMEBREW_PREFIX} is not writable.
|
#{HOMEBREW_PREFIX} is not writable.
|
||||||
|
|
||||||
You should change the ownership and permissions of #{HOMEBREW_PREFIX}
|
You should change the ownership and permissions of #{HOMEBREW_PREFIX}
|
||||||
@ -205,7 +205,7 @@ module Homebrew
|
|||||||
new_homebrew_repository = Pathname.new "/usr/local/Homebrew"
|
new_homebrew_repository = Pathname.new "/usr/local/Homebrew"
|
||||||
new_homebrew_repository.rmdir_if_possible
|
new_homebrew_repository.rmdir_if_possible
|
||||||
if new_homebrew_repository.exist?
|
if new_homebrew_repository.exist?
|
||||||
ofail <<-EOS.undent
|
ofail <<~EOS
|
||||||
#{new_homebrew_repository} already exists.
|
#{new_homebrew_repository} already exists.
|
||||||
Please remove it manually or uninstall and reinstall Homebrew into a new
|
Please remove it manually or uninstall and reinstall Homebrew into a new
|
||||||
location as the migration cannot be done automatically.
|
location as the migration cannot be done automatically.
|
||||||
@ -258,7 +258,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
unless unremovable_paths.empty?
|
unless unremovable_paths.empty?
|
||||||
ofail <<-EOS.undent
|
ofail <<~EOS
|
||||||
Could not remove old HOMEBREW_REPOSITORY paths!
|
Could not remove old HOMEBREW_REPOSITORY paths!
|
||||||
Please do this manually with:
|
Please do this manually with:
|
||||||
sudo rm -rf #{unremovable_paths.join " "}
|
sudo rm -rf #{unremovable_paths.join " "}
|
||||||
@ -274,7 +274,7 @@ module Homebrew
|
|||||||
begin
|
begin
|
||||||
FileUtils.ln_s(src.relative_path_from(dst.parent), dst)
|
FileUtils.ln_s(src.relative_path_from(dst.parent), dst)
|
||||||
rescue Errno::EACCES, Errno::ENOENT
|
rescue Errno::EACCES, Errno::ENOENT
|
||||||
ofail <<-EOS.undent
|
ofail <<~EOS
|
||||||
Could not create symlink at #{dst}!
|
Could not create symlink at #{dst}!
|
||||||
Please do this manually with:
|
Please do this manually with:
|
||||||
sudo ln -sf #{src} #{dst}
|
sudo ln -sf #{src} #{dst}
|
||||||
@ -285,13 +285,13 @@ module Homebrew
|
|||||||
link_completions_manpages_and_docs(new_homebrew_repository)
|
link_completions_manpages_and_docs(new_homebrew_repository)
|
||||||
|
|
||||||
ohai "Migrated HOMEBREW_REPOSITORY to #{new_homebrew_repository}!"
|
ohai "Migrated HOMEBREW_REPOSITORY to #{new_homebrew_repository}!"
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
Homebrew no longer needs to have ownership of /usr/local. If you wish you can
|
Homebrew no longer needs to have ownership of /usr/local. If you wish you can
|
||||||
return /usr/local to its default ownership with:
|
return /usr/local to its default ownership with:
|
||||||
sudo chown root:wheel #{HOMEBREW_PREFIX}
|
sudo chown root:wheel #{HOMEBREW_PREFIX}
|
||||||
EOS
|
EOS
|
||||||
rescue => e
|
rescue => e
|
||||||
ofail <<-EOS.undent
|
ofail <<~EOS
|
||||||
#{Tty.bold}Failed to migrate HOMEBREW_REPOSITORY to #{new_homebrew_repository}!#{Tty.reset}
|
#{Tty.bold}Failed to migrate HOMEBREW_REPOSITORY to #{new_homebrew_repository}!#{Tty.reset}
|
||||||
The error was:
|
The error was:
|
||||||
#{e}
|
#{e}
|
||||||
@ -309,7 +309,7 @@ module Homebrew
|
|||||||
Utils::Link.link_manpages(repository, command)
|
Utils::Link.link_manpages(repository, command)
|
||||||
Utils::Link.link_docs(repository, command)
|
Utils::Link.link_docs(repository, command)
|
||||||
rescue => e
|
rescue => e
|
||||||
ofail <<-EOS.undent
|
ofail <<~EOS
|
||||||
Failed to link all completions, docs and manpages:
|
Failed to link all completions, docs and manpages:
|
||||||
#{e}
|
#{e}
|
||||||
EOS
|
EOS
|
||||||
@ -449,7 +449,7 @@ class Reporter
|
|||||||
next unless (HOMEBREW_PREFIX/"Caskroom"/new_name).exist?
|
next unless (HOMEBREW_PREFIX/"Caskroom"/new_name).exist?
|
||||||
new_tap = Tap.fetch(new_tap_name)
|
new_tap = Tap.fetch(new_tap_name)
|
||||||
new_tap.install unless new_tap.installed?
|
new_tap.install unless new_tap.installed?
|
||||||
ohai "#{name} has been moved to Homebrew.", <<-EOS.undent
|
ohai "#{name} has been moved to Homebrew.", <<~EOS
|
||||||
To uninstall the cask run:
|
To uninstall the cask run:
|
||||||
brew cask uninstall --force #{name}
|
brew cask uninstall --force #{name}
|
||||||
EOS
|
EOS
|
||||||
@ -480,14 +480,14 @@ class Reporter
|
|||||||
system HOMEBREW_BREW_FILE, "prune"
|
system HOMEBREW_BREW_FILE, "prune"
|
||||||
ohai "brew cask install #{new_name}"
|
ohai "brew cask install #{new_name}"
|
||||||
system HOMEBREW_BREW_FILE, "cask", "install", new_name
|
system HOMEBREW_BREW_FILE, "cask", "install", new_name
|
||||||
ohai <<-EOS.undent
|
ohai <<~EOS
|
||||||
#{name} has been moved to Homebrew-Cask.
|
#{name} has been moved to Homebrew-Cask.
|
||||||
The existing keg has been unlinked.
|
The existing keg has been unlinked.
|
||||||
Please uninstall the formula when convenient by running:
|
Please uninstall the formula when convenient by running:
|
||||||
brew uninstall --force #{name}
|
brew uninstall --force #{name}
|
||||||
EOS
|
EOS
|
||||||
else
|
else
|
||||||
ohai "#{name} has been moved to Homebrew-Cask.", <<-EOS.undent
|
ohai "#{name} has been moved to Homebrew-Cask.", <<~EOS
|
||||||
To uninstall the formula and install the cask run:
|
To uninstall the formula and install the cask run:
|
||||||
brew uninstall --force #{name}
|
brew uninstall --force #{name}
|
||||||
brew cask install #{new_name}
|
brew cask install #{new_name}
|
||||||
|
|||||||
@ -26,7 +26,7 @@ module Homebrew
|
|||||||
Homebrew.perform_preinstall_checks
|
Homebrew.perform_preinstall_checks
|
||||||
|
|
||||||
if ARGV.include?("--all")
|
if ARGV.include?("--all")
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
We decided to not change the behaviour of `brew upgrade` so
|
We decided to not change the behaviour of `brew upgrade` so
|
||||||
`brew upgrade --all` is equivalent to `brew upgrade` without any other
|
`brew upgrade --all` is equivalent to `brew upgrade` without any other
|
||||||
arguments (so the `--all` is a no-op and can be removed).
|
arguments (so the `--all` is a no-op and can be removed).
|
||||||
|
|||||||
@ -26,3 +26,4 @@ require "compat/ENV/shared"
|
|||||||
require "compat/ENV/std"
|
require "compat/ENV/std"
|
||||||
require "compat/ENV/super"
|
require "compat/ENV/super"
|
||||||
require "compat/utils/shell"
|
require "compat/utils/shell"
|
||||||
|
require "compat/extend/string"
|
||||||
|
|||||||
18
Library/Homebrew/compat/extend/string.rb
Normal file
18
Library/Homebrew/compat/extend/string.rb
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
class String
|
||||||
|
def undent
|
||||||
|
gsub(/^[ \t]{#{(slice(/^[ \t]+/) || '').length}}/, "")
|
||||||
|
end
|
||||||
|
alias unindent undent
|
||||||
|
|
||||||
|
# eg:
|
||||||
|
# if foo then <<-EOS.undent_________________________________________________________72
|
||||||
|
# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
|
||||||
|
# eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
|
||||||
|
# minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
|
||||||
|
# ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
|
||||||
|
# voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
|
||||||
|
# sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt
|
||||||
|
# mollit anim id est laborum.
|
||||||
|
# EOS
|
||||||
|
alias undent_________________________________________________________72 undent
|
||||||
|
end
|
||||||
@ -31,7 +31,7 @@ class AmazonWebServicesFormula < Formula
|
|||||||
def standard_instructions(home_name, home_value = libexec)
|
def standard_instructions(home_name, home_value = libexec)
|
||||||
odeprecated "AmazonWebServicesFormula#standard_instructions", "Formula#caveats"
|
odeprecated "AmazonWebServicesFormula#standard_instructions", "Formula#caveats"
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Before you can use these tools you must export some variables to your $SHELL.
|
Before you can use these tools you must export some variables to your $SHELL.
|
||||||
|
|
||||||
To export the needed variables, add them to your dotfiles.
|
To export the needed variables, add them to your dotfiles.
|
||||||
|
|||||||
@ -5,7 +5,7 @@ module Hbc
|
|||||||
include Options
|
include Options
|
||||||
|
|
||||||
option "--binarydir=PATH", (lambda do |*|
|
option "--binarydir=PATH", (lambda do |*|
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
Option --binarydir is obsolete!
|
Option --binarydir is obsolete!
|
||||||
Homebrew-Cask now uses the same location as your Homebrew installation for executable links.
|
Homebrew-Cask now uses the same location as your Homebrew installation for executable links.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -5,7 +5,7 @@ class CxxStdlib
|
|||||||
|
|
||||||
class CompatibilityError < StandardError
|
class CompatibilityError < StandardError
|
||||||
def initialize(formula, dep, stdlib)
|
def initialize(formula, dep, stdlib)
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
#{formula.full_name} dependency #{dep.name} was built with a different C++ standard
|
#{formula.full_name} dependency #{dep.name} was built with a different C++ standard
|
||||||
library (#{stdlib.type_string} from #{stdlib.compiler}). This may cause problems at runtime.
|
library (#{stdlib.type_string} from #{stdlib.compiler}). This may cause problems at runtime.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -368,7 +368,7 @@ class FormulaAuditor
|
|||||||
|
|
||||||
if valid_versioned_aliases.empty?
|
if valid_versioned_aliases.empty?
|
||||||
if formula.tap
|
if formula.tap
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
Formula has other versions so create a versioned alias:
|
Formula has other versions so create a versioned alias:
|
||||||
cd #{formula.tap.alias_dir}
|
cd #{formula.tap.alias_dir}
|
||||||
ln -s #{formula.path.to_s.gsub(formula.tap.path, "..")} #{alias_name}
|
ln -s #{formula.path.to_s.gsub(formula.tap.path, "..")} #{alias_name}
|
||||||
@ -379,7 +379,7 @@ class FormulaAuditor
|
|||||||
end
|
end
|
||||||
|
|
||||||
unless invalid_versioned_aliases.empty?
|
unless invalid_versioned_aliases.empty?
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
Formula has invalid versioned aliases:
|
Formula has invalid versioned aliases:
|
||||||
#{invalid_versioned_aliases.join("\n ")}
|
#{invalid_versioned_aliases.join("\n ")}
|
||||||
EOS
|
EOS
|
||||||
@ -476,7 +476,7 @@ class FormulaAuditor
|
|||||||
when "gfortran"
|
when "gfortran"
|
||||||
problem "Use `depends_on :fortran` instead of `depends_on 'gfortran'`"
|
problem "Use `depends_on :fortran` instead of `depends_on 'gfortran'`"
|
||||||
when "ruby"
|
when "ruby"
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
Don't use "ruby" as a dependency. If this formula requires a
|
Don't use "ruby" as a dependency. If this formula requires a
|
||||||
minimum Ruby version not provided by the system you should
|
minimum Ruby version not provided by the system you should
|
||||||
use the RubyRequirement:
|
use the RubyRequirement:
|
||||||
@ -484,7 +484,7 @@ class FormulaAuditor
|
|||||||
where "1.8" is the minimum version of Ruby required.
|
where "1.8" is the minimum version of Ruby required.
|
||||||
EOS
|
EOS
|
||||||
when "open-mpi", "mpich"
|
when "open-mpi", "mpich"
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
There are multiple conflicting ways to install MPI. Use an MPIRequirement:
|
There are multiple conflicting ways to install MPI. Use an MPIRequirement:
|
||||||
depends_on :mpi => [<lang list>]
|
depends_on :mpi => [<lang list>]
|
||||||
Where <lang list> is a comma delimited list that can include:
|
Where <lang list> is a comma delimited list that can include:
|
||||||
@ -492,7 +492,7 @@ class FormulaAuditor
|
|||||||
EOS
|
EOS
|
||||||
when *BUILD_TIME_DEPS
|
when *BUILD_TIME_DEPS
|
||||||
next if dep.build? || dep.run?
|
next if dep.build? || dep.run?
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
#{dep} dependency should be
|
#{dep} dependency should be
|
||||||
depends_on "#{dep}" => :build
|
depends_on "#{dep}" => :build
|
||||||
Or if it is indeed a runtime dependency
|
Or if it is indeed a runtime dependency
|
||||||
@ -541,7 +541,7 @@ class FormulaAuditor
|
|||||||
first_word = reason.split[0]
|
first_word = reason.split[0]
|
||||||
|
|
||||||
if reason =~ /\A[A-Z]/ && !reason.start_with?(*whitelist)
|
if reason =~ /\A[A-Z]/ && !reason.start_with?(*whitelist)
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
'#{first_word}' from the keg_only reason should be '#{first_word.downcase}'.
|
'#{first_word}' from the keg_only reason should be '#{first_word.downcase}'.
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -1010,7 +1010,7 @@ class FormulaAuditor
|
|||||||
return unless formula.tap&.official?
|
return unless formula.tap&.official?
|
||||||
return unless formula.tap.tap_migrations.key?(formula.name)
|
return unless formula.tap.tap_migrations.key?(formula.name)
|
||||||
|
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
#{formula.name} seems to be listed in tap_migrations.json!
|
#{formula.name} seems to be listed in tap_migrations.json!
|
||||||
Please remove #{formula.name} from present tap & tap_migrations.json
|
Please remove #{formula.name} from present tap & tap_migrations.json
|
||||||
before submitting it to Homebrew/homebrew-#{formula.tap.repo}.
|
before submitting it to Homebrew/homebrew-#{formula.tap.repo}.
|
||||||
@ -1021,7 +1021,7 @@ class FormulaAuditor
|
|||||||
return unless formula.prefix.directory?
|
return unless formula.prefix.directory?
|
||||||
return unless Keg.new(formula.prefix).empty_installation?
|
return unless Keg.new(formula.prefix).empty_installation?
|
||||||
|
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
The installation seems to be empty. Please ensure the prefix
|
The installation seems to be empty. Please ensure the prefix
|
||||||
is set correctly and expected files are installed.
|
is set correctly and expected files are installed.
|
||||||
The prefix configure/make argument may be case-sensitive.
|
The prefix configure/make argument may be case-sensitive.
|
||||||
|
|||||||
@ -324,7 +324,7 @@ module Homebrew
|
|||||||
"#{key}: old: #{old_value}, new: #{value}"
|
"#{key}: old: #{old_value}, new: #{value}"
|
||||||
end
|
end
|
||||||
|
|
||||||
odie <<-EOS.undent
|
odie <<~EOS
|
||||||
--keep-old was passed but there are changes in:
|
--keep-old was passed but there are changes in:
|
||||||
#{mismatches.join("\n")}
|
#{mismatches.join("\n")}
|
||||||
EOS
|
EOS
|
||||||
@ -428,7 +428,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
unless mismatches.empty?
|
unless mismatches.empty?
|
||||||
odie <<-EOS.undent
|
odie <<~EOS
|
||||||
--keep-old was passed but there are changes in:
|
--keep-old was passed but there are changes in:
|
||||||
#{mismatches.join("\n")}
|
#{mismatches.join("\n")}
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -91,7 +91,7 @@ module Homebrew
|
|||||||
pull_requests = fetch_pull_requests(formula)
|
pull_requests = fetch_pull_requests(formula)
|
||||||
return unless pull_requests
|
return unless pull_requests
|
||||||
return if pull_requests.empty?
|
return if pull_requests.empty?
|
||||||
duplicates_message = <<-EOS.undent
|
duplicates_message = <<~EOS
|
||||||
These open pull requests may be duplicates:
|
These open pull requests may be duplicates:
|
||||||
#{pull_requests.map { |pr| "#{pr["title"]} #{pr["html_url"]}" }.join("\n")}
|
#{pull_requests.map { |pr| "#{pr["title"]} #{pr["html_url"]}" }.join("\n")}
|
||||||
EOS
|
EOS
|
||||||
@ -101,7 +101,7 @@ module Homebrew
|
|||||||
elsif !ARGV.force? && ARGV.flag?("--quiet")
|
elsif !ARGV.force? && ARGV.flag?("--quiet")
|
||||||
odie error_message
|
odie error_message
|
||||||
elsif !ARGV.force?
|
elsif !ARGV.force?
|
||||||
odie <<-EOS.undent
|
odie <<~EOS
|
||||||
#{duplicates_message.chomp}
|
#{duplicates_message.chomp}
|
||||||
#{error_message}
|
#{error_message}
|
||||||
EOS
|
EOS
|
||||||
@ -247,13 +247,13 @@ module Homebrew
|
|||||||
|
|
||||||
if new_formula_version < old_formula_version
|
if new_formula_version < old_formula_version
|
||||||
formula.path.atomic_write(backup_file) unless ARGV.dry_run?
|
formula.path.atomic_write(backup_file) unless ARGV.dry_run?
|
||||||
odie <<-EOS.undent
|
odie <<~EOS
|
||||||
You probably need to bump this formula manually since changing the
|
You probably need to bump this formula manually since changing the
|
||||||
version from #{old_formula_version} to #{new_formula_version} would be a downgrade.
|
version from #{old_formula_version} to #{new_formula_version} would be a downgrade.
|
||||||
EOS
|
EOS
|
||||||
elsif new_formula_version == old_formula_version
|
elsif new_formula_version == old_formula_version
|
||||||
formula.path.atomic_write(backup_file) unless ARGV.dry_run?
|
formula.path.atomic_write(backup_file) unless ARGV.dry_run?
|
||||||
odie <<-EOS.undent
|
odie <<~EOS
|
||||||
You probably need to bump this formula manually since the new version
|
You probably need to bump this formula manually since the new version
|
||||||
and old version are both #{new_formula_version}.
|
and old version are both #{new_formula_version}.
|
||||||
EOS
|
EOS
|
||||||
@ -312,17 +312,15 @@ module Homebrew
|
|||||||
remote = Utils.popen_read("hub fork 2>&1")[/remote:? (\S+)/, 1] if remote.to_s.empty?
|
remote = Utils.popen_read("hub fork 2>&1")[/remote:? (\S+)/, 1] if remote.to_s.empty?
|
||||||
odie "cannot get remote from 'hub'!" if remote.to_s.empty?
|
odie "cannot get remote from 'hub'!" if remote.to_s.empty?
|
||||||
safe_system "git", "push", "--set-upstream", remote, "#{branch}:#{branch}"
|
safe_system "git", "push", "--set-upstream", remote, "#{branch}:#{branch}"
|
||||||
pr_message = <<-EOS.undent
|
pr_message = <<~EOS
|
||||||
#{formula.name} #{new_formula_version}#{devel_message}
|
#{formula.name} #{new_formula_version}#{devel_message}
|
||||||
|
|
||||||
Created with `brew bump-formula-pr`.
|
Created with `brew bump-formula-pr`.
|
||||||
EOS
|
EOS
|
||||||
user_message = ARGV.value("message")
|
user_message = ARGV.value("message")
|
||||||
if user_message
|
if user_message
|
||||||
pr_message += <<-EOS.undent
|
pr_message += <<~EOS
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
#{user_message}
|
#{user_message}
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|||||||
@ -71,7 +71,7 @@ module Homebrew
|
|||||||
|
|
||||||
if Formula.aliases.include? fc.name
|
if Formula.aliases.include? fc.name
|
||||||
realname = Formulary.canonical_name(fc.name)
|
realname = Formulary.canonical_name(fc.name)
|
||||||
raise <<-EOS.undent
|
raise <<~EOS
|
||||||
The formula #{realname} is already aliased to #{fc.name}
|
The formula #{realname} is already aliased to #{fc.name}
|
||||||
Please check that you are not creating a duplicate.
|
Please check that you are not creating a duplicate.
|
||||||
To force creation use --force.
|
To force creation use --force.
|
||||||
@ -165,7 +165,7 @@ class FormulaCreator
|
|||||||
path.write ERB.new(template, nil, ">").result(binding)
|
path.write ERB.new(template, nil, ">").result(binding)
|
||||||
end
|
end
|
||||||
|
|
||||||
def template; <<-EOS.undent
|
def template; <<~EOS
|
||||||
# Documentation: https://docs.brew.sh/Formula-Cookbook.html
|
# Documentation: https://docs.brew.sh/Formula-Cookbook.html
|
||||||
# http://www.rubydoc.info/github/Homebrew/brew/master/Formula
|
# http://www.rubydoc.info/github/Homebrew/brew/master/Formula
|
||||||
# PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST!
|
# PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST!
|
||||||
|
|||||||
@ -11,7 +11,7 @@ module Homebrew
|
|||||||
|
|
||||||
def edit
|
def edit
|
||||||
unless (HOMEBREW_REPOSITORY/".git").directory?
|
unless (HOMEBREW_REPOSITORY/".git").directory?
|
||||||
raise <<-EOS.undent
|
raise <<~EOS
|
||||||
Changes will be lost!
|
Changes will be lost!
|
||||||
The first time you `brew update', all local changes will be lost, you should
|
The first time you `brew update', all local changes will be lost, you should
|
||||||
thus `brew update' before you `brew edit'!
|
thus `brew update' before you `brew edit'!
|
||||||
|
|||||||
@ -20,7 +20,7 @@ module Homebrew
|
|||||||
package_url = "#{bintray_repo_url}/#{bintray_package}"
|
package_url = "#{bintray_repo_url}/#{bintray_package}"
|
||||||
|
|
||||||
unless system "curl", "--silent", "--fail", "--output", "/dev/null", package_url
|
unless system "curl", "--silent", "--fail", "--output", "/dev/null", package_url
|
||||||
package_blob = <<-EOS.undent
|
package_blob = <<~EOS
|
||||||
{"name": "#{bintray_package}",
|
{"name": "#{bintray_package}",
|
||||||
"public_download_numbers": true,
|
"public_download_numbers": true,
|
||||||
"public_stats": true}
|
"public_stats": true}
|
||||||
|
|||||||
@ -24,7 +24,7 @@ module Homebrew
|
|||||||
|
|
||||||
(tap.path/"Formula").mkpath
|
(tap.path/"Formula").mkpath
|
||||||
|
|
||||||
readme = <<-EOS.undent
|
readme = <<~EOS
|
||||||
# #{titleized_user} #{titleized_repo}
|
# #{titleized_user} #{titleized_repo}
|
||||||
|
|
||||||
## How do I install these formulae?
|
## How do I install these formulae?
|
||||||
@ -43,7 +43,7 @@ module Homebrew
|
|||||||
EOS
|
EOS
|
||||||
write_path(tap, "README.md", readme)
|
write_path(tap, "README.md", readme)
|
||||||
|
|
||||||
travis = <<-EOS.undent
|
travis = <<~EOS
|
||||||
language: ruby
|
language: ruby
|
||||||
os: osx
|
os: osx
|
||||||
env: OSX=10.12
|
env: OSX=10.12
|
||||||
|
|||||||
@ -88,7 +88,7 @@ module Homebrew
|
|||||||
safe_system "brew", "update", "--verbose"
|
safe_system "brew", "update", "--verbose"
|
||||||
actual_end_commit = Utils.popen_read("git", "rev-parse", branch).chomp
|
actual_end_commit = Utils.popen_read("git", "rev-parse", branch).chomp
|
||||||
if start_commit != end_commit && start_commit == actual_end_commit
|
if start_commit != end_commit && start_commit == actual_end_commit
|
||||||
raise <<-EOS.undent
|
raise <<~EOS
|
||||||
brew update didn't update #{branch}!
|
brew update didn't update #{branch}!
|
||||||
Start commit: #{start_commit}
|
Start commit: #{start_commit}
|
||||||
Expected end commit: #{end_commit}
|
Expected end commit: #{end_commit}
|
||||||
|
|||||||
@ -92,7 +92,7 @@ module Homebrew
|
|||||||
def check_for_installed_developer_tools
|
def check_for_installed_developer_tools
|
||||||
return if DevelopmentTools.installed?
|
return if DevelopmentTools.installed?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
No developer tools installed.
|
No developer tools installed.
|
||||||
#{DevelopmentTools.installation_instructions}
|
#{DevelopmentTools.installation_instructions}
|
||||||
EOS
|
EOS
|
||||||
@ -101,7 +101,7 @@ module Homebrew
|
|||||||
def check_build_from_source
|
def check_build_from_source
|
||||||
return unless ENV["HOMEBREW_BUILD_FROM_SOURCE"]
|
return unless ENV["HOMEBREW_BUILD_FROM_SOURCE"]
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You have HOMEBREW_BUILD_FROM_SOURCE set. This environment variable is
|
You have HOMEBREW_BUILD_FROM_SOURCE set. This environment variable is
|
||||||
intended for use by Homebrew developers. If you are encountering errors,
|
intended for use by Homebrew developers. If you are encountering errors,
|
||||||
please try unsetting this. Please do not file issues if you encounter
|
please try unsetting this. Please do not file issues if you encounter
|
||||||
@ -114,7 +114,7 @@ module Homebrew
|
|||||||
bad_paths = PATH.new(ENV["HOMEBREW_PATH"]).select { |p| p.end_with?("/") }
|
bad_paths = PATH.new(ENV["HOMEBREW_PATH"]).select { |p| p.end_with?("/") }
|
||||||
return if bad_paths.empty?
|
return if bad_paths.empty?
|
||||||
|
|
||||||
inject_file_list bad_paths, <<-EOS.undent
|
inject_file_list bad_paths, <<~EOS
|
||||||
Some directories in your path end in a slash.
|
Some directories in your path end in a slash.
|
||||||
Directories in your path should not end in a slash. This can break other
|
Directories in your path should not end in a slash. This can break other
|
||||||
doctor checks. The following directories should be edited:
|
doctor checks. The following directories should be edited:
|
||||||
@ -136,7 +136,7 @@ module Homebrew
|
|||||||
# Only warn if Python lives with Anaconda, since is most problematic case.
|
# Only warn if Python lives with Anaconda, since is most problematic case.
|
||||||
return unless python_directory == anaconda_directory
|
return unless python_directory == anaconda_directory
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Anaconda is known to frequently break Homebrew builds, including Vim and
|
Anaconda is known to frequently break Homebrew builds, including Vim and
|
||||||
MacVim, due to bundling many duplicates of system and Homebrew-available
|
MacVim, due to bundling many duplicates of system and Homebrew-available
|
||||||
tools.
|
tools.
|
||||||
@ -182,7 +182,7 @@ module Homebrew
|
|||||||
"sentinel.dylib", # SentinelOne
|
"sentinel.dylib", # SentinelOne
|
||||||
]
|
]
|
||||||
|
|
||||||
__check_stray_files "/usr/local/lib", "*.dylib", white_list, <<-EOS.undent
|
__check_stray_files "/usr/local/lib", "*.dylib", white_list, <<~EOS
|
||||||
Unbrewed dylibs were found in /usr/local/lib.
|
Unbrewed dylibs were found in /usr/local/lib.
|
||||||
If you didn't put them there on purpose they could cause problems when
|
If you didn't put them there on purpose they could cause problems when
|
||||||
building Homebrew formulae, and may need to be deleted.
|
building Homebrew formulae, and may need to be deleted.
|
||||||
@ -209,7 +209,7 @@ module Homebrew
|
|||||||
"libtrustedcomponents.a", # Symantec Endpoint Protection
|
"libtrustedcomponents.a", # Symantec Endpoint Protection
|
||||||
]
|
]
|
||||||
|
|
||||||
__check_stray_files "/usr/local/lib", "*.a", white_list, <<-EOS.undent
|
__check_stray_files "/usr/local/lib", "*.a", white_list, <<~EOS
|
||||||
Unbrewed static libraries were found in /usr/local/lib.
|
Unbrewed static libraries were found in /usr/local/lib.
|
||||||
If you didn't put them there on purpose they could cause problems when
|
If you didn't put them there on purpose they could cause problems when
|
||||||
building Homebrew formulae, and may need to be deleted.
|
building Homebrew formulae, and may need to be deleted.
|
||||||
@ -229,7 +229,7 @@ module Homebrew
|
|||||||
"libublio.pc", # NTFS-3G
|
"libublio.pc", # NTFS-3G
|
||||||
]
|
]
|
||||||
|
|
||||||
__check_stray_files "/usr/local/lib/pkgconfig", "*.pc", white_list, <<-EOS.undent
|
__check_stray_files "/usr/local/lib/pkgconfig", "*.pc", white_list, <<~EOS
|
||||||
Unbrewed .pc files were found in /usr/local/lib/pkgconfig.
|
Unbrewed .pc files were found in /usr/local/lib/pkgconfig.
|
||||||
If you didn't put them there on purpose they could cause problems when
|
If you didn't put them there on purpose they could cause problems when
|
||||||
building Homebrew formulae, and may need to be deleted.
|
building Homebrew formulae, and may need to be deleted.
|
||||||
@ -250,7 +250,7 @@ module Homebrew
|
|||||||
"libublio.la", # NTFS-3G
|
"libublio.la", # NTFS-3G
|
||||||
]
|
]
|
||||||
|
|
||||||
__check_stray_files "/usr/local/lib", "*.la", white_list, <<-EOS.undent
|
__check_stray_files "/usr/local/lib", "*.la", white_list, <<~EOS
|
||||||
Unbrewed .la files were found in /usr/local/lib.
|
Unbrewed .la files were found in /usr/local/lib.
|
||||||
If you didn't put them there on purpose they could cause problems when
|
If you didn't put them there on purpose they could cause problems when
|
||||||
building Homebrew formulae, and may need to be deleted.
|
building Homebrew formulae, and may need to be deleted.
|
||||||
@ -269,7 +269,7 @@ module Homebrew
|
|||||||
"ntfs-3g/**/*.h", # NTFS-3G
|
"ntfs-3g/**/*.h", # NTFS-3G
|
||||||
]
|
]
|
||||||
|
|
||||||
__check_stray_files "/usr/local/include", "**/*.h", white_list, <<-EOS.undent
|
__check_stray_files "/usr/local/include", "**/*.h", white_list, <<~EOS
|
||||||
Unbrewed header files were found in /usr/local/include.
|
Unbrewed header files were found in /usr/local/include.
|
||||||
If you didn't put them there on purpose they could cause problems when
|
If you didn't put them there on purpose they could cause problems when
|
||||||
building Homebrew formulae, and may need to be deleted.
|
building Homebrew formulae, and may need to be deleted.
|
||||||
@ -291,7 +291,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
return if broken_symlinks.empty?
|
return if broken_symlinks.empty?
|
||||||
|
|
||||||
inject_file_list broken_symlinks, <<-EOS.undent
|
inject_file_list broken_symlinks, <<~EOS
|
||||||
Broken symlinks were found. Remove them with `brew prune`:
|
Broken symlinks were found. Remove them with `brew prune`:
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -300,7 +300,7 @@ module Homebrew
|
|||||||
world_writable = HOMEBREW_TEMP.stat.mode & 0777 == 0777
|
world_writable = HOMEBREW_TEMP.stat.mode & 0777 == 0777
|
||||||
return if !world_writable || HOMEBREW_TEMP.sticky?
|
return if !world_writable || HOMEBREW_TEMP.sticky?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
#{HOMEBREW_TEMP} is world-writable but does not have the sticky bit set.
|
#{HOMEBREW_TEMP} is world-writable but does not have the sticky bit set.
|
||||||
Please execute `sudo chmod +t #{HOMEBREW_TEMP}` in your Terminal.
|
Please execute `sudo chmod +t #{HOMEBREW_TEMP}` in your Terminal.
|
||||||
EOS
|
EOS
|
||||||
@ -309,7 +309,7 @@ module Homebrew
|
|||||||
def check_access_homebrew_repository
|
def check_access_homebrew_repository
|
||||||
return if HOMEBREW_REPOSITORY.writable_real?
|
return if HOMEBREW_REPOSITORY.writable_real?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
#{HOMEBREW_REPOSITORY} is not writable.
|
#{HOMEBREW_REPOSITORY} is not writable.
|
||||||
|
|
||||||
You should change the ownership and permissions of #{HOMEBREW_REPOSITORY}
|
You should change the ownership and permissions of #{HOMEBREW_REPOSITORY}
|
||||||
@ -330,7 +330,7 @@ module Homebrew
|
|||||||
|
|
||||||
return if not_writable_dirs.empty?
|
return if not_writable_dirs.empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
The following directories are not writable:
|
The following directories are not writable:
|
||||||
#{not_writable_dirs.join("\n")}
|
#{not_writable_dirs.join("\n")}
|
||||||
|
|
||||||
@ -348,7 +348,7 @@ module Homebrew
|
|||||||
return unless Language::Python.homebrew_site_packages.exist?
|
return unless Language::Python.homebrew_site_packages.exist?
|
||||||
return if Language::Python.homebrew_site_packages.writable_real?
|
return if Language::Python.homebrew_site_packages.writable_real?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
#{Language::Python.homebrew_site_packages} isn't writable.
|
#{Language::Python.homebrew_site_packages} isn't writable.
|
||||||
This can happen if you "sudo pip install" software that isn't managed
|
This can happen if you "sudo pip install" software that isn't managed
|
||||||
by Homebrew. If you install a formula with Python modules, the install
|
by Homebrew. If you install a formula with Python modules, the install
|
||||||
@ -364,7 +364,7 @@ module Homebrew
|
|||||||
return unless HOMEBREW_LOCK_DIR.exist?
|
return unless HOMEBREW_LOCK_DIR.exist?
|
||||||
return if HOMEBREW_LOCK_DIR.writable_real?
|
return if HOMEBREW_LOCK_DIR.writable_real?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
#{HOMEBREW_LOCK_DIR} isn't writable.
|
#{HOMEBREW_LOCK_DIR} isn't writable.
|
||||||
Homebrew writes lock files to this location.
|
Homebrew writes lock files to this location.
|
||||||
|
|
||||||
@ -378,7 +378,7 @@ module Homebrew
|
|||||||
return unless HOMEBREW_LOGS.exist?
|
return unless HOMEBREW_LOGS.exist?
|
||||||
return if HOMEBREW_LOGS.writable_real?
|
return if HOMEBREW_LOGS.writable_real?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
#{HOMEBREW_LOGS} isn't writable.
|
#{HOMEBREW_LOGS} isn't writable.
|
||||||
Homebrew writes debugging logs to this location.
|
Homebrew writes debugging logs to this location.
|
||||||
|
|
||||||
@ -392,7 +392,7 @@ module Homebrew
|
|||||||
return unless HOMEBREW_CACHE.exist?
|
return unless HOMEBREW_CACHE.exist?
|
||||||
return if HOMEBREW_CACHE.writable_real?
|
return if HOMEBREW_CACHE.writable_real?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
#{HOMEBREW_CACHE} isn't writable.
|
#{HOMEBREW_CACHE} isn't writable.
|
||||||
This can happen if you run `brew install` or `brew fetch` as another user.
|
This can happen if you run `brew install` or `brew fetch` as another user.
|
||||||
Homebrew caches downloaded files to this location.
|
Homebrew caches downloaded files to this location.
|
||||||
@ -407,7 +407,7 @@ module Homebrew
|
|||||||
return unless HOMEBREW_CELLAR.exist?
|
return unless HOMEBREW_CELLAR.exist?
|
||||||
return if HOMEBREW_CELLAR.writable_real?
|
return if HOMEBREW_CELLAR.writable_real?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
#{HOMEBREW_CELLAR} isn't writable.
|
#{HOMEBREW_CELLAR} isn't writable.
|
||||||
|
|
||||||
You should change the ownership and permissions of #{HOMEBREW_CELLAR}
|
You should change the ownership and permissions of #{HOMEBREW_CELLAR}
|
||||||
@ -421,7 +421,7 @@ module Homebrew
|
|||||||
return unless (HOMEBREW_REPOSITORY/"Cellar").exist?
|
return unless (HOMEBREW_REPOSITORY/"Cellar").exist?
|
||||||
return unless (HOMEBREW_PREFIX/"Cellar").exist?
|
return unless (HOMEBREW_PREFIX/"Cellar").exist?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You have multiple Cellars.
|
You have multiple Cellars.
|
||||||
You should delete #{HOMEBREW_REPOSITORY}/Cellar:
|
You should delete #{HOMEBREW_REPOSITORY}/Cellar:
|
||||||
rm -rf #{HOMEBREW_REPOSITORY}/Cellar
|
rm -rf #{HOMEBREW_REPOSITORY}/Cellar
|
||||||
@ -445,13 +445,13 @@ module Homebrew
|
|||||||
.select { |bn| File.exist? "/usr/bin/#{bn}" }
|
.select { |bn| File.exist? "/usr/bin/#{bn}" }
|
||||||
|
|
||||||
unless conflicts.empty?
|
unless conflicts.empty?
|
||||||
message = inject_file_list conflicts, <<-EOS.undent
|
message = inject_file_list conflicts, <<~EOS
|
||||||
/usr/bin occurs before #{HOMEBREW_PREFIX}/bin
|
/usr/bin occurs before #{HOMEBREW_PREFIX}/bin
|
||||||
This means that system-provided programs will be used instead of those
|
This means that system-provided programs will be used instead of those
|
||||||
provided by Homebrew. The following tools exist at both paths:
|
provided by Homebrew. The following tools exist at both paths:
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
message += <<-EOS.undent
|
message += <<~EOS
|
||||||
|
|
||||||
Consider setting your PATH so that #{HOMEBREW_PREFIX}/bin
|
Consider setting your PATH so that #{HOMEBREW_PREFIX}/bin
|
||||||
occurs before /usr/bin. Here is a one-liner:
|
occurs before /usr/bin. Here is a one-liner:
|
||||||
@ -472,7 +472,7 @@ module Homebrew
|
|||||||
def check_user_path_2
|
def check_user_path_2
|
||||||
return if @seen_prefix_bin
|
return if @seen_prefix_bin
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Homebrew's bin was not found in your PATH.
|
Homebrew's bin was not found in your PATH.
|
||||||
Consider setting the PATH for example like so
|
Consider setting the PATH for example like so
|
||||||
#{Utils::Shell.prepend_path_in_profile("#{HOMEBREW_PREFIX}/bin")}
|
#{Utils::Shell.prepend_path_in_profile("#{HOMEBREW_PREFIX}/bin")}
|
||||||
@ -486,7 +486,7 @@ module Homebrew
|
|||||||
sbin = HOMEBREW_PREFIX/"sbin"
|
sbin = HOMEBREW_PREFIX/"sbin"
|
||||||
return unless sbin.directory? && !sbin.children.empty?
|
return unless sbin.directory? && !sbin.children.empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Homebrew's sbin was not found in your PATH but you have installed
|
Homebrew's sbin was not found in your PATH but you have installed
|
||||||
formulae that put executables in #{HOMEBREW_PREFIX}/sbin.
|
formulae that put executables in #{HOMEBREW_PREFIX}/sbin.
|
||||||
Consider setting the PATH for example like so
|
Consider setting the PATH for example like so
|
||||||
@ -500,7 +500,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
return unless curlrc_found
|
return unless curlrc_found
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You have a curlrc file
|
You have a curlrc file
|
||||||
If you have trouble downloading packages with Homebrew, then maybe this
|
If you have trouble downloading packages with Homebrew, then maybe this
|
||||||
is the problem? If the following command doesn't work, then try removing
|
is the problem? If the following command doesn't work, then try removing
|
||||||
@ -526,7 +526,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
return if gettext&.linked_keg&.directory? && homebrew_owned
|
return if gettext&.linked_keg&.directory? && homebrew_owned
|
||||||
|
|
||||||
inject_file_list @found, <<-EOS.undent
|
inject_file_list @found, <<~EOS
|
||||||
gettext files detected at a system prefix.
|
gettext files detected at a system prefix.
|
||||||
These files can cause compilation and link failures, especially if they
|
These files can cause compilation and link failures, especially if they
|
||||||
are compiled with improper architectures. Consider removing these files:
|
are compiled with improper architectures. Consider removing these files:
|
||||||
@ -544,13 +544,13 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
if libiconv&.linked_keg&.directory?
|
if libiconv&.linked_keg&.directory?
|
||||||
unless libiconv.keg_only?
|
unless libiconv.keg_only?
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
A libiconv formula is installed and linked.
|
A libiconv formula is installed and linked.
|
||||||
This will break stuff. For serious. Unlink it.
|
This will break stuff. For serious. Unlink it.
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
inject_file_list @found, <<-EOS.undent
|
inject_file_list @found, <<~EOS
|
||||||
libiconv files detected at a system prefix other than /usr.
|
libiconv files detected at a system prefix other than /usr.
|
||||||
Homebrew doesn't provide a libiconv formula, and expects to link against
|
Homebrew doesn't provide a libiconv formula, and expects to link against
|
||||||
the system version in /usr. libiconv in other prefixes can cause
|
the system version in /usr. libiconv in other prefixes can cause
|
||||||
@ -588,7 +588,7 @@ module Homebrew
|
|||||||
|
|
||||||
return if scripts.empty?
|
return if scripts.empty?
|
||||||
|
|
||||||
inject_file_list scripts, <<-EOS.undent
|
inject_file_list scripts, <<~EOS
|
||||||
"config" scripts exist outside your system or Homebrew directories.
|
"config" scripts exist outside your system or Homebrew directories.
|
||||||
`./configure` scripts often look for *-config scripts to determine if
|
`./configure` scripts often look for *-config scripts to determine if
|
||||||
software packages are installed, and what additional flags to use when
|
software packages are installed, and what additional flags to use when
|
||||||
@ -605,13 +605,13 @@ module Homebrew
|
|||||||
return if dyld_vars.empty?
|
return if dyld_vars.empty?
|
||||||
|
|
||||||
values = dyld_vars.map { |var| "#{var}: #{ENV.fetch(var)}" }
|
values = dyld_vars.map { |var| "#{var}: #{ENV.fetch(var)}" }
|
||||||
message = inject_file_list values, <<-EOS.undent
|
message = inject_file_list values, <<~EOS
|
||||||
Setting DYLD_* vars can break dynamic linking.
|
Setting DYLD_* vars can break dynamic linking.
|
||||||
Set variables:
|
Set variables:
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
if dyld_vars.include? "DYLD_INSERT_LIBRARIES"
|
if dyld_vars.include? "DYLD_INSERT_LIBRARIES"
|
||||||
message += <<-EOS.undent
|
message += <<~EOS
|
||||||
|
|
||||||
Setting DYLD_INSERT_LIBRARIES can cause Go builds to fail.
|
Setting DYLD_INSERT_LIBRARIES can cause Go builds to fail.
|
||||||
Having this set is common if you use this software:
|
Having this set is common if you use this software:
|
||||||
@ -624,7 +624,7 @@ module Homebrew
|
|||||||
|
|
||||||
def check_ssl_cert_file
|
def check_ssl_cert_file
|
||||||
return unless ENV.key?("SSL_CERT_FILE")
|
return unless ENV.key?("SSL_CERT_FILE")
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Setting SSL_CERT_FILE can break downloading files; if that happens
|
Setting SSL_CERT_FILE can break downloading files; if that happens
|
||||||
you should unset it before running Homebrew.
|
you should unset it before running Homebrew.
|
||||||
|
|
||||||
@ -638,7 +638,7 @@ module Homebrew
|
|||||||
return unless HOMEBREW_CELLAR.exist?
|
return unless HOMEBREW_CELLAR.exist?
|
||||||
return unless HOMEBREW_CELLAR.symlink?
|
return unless HOMEBREW_CELLAR.symlink?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Symlinked Cellars can cause problems.
|
Symlinked Cellars can cause problems.
|
||||||
Your Homebrew Cellar is a symlink: #{HOMEBREW_CELLAR}
|
Your Homebrew Cellar is a symlink: #{HOMEBREW_CELLAR}
|
||||||
which resolves to: #{HOMEBREW_CELLAR.realpath}
|
which resolves to: #{HOMEBREW_CELLAR.realpath}
|
||||||
@ -675,7 +675,7 @@ module Homebrew
|
|||||||
|
|
||||||
return if where_cellar == where_tmp
|
return if where_cellar == where_tmp
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Your Cellar and TEMP directories are on different volumes.
|
Your Cellar and TEMP directories are on different volumes.
|
||||||
macOS won't move relative symlinks across volumes unless the target file already
|
macOS won't move relative symlinks across volumes unless the target file already
|
||||||
exists. Brews known to be affected by this are Git and Narwhal.
|
exists. Brews known to be affected by this are Git and Narwhal.
|
||||||
@ -692,7 +692,7 @@ module Homebrew
|
|||||||
|
|
||||||
git = Formula["git"]
|
git = Formula["git"]
|
||||||
git_upgrade_cmd = git.any_version_installed? ? "upgrade" : "install"
|
git_upgrade_cmd = git.any_version_installed? ? "upgrade" : "install"
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
An outdated version (#{Utils.git_version}) of Git was detected in your PATH.
|
An outdated version (#{Utils.git_version}) of Git was detected in your PATH.
|
||||||
Git 1.8.5 or newer is required to perform checkouts over HTTPS from GitHub and
|
Git 1.8.5 or newer is required to perform checkouts over HTTPS from GitHub and
|
||||||
to support the 'git -C <path>' option.
|
to support the 'git -C <path>' option.
|
||||||
@ -704,7 +704,7 @@ module Homebrew
|
|||||||
def check_for_git
|
def check_for_git
|
||||||
return if Utils.git_available?
|
return if Utils.git_available?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Git could not be found in your PATH.
|
Git could not be found in your PATH.
|
||||||
Homebrew uses Git for several internal functions, and some formulae use Git
|
Homebrew uses Git for several internal functions, and some formulae use Git
|
||||||
checkouts instead of stable tarballs. You may want to install Git:
|
checkouts instead of stable tarballs. You may want to install Git:
|
||||||
@ -718,7 +718,7 @@ module Homebrew
|
|||||||
autocrlf = HOMEBREW_REPOSITORY.cd { `git config --get core.autocrlf`.chomp }
|
autocrlf = HOMEBREW_REPOSITORY.cd { `git config --get core.autocrlf`.chomp }
|
||||||
return unless autocrlf == "true"
|
return unless autocrlf == "true"
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Suspicious Git newline settings found.
|
Suspicious Git newline settings found.
|
||||||
|
|
||||||
The detected Git newline settings will cause checkout problems:
|
The detected Git newline settings will cause checkout problems:
|
||||||
@ -736,7 +736,7 @@ module Homebrew
|
|||||||
origin = HOMEBREW_REPOSITORY.git_origin
|
origin = HOMEBREW_REPOSITORY.git_origin
|
||||||
|
|
||||||
if origin.nil?
|
if origin.nil?
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Missing Homebrew/brew git origin remote.
|
Missing Homebrew/brew git origin remote.
|
||||||
|
|
||||||
Without a correctly configured origin, Homebrew won't update
|
Without a correctly configured origin, Homebrew won't update
|
||||||
@ -744,7 +744,7 @@ module Homebrew
|
|||||||
git -C "#{HOMEBREW_REPOSITORY}" remote add origin #{Formatter.url("https://github.com/Homebrew/brew.git")}
|
git -C "#{HOMEBREW_REPOSITORY}" remote add origin #{Formatter.url("https://github.com/Homebrew/brew.git")}
|
||||||
EOS
|
EOS
|
||||||
elsif origin !~ %r{Homebrew/brew(\.git|/)?$}
|
elsif origin !~ %r{Homebrew/brew(\.git|/)?$}
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Suspicious Homebrew/brew git origin remote found.
|
Suspicious Homebrew/brew git origin remote found.
|
||||||
|
|
||||||
With a non-standard origin, Homebrew won't pull updates from
|
With a non-standard origin, Homebrew won't pull updates from
|
||||||
@ -765,7 +765,7 @@ module Homebrew
|
|||||||
origin = coretap_path.git_origin
|
origin = coretap_path.git_origin
|
||||||
|
|
||||||
if origin.nil?
|
if origin.nil?
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Missing #{CoreTap.instance} git origin remote.
|
Missing #{CoreTap.instance} git origin remote.
|
||||||
|
|
||||||
Without a correctly configured origin, Homebrew won't update
|
Without a correctly configured origin, Homebrew won't update
|
||||||
@ -775,7 +775,7 @@ module Homebrew
|
|||||||
elsif origin !~ %r{Homebrew/homebrew-core(\.git|/)?$}
|
elsif origin !~ %r{Homebrew/homebrew-core(\.git|/)?$}
|
||||||
return if ENV["CI"] && origin.include?("Homebrew/homebrew-test-bot")
|
return if ENV["CI"] && origin.include?("Homebrew/homebrew-test-bot")
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Suspicious #{CoreTap.instance} git origin remote found.
|
Suspicious #{CoreTap.instance} git origin remote found.
|
||||||
|
|
||||||
With a non-standard origin, Homebrew won't pull updates from
|
With a non-standard origin, Homebrew won't pull updates from
|
||||||
@ -793,7 +793,7 @@ module Homebrew
|
|||||||
branch = coretap_path.git_branch
|
branch = coretap_path.git_branch
|
||||||
return if branch.nil? || branch =~ /master/
|
return if branch.nil? || branch =~ /master/
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Homebrew/homebrew-core is not on the master branch
|
Homebrew/homebrew-core is not on the master branch
|
||||||
|
|
||||||
Check out the master branch by running:
|
Check out the master branch by running:
|
||||||
@ -821,7 +821,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
return if linked.empty?
|
return if linked.empty?
|
||||||
|
|
||||||
inject_file_list linked.map(&:full_name), <<-EOS.undent
|
inject_file_list linked.map(&:full_name), <<~EOS
|
||||||
Some keg-only formula are linked into the Cellar.
|
Some keg-only formula are linked into the Cellar.
|
||||||
Linking a keg-only formula, such as gettext, into the cellar with
|
Linking a keg-only formula, such as gettext, into the cellar with
|
||||||
`brew link <formula>` will cause other formulae to detect them during
|
`brew link <formula>` will cause other formulae to detect them during
|
||||||
@ -847,7 +847,7 @@ module Homebrew
|
|||||||
.select { |framework| File.exist? framework }
|
.select { |framework| File.exist? framework }
|
||||||
return if frameworks_found.empty?
|
return if frameworks_found.empty?
|
||||||
|
|
||||||
inject_file_list frameworks_found, <<-EOS.undent
|
inject_file_list frameworks_found, <<~EOS
|
||||||
Some frameworks can be picked up by CMake's build system and likely
|
Some frameworks can be picked up by CMake's build system and likely
|
||||||
cause the build to fail. To compile CMake, you may wish to move these
|
cause the build to fail. To compile CMake, you may wish to move these
|
||||||
out of the way:
|
out of the way:
|
||||||
@ -858,7 +858,7 @@ module Homebrew
|
|||||||
tmpdir = ENV["TMPDIR"]
|
tmpdir = ENV["TMPDIR"]
|
||||||
return if tmpdir.nil? || File.directory?(tmpdir)
|
return if tmpdir.nil? || File.directory?(tmpdir)
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
TMPDIR #{tmpdir.inspect} doesn't exist.
|
TMPDIR #{tmpdir.inspect} doesn't exist.
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -871,7 +871,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
return if missing.empty?
|
return if missing.empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Some installed formula are missing dependencies.
|
Some installed formula are missing dependencies.
|
||||||
You should `brew install` the missing dependencies:
|
You should `brew install` the missing dependencies:
|
||||||
brew install #{missing.sort_by(&:full_name) * " "}
|
brew install #{missing.sort_by(&:full_name) * " "}
|
||||||
@ -886,7 +886,7 @@ module Homebrew
|
|||||||
return if `git status --untracked-files=all --porcelain -- Library/Homebrew/ 2>/dev/null`.chomp.empty?
|
return if `git status --untracked-files=all --porcelain -- Library/Homebrew/ 2>/dev/null`.chomp.empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You have uncommitted modifications to Homebrew
|
You have uncommitted modifications to Homebrew
|
||||||
If this is a surprise to you, then you should stash these modifications.
|
If this is a surprise to you, then you should stash these modifications.
|
||||||
Stashing returns Homebrew to a pristine state but can be undone
|
Stashing returns Homebrew to a pristine state but can be undone
|
||||||
@ -898,7 +898,7 @@ module Homebrew
|
|||||||
def check_for_enthought_python
|
def check_for_enthought_python
|
||||||
return unless which "enpkg"
|
return unless which "enpkg"
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Enthought Python was found in your PATH.
|
Enthought Python was found in your PATH.
|
||||||
This can cause build problems, as this software installs its own
|
This can cause build problems, as this software installs its own
|
||||||
copies of iconv and libxml2 into directories that are picked up by
|
copies of iconv and libxml2 into directories that are picked up by
|
||||||
@ -909,7 +909,7 @@ module Homebrew
|
|||||||
def check_for_library_python
|
def check_for_library_python
|
||||||
return unless File.exist?("/Library/Frameworks/Python.framework")
|
return unless File.exist?("/Library/Frameworks/Python.framework")
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Python is installed at /Library/Frameworks/Python.framework
|
Python is installed at /Library/Frameworks/Python.framework
|
||||||
|
|
||||||
Homebrew only supports building against the System-provided Python or a
|
Homebrew only supports building against the System-provided Python or a
|
||||||
@ -922,12 +922,12 @@ module Homebrew
|
|||||||
message = ""
|
message = ""
|
||||||
["", "3"].map do |suffix|
|
["", "3"].map do |suffix|
|
||||||
next unless paths.include?((HOMEBREW_PREFIX/"share/python#{suffix}").to_s)
|
next unless paths.include?((HOMEBREW_PREFIX/"share/python#{suffix}").to_s)
|
||||||
message += <<-EOS.undent
|
message += <<~EOS
|
||||||
#{HOMEBREW_PREFIX}/share/python#{suffix} is not needed in PATH.
|
#{HOMEBREW_PREFIX}/share/python#{suffix} is not needed in PATH.
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
unless message.empty?
|
unless message.empty?
|
||||||
message += <<-EOS.undent
|
message += <<~EOS
|
||||||
|
|
||||||
Formerly homebrew put Python scripts you installed via `pip` or `pip3`
|
Formerly homebrew put Python scripts you installed via `pip` or `pip3`
|
||||||
(or `easy_install`) into that directory above but now it can be removed
|
(or `easy_install`) into that directory above but now it can be removed
|
||||||
@ -949,7 +949,7 @@ module Homebrew
|
|||||||
return if Regexp.last_match(1).nil?
|
return if Regexp.last_match(1).nil?
|
||||||
return if Regexp.last_match(1) == "2"
|
return if Regexp.last_match(1) == "2"
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
python is symlinked to python#{Regexp.last_match(1)}
|
python is symlinked to python#{Regexp.last_match(1)}
|
||||||
This will confuse build scripts and in general lead to subtle breakage.
|
This will confuse build scripts and in general lead to subtle breakage.
|
||||||
EOS
|
EOS
|
||||||
@ -962,7 +962,7 @@ module Homebrew
|
|||||||
gnubin = %W[#{coreutils.opt_libexec}/gnubin #{coreutils.libexec}/gnubin]
|
gnubin = %W[#{coreutils.opt_libexec}/gnubin #{coreutils.libexec}/gnubin]
|
||||||
return if (paths & gnubin).empty?
|
return if (paths & gnubin).empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Putting non-prefixed coreutils in your path can cause gmp builds to fail.
|
Putting non-prefixed coreutils in your path can cause gmp builds to fail.
|
||||||
EOS
|
EOS
|
||||||
rescue FormulaUnavailableError
|
rescue FormulaUnavailableError
|
||||||
@ -977,7 +977,7 @@ module Homebrew
|
|||||||
default_names = Tab.for_name("findutils").with? "default-names"
|
default_names = Tab.for_name("findutils").with? "default-names"
|
||||||
return if !default_names && (paths & gnubin).empty?
|
return if !default_names && (paths & gnubin).empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Putting non-prefixed findutils in your path can cause python builds to fail.
|
Putting non-prefixed findutils in your path can cause python builds to fail.
|
||||||
EOS
|
EOS
|
||||||
rescue FormulaUnavailableError
|
rescue FormulaUnavailableError
|
||||||
@ -987,7 +987,7 @@ module Homebrew
|
|||||||
def check_for_pydistutils_cfg_in_home
|
def check_for_pydistutils_cfg_in_home
|
||||||
return unless File.exist? "#{ENV["HOME"]}/.pydistutils.cfg"
|
return unless File.exist? "#{ENV["HOME"]}/.pydistutils.cfg"
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
A .pydistutils.cfg file was found in $HOME, which may cause Python
|
A .pydistutils.cfg file was found in $HOME, which may cause Python
|
||||||
builds to fail. See:
|
builds to fail. See:
|
||||||
#{Formatter.url("https://bugs.python.org/issue6138")}
|
#{Formatter.url("https://bugs.python.org/issue6138")}
|
||||||
@ -1009,7 +1009,7 @@ module Homebrew
|
|||||||
end.map(&:basename)
|
end.map(&:basename)
|
||||||
return if unlinked.empty?
|
return if unlinked.empty?
|
||||||
|
|
||||||
inject_file_list unlinked, <<-EOS.undent
|
inject_file_list unlinked, <<~EOS
|
||||||
You have unlinked kegs in your Cellar
|
You have unlinked kegs in your Cellar
|
||||||
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
|
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
|
||||||
those kegs to fail to run properly once built. Run `brew link` on these:
|
those kegs to fail to run properly once built. Run `brew link` on these:
|
||||||
@ -1019,7 +1019,7 @@ module Homebrew
|
|||||||
def check_for_old_env_vars
|
def check_for_old_env_vars
|
||||||
return unless ENV["HOMEBREW_KEEP_INFO"]
|
return unless ENV["HOMEBREW_KEEP_INFO"]
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
`HOMEBREW_KEEP_INFO` is no longer used
|
`HOMEBREW_KEEP_INFO` is no longer used
|
||||||
info files are no longer deleted by default; you may
|
info files are no longer deleted by default; you may
|
||||||
remove this environment variable.
|
remove this environment variable.
|
||||||
@ -1033,7 +1033,7 @@ module Homebrew
|
|||||||
return unless Language::Python.in_sys_path?("python", homebrew_site_packages)
|
return unless Language::Python.in_sys_path?("python", homebrew_site_packages)
|
||||||
|
|
||||||
user_site_packages = Language::Python.user_site_packages "python"
|
user_site_packages = Language::Python.user_site_packages "python"
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Your default Python does not recognize the Homebrew site-packages
|
Your default Python does not recognize the Homebrew site-packages
|
||||||
directory as a special site-packages directory, which means that .pth
|
directory as a special site-packages directory, which means that .pth
|
||||||
files will not be followed. This means you will not be able to import
|
files will not be followed. This means you will not be able to import
|
||||||
@ -1063,8 +1063,7 @@ module Homebrew
|
|||||||
|
|
||||||
message = "You have external commands with conflicting names.\n"
|
message = "You have external commands with conflicting names.\n"
|
||||||
cmd_map.each do |cmd_name, cmd_paths|
|
cmd_map.each do |cmd_name, cmd_paths|
|
||||||
message += inject_file_list cmd_paths, <<-EOS.undent
|
message += inject_file_list cmd_paths, <<~EOS
|
||||||
|
|
||||||
Found command `#{cmd_name}` in following places:
|
Found command `#{cmd_name}` in following places:
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -1087,7 +1086,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
return if bad_tap_files.empty?
|
return if bad_tap_files.empty?
|
||||||
bad_tap_files.keys.map do |tap|
|
bad_tap_files.keys.map do |tap|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Found Ruby file outside #{tap} tap formula directory
|
Found Ruby file outside #{tap} tap formula directory
|
||||||
(#{tap.formula_dir}):
|
(#{tap.formula_dir}):
|
||||||
#{bad_tap_files[tap].join("\n ")}
|
#{bad_tap_files[tap].join("\n ")}
|
||||||
|
|||||||
@ -159,7 +159,7 @@ class VCSDownloadStrategy < AbstractDownloadStrategy
|
|||||||
return unless @ref_type == :tag
|
return unless @ref_type == :tag
|
||||||
return unless @revision && current_revision
|
return unless @revision && current_revision
|
||||||
return if current_revision == @revision
|
return if current_revision == @revision
|
||||||
raise <<-EOS.undent
|
raise <<~EOS
|
||||||
#{@ref} tag should be #{@revision}
|
#{@ref} tag should be #{@revision}
|
||||||
but is actually #{current_revision}
|
but is actually #{current_revision}
|
||||||
EOS
|
EOS
|
||||||
@ -553,9 +553,9 @@ class GitHubPrivateRepositoryDownloadStrategy < CurlDownloadStrategy
|
|||||||
rescue GitHub::HTTPNotFoundError
|
rescue GitHub::HTTPNotFoundError
|
||||||
# We only handle HTTPNotFoundError here,
|
# We only handle HTTPNotFoundError here,
|
||||||
# becase AuthenticationFailedError is handled within util/github.
|
# becase AuthenticationFailedError is handled within util/github.
|
||||||
message = <<-EOS.undent
|
message = <<~EOS
|
||||||
HOMEBREW_GITHUB_API_TOKEN can not access the repository: #{@owner}/#{@repo}
|
HOMEBREW_GITHUB_API_TOKEN can not access the repository: #{@owner}/#{@repo}
|
||||||
This token may not have permission to access the repository or the url of formula may be incorrect.
|
This token may not have permission to access the repository or the url of formula may be incorrect.
|
||||||
EOS
|
EOS
|
||||||
raise CurlDownloadStrategyError, message
|
raise CurlDownloadStrategyError, message
|
||||||
end
|
end
|
||||||
|
|||||||
@ -185,7 +185,7 @@ class TapFormulaAmbiguityError < RuntimeError
|
|||||||
"#{Tap.fetch(match[:user], match[:repo])}/#{path.basename(".rb")}"
|
"#{Tap.fetch(match[:user], match[:repo])}/#{path.basename(".rb")}"
|
||||||
end
|
end
|
||||||
|
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
Formulae found in multiple taps: #{formulae.map { |f| "\n * #{f}" }.join}
|
Formulae found in multiple taps: #{formulae.map { |f| "\n * #{f}" }.join}
|
||||||
|
|
||||||
Please use the fully-qualified name e.g. #{formulae.first} to refer the formula.
|
Please use the fully-qualified name e.g. #{formulae.first} to refer the formula.
|
||||||
@ -205,7 +205,7 @@ class TapFormulaWithOldnameAmbiguityError < RuntimeError
|
|||||||
"#{Regexp.last_match(1)}/#{Regexp.last_match(2)}"
|
"#{Regexp.last_match(1)}/#{Regexp.last_match(2)}"
|
||||||
end
|
end
|
||||||
|
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
Formulae with '#{name}' old name found in multiple taps: #{taps.map { |t| "\n * #{t}" }.join}
|
Formulae with '#{name}' old name found in multiple taps: #{taps.map { |t| "\n * #{t}" }.join}
|
||||||
|
|
||||||
Please use the fully-qualified name e.g. #{taps.first}/#{name} to refer the formula or use its new name.
|
Please use the fully-qualified name e.g. #{taps.first}/#{name} to refer the formula or use its new name.
|
||||||
@ -219,7 +219,7 @@ class TapUnavailableError < RuntimeError
|
|||||||
def initialize(name)
|
def initialize(name)
|
||||||
@name = name
|
@name = name
|
||||||
|
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
No available tap #{name}.
|
No available tap #{name}.
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -235,7 +235,7 @@ class TapRemoteMismatchError < RuntimeError
|
|||||||
@expected_remote = expected_remote
|
@expected_remote = expected_remote
|
||||||
@actual_remote = actual_remote
|
@actual_remote = actual_remote
|
||||||
|
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
Tap #{name} remote mismatch.
|
Tap #{name} remote mismatch.
|
||||||
#{expected_remote} != #{actual_remote}
|
#{expected_remote} != #{actual_remote}
|
||||||
EOS
|
EOS
|
||||||
@ -248,7 +248,7 @@ class TapAlreadyTappedError < RuntimeError
|
|||||||
def initialize(name)
|
def initialize(name)
|
||||||
@name = name
|
@name = name
|
||||||
|
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
Tap #{name} already tapped.
|
Tap #{name} already tapped.
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -260,7 +260,7 @@ class TapAlreadyUnshallowError < RuntimeError
|
|||||||
def initialize(name)
|
def initialize(name)
|
||||||
@name = name
|
@name = name
|
||||||
|
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
Tap #{name} already a full clone.
|
Tap #{name} already a full clone.
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -279,7 +279,7 @@ end
|
|||||||
|
|
||||||
class OperationInProgressError < RuntimeError
|
class OperationInProgressError < RuntimeError
|
||||||
def initialize(name)
|
def initialize(name)
|
||||||
message = <<-EOS.undent
|
message = <<~EOS
|
||||||
Operation already in progress for #{name}
|
Operation already in progress for #{name}
|
||||||
Another active Homebrew process is already using #{name}.
|
Another active Homebrew process is already using #{name}.
|
||||||
Please wait for it to finish or terminate it to continue.
|
Please wait for it to finish or terminate it to continue.
|
||||||
@ -327,7 +327,7 @@ class FormulaConflictError < RuntimeError
|
|||||||
message = []
|
message = []
|
||||||
message << "Cannot install #{formula.full_name} because conflicting formulae are installed."
|
message << "Cannot install #{formula.full_name} because conflicting formulae are installed."
|
||||||
message.concat conflicts.map { |c| conflict_message(c) } << ""
|
message.concat conflicts.map { |c| conflict_message(c) } << ""
|
||||||
message << <<-EOS.undent
|
message << <<~EOS
|
||||||
Please `brew unlink #{conflicts.map(&:name) * " "}` before continuing.
|
Please `brew unlink #{conflicts.map(&:name) * " "}` before continuing.
|
||||||
|
|
||||||
Unlinking removes a formula's symlinks from #{HOMEBREW_PREFIX}. You can
|
Unlinking removes a formula's symlinks from #{HOMEBREW_PREFIX}. You can
|
||||||
@ -341,7 +341,7 @@ end
|
|||||||
|
|
||||||
class FormulaAmbiguousPythonError < RuntimeError
|
class FormulaAmbiguousPythonError < RuntimeError
|
||||||
def initialize(formula)
|
def initialize(formula)
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
The version of python to use with the virtualenv in the `#{formula.full_name}` formula
|
The version of python to use with the virtualenv in the `#{formula.full_name}` formula
|
||||||
cannot be guessed automatically. If the simultaneous use of python and python3
|
cannot be guessed automatically. If the simultaneous use of python and python3
|
||||||
is intentional, please add `:using => "python"` or `:using => "python3"` to
|
is intentional, please add `:using => "python"` or `:using => "python3"` to
|
||||||
@ -398,18 +398,18 @@ class BuildError < RuntimeError
|
|||||||
if formula.tap.official?
|
if formula.tap.official?
|
||||||
puts Formatter.error(Formatter.url(OS::ISSUES_URL), label: "READ THIS")
|
puts Formatter.error(Formatter.url(OS::ISSUES_URL), label: "READ THIS")
|
||||||
elsif issues_url = formula.tap.issues_url
|
elsif issues_url = formula.tap.issues_url
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
If reporting this issue please do so at (not Homebrew/brew or Homebrew/core):
|
If reporting this issue please do so at (not Homebrew/brew or Homebrew/core):
|
||||||
#{Formatter.url(issues_url)}
|
#{Formatter.url(issues_url)}
|
||||||
EOS
|
EOS
|
||||||
else
|
else
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
If reporting this issue please do so to (not Homebrew/brew or Homebrew/core):
|
If reporting this issue please do so to (not Homebrew/brew or Homebrew/core):
|
||||||
#{formula.tap}
|
#{formula.tap}
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
Do not report this issue to Homebrew/brew or Homebrew/core!
|
Do not report this issue to Homebrew/brew or Homebrew/core!
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -445,7 +445,7 @@ class BuildToolsError < RuntimeError
|
|||||||
package_text = "a binary package"
|
package_text = "a binary package"
|
||||||
end
|
end
|
||||||
|
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
The following #{formula_text}:
|
The following #{formula_text}:
|
||||||
#{formulae.join(", ")}
|
#{formulae.join(", ")}
|
||||||
cannot be installed as #{package_text} and must be built from source.
|
cannot be installed as #{package_text} and must be built from source.
|
||||||
@ -467,7 +467,7 @@ class BuildFlagsError < RuntimeError
|
|||||||
require_text = "requires"
|
require_text = "requires"
|
||||||
end
|
end
|
||||||
|
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
The following #{flag_text}:
|
The following #{flag_text}:
|
||||||
#{flags.join(", ")}
|
#{flags.join(", ")}
|
||||||
#{require_text} building tools, but none are installed.
|
#{require_text} building tools, but none are installed.
|
||||||
@ -481,7 +481,7 @@ end
|
|||||||
# the compilers available on the user's system
|
# the compilers available on the user's system
|
||||||
class CompilerSelectionError < RuntimeError
|
class CompilerSelectionError < RuntimeError
|
||||||
def initialize(formula)
|
def initialize(formula)
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
#{formula.full_name} cannot be built with any available compilers.
|
#{formula.full_name} cannot be built with any available compilers.
|
||||||
#{DevelopmentTools.custom_installation_instructions}
|
#{DevelopmentTools.custom_installation_instructions}
|
||||||
EOS
|
EOS
|
||||||
@ -491,7 +491,7 @@ end
|
|||||||
# Raised in Resource.fetch
|
# Raised in Resource.fetch
|
||||||
class DownloadError < RuntimeError
|
class DownloadError < RuntimeError
|
||||||
def initialize(resource, cause)
|
def initialize(resource, cause)
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
Failed to download resource #{resource.download_name.inspect}
|
Failed to download resource #{resource.download_name.inspect}
|
||||||
#{cause.message}
|
#{cause.message}
|
||||||
EOS
|
EOS
|
||||||
@ -530,7 +530,7 @@ class ChecksumMismatchError < RuntimeError
|
|||||||
@expected = expected
|
@expected = expected
|
||||||
@hash_type = expected.hash_type.to_s.upcase
|
@hash_type = expected.hash_type.to_s.upcase
|
||||||
|
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
#{@hash_type} mismatch
|
#{@hash_type} mismatch
|
||||||
Expected: #{expected}
|
Expected: #{expected}
|
||||||
Actual: #{actual}
|
Actual: #{actual}
|
||||||
@ -557,7 +557,7 @@ class MissingApplyError < RuntimeError; end
|
|||||||
|
|
||||||
class BottleFormulaUnavailableError < RuntimeError
|
class BottleFormulaUnavailableError < RuntimeError
|
||||||
def initialize(bottle_path, formula_path)
|
def initialize(bottle_path, formula_path)
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
This bottle does not contain the formula file:
|
This bottle does not contain the formula file:
|
||||||
#{bottle_path}
|
#{bottle_path}
|
||||||
#{formula_path}
|
#{formula_path}
|
||||||
|
|||||||
@ -124,7 +124,7 @@ module HomebrewArgvExtension
|
|||||||
Keg.new(prefix)
|
Keg.new(prefix)
|
||||||
end
|
end
|
||||||
rescue FormulaUnavailableError
|
rescue FormulaUnavailableError
|
||||||
raise <<-EOS.undent
|
raise <<~EOS
|
||||||
Multiple kegs installed to #{rack}
|
Multiple kegs installed to #{rack}
|
||||||
However we don't know which one you refer to.
|
However we don't know which one you refer to.
|
||||||
Please delete (with rm -rf!) all but one and then try again.
|
Please delete (with rm -rf!) all but one and then try again.
|
||||||
|
|||||||
@ -233,7 +233,7 @@ module SharedEnvExtension
|
|||||||
if ARGV.include? "--default-fortran-flags"
|
if ARGV.include? "--default-fortran-flags"
|
||||||
flags = FC_FLAG_VARS.reject { |key| self[key] }
|
flags = FC_FLAG_VARS.reject { |key| self[key] }
|
||||||
elsif values_at(*FC_FLAG_VARS).compact.empty?
|
elsif values_at(*FC_FLAG_VARS).compact.empty?
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
No Fortran optimization information was provided. You may want to consider
|
No Fortran optimization information was provided. You may want to consider
|
||||||
setting FCFLAGS and FFLAGS or pass the `--default-fortran-flags` option to
|
setting FCFLAGS and FFLAGS or pass the `--default-fortran-flags` option to
|
||||||
`brew install` if your compiler is compatible with GCC.
|
`brew install` if your compiler is compatible with GCC.
|
||||||
@ -286,15 +286,15 @@ module SharedEnvExtension
|
|||||||
begin
|
begin
|
||||||
gcc_formula = gcc_version_formula(name)
|
gcc_formula = gcc_version_formula(name)
|
||||||
rescue FormulaUnavailableError => e
|
rescue FormulaUnavailableError => e
|
||||||
raise <<-EOS.undent
|
raise <<~EOS
|
||||||
Homebrew GCC requested, but formula #{e.name} not found!
|
Homebrew GCC requested, but formula #{e.name} not found!
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
return if gcc_formula.opt_prefix.exist?
|
return if gcc_formula.opt_prefix.exist?
|
||||||
raise <<-EOS.undent
|
raise <<~EOS
|
||||||
The requested Homebrew GCC was not installed. You must:
|
The requested Homebrew GCC was not installed. You must:
|
||||||
brew install #{gcc_formula.full_name}
|
brew install #{gcc_formula.full_name}
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,7 @@ class OsxfuseRequirement < Requirement
|
|||||||
def message
|
def message
|
||||||
msg = "libfuse is required to install this formula.\n"
|
msg = "libfuse is required to install this formula.\n"
|
||||||
if libfuse_formula_exists?
|
if libfuse_formula_exists?
|
||||||
msg + <<-EOS.undent
|
msg + <<~EOS
|
||||||
Run "brew install libfuse" to install it.
|
Run "brew install libfuse" to install it.
|
||||||
EOS
|
EOS
|
||||||
else
|
else
|
||||||
|
|||||||
@ -24,18 +24,18 @@ class DevelopmentTools
|
|||||||
|
|
||||||
def installation_instructions
|
def installation_instructions
|
||||||
if MacOS.version >= "10.9"
|
if MacOS.version >= "10.9"
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Install the Command Line Tools:
|
Install the Command Line Tools:
|
||||||
xcode-select --install
|
xcode-select --install
|
||||||
EOS
|
EOS
|
||||||
elsif MacOS.version == "10.8" || MacOS.version == "10.7"
|
elsif MacOS.version == "10.8" || MacOS.version == "10.7"
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Install the Command Line Tools from
|
Install the Command Line Tools from
|
||||||
https://developer.apple.com/download/more/
|
https://developer.apple.com/download/more/
|
||||||
or via Xcode's preferences.
|
or via Xcode's preferences.
|
||||||
EOS
|
EOS
|
||||||
else
|
else
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Install Xcode from
|
Install Xcode from
|
||||||
https://developer.apple.com/download/more/
|
https://developer.apple.com/download/more/
|
||||||
EOS
|
EOS
|
||||||
@ -44,19 +44,19 @@ class DevelopmentTools
|
|||||||
|
|
||||||
def custom_installation_instructions
|
def custom_installation_instructions
|
||||||
if MacOS.version > :leopard
|
if MacOS.version > :leopard
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Install GNU's GCC
|
Install GNU's GCC
|
||||||
brew install gcc
|
brew install gcc
|
||||||
EOS
|
EOS
|
||||||
elsif MacOS.version > :tiger
|
elsif MacOS.version > :tiger
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Install GNU's GCC
|
Install GNU's GCC
|
||||||
brew install gcc@4.6
|
brew install gcc@4.6
|
||||||
EOS
|
EOS
|
||||||
else
|
else
|
||||||
# Tiger doesn't ship with apple-gcc42, and this is required to build
|
# Tiger doesn't ship with apple-gcc42, and this is required to build
|
||||||
# some software that doesn't build properly with FSF GCC.
|
# some software that doesn't build properly with FSF GCC.
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Install Apple's GCC
|
Install Apple's GCC
|
||||||
brew install apple-gcc42
|
brew install apple-gcc42
|
||||||
or GNU's GCC
|
or GNU's GCC
|
||||||
|
|||||||
@ -41,7 +41,7 @@ module Homebrew
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You are using macOS #{MacOS.version}.
|
You are using macOS #{MacOS.version}.
|
||||||
#{who} do not provide support for this #{what}.
|
#{who} do not provide support for this #{what}.
|
||||||
You may encounter build failures or other breakages.
|
You may encounter build failures or other breakages.
|
||||||
@ -59,7 +59,7 @@ module Homebrew
|
|||||||
# Homebrew/brew is currently using.
|
# Homebrew/brew is currently using.
|
||||||
return if ENV["TRAVIS"]
|
return if ENV["TRAVIS"]
|
||||||
|
|
||||||
message = <<-EOS.undent
|
message = <<~EOS
|
||||||
Your Xcode (#{MacOS::Xcode.version}) is outdated.
|
Your Xcode (#{MacOS::Xcode.version}) is outdated.
|
||||||
Please update to Xcode #{MacOS::Xcode.latest_version} (or delete it).
|
Please update to Xcode #{MacOS::Xcode.latest_version} (or delete it).
|
||||||
#{MacOS::Xcode.update_instructions}
|
#{MacOS::Xcode.update_instructions}
|
||||||
@ -67,7 +67,7 @@ module Homebrew
|
|||||||
|
|
||||||
if OS::Mac.prerelease?
|
if OS::Mac.prerelease?
|
||||||
current_path = Utils.popen_read("/usr/bin/xcode-select", "-p")
|
current_path = Utils.popen_read("/usr/bin/xcode-select", "-p")
|
||||||
message += <<-EOS.undent
|
message += <<~EOS
|
||||||
If #{MacOS::Xcode.latest_version} is installed, you may need to:
|
If #{MacOS::Xcode.latest_version} is installed, you may need to:
|
||||||
sudo xcode-select --switch /Applications/Xcode.app
|
sudo xcode-select --switch /Applications/Xcode.app
|
||||||
Current developer directory is:
|
Current developer directory is:
|
||||||
@ -87,7 +87,7 @@ module Homebrew
|
|||||||
# Homebrew/brew is currently using.
|
# Homebrew/brew is currently using.
|
||||||
return if ENV["TRAVIS"]
|
return if ENV["TRAVIS"]
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
A newer Command Line Tools release is available.
|
A newer Command Line Tools release is available.
|
||||||
#{MacOS::CLT.update_instructions}
|
#{MacOS::CLT.update_instructions}
|
||||||
EOS
|
EOS
|
||||||
@ -99,7 +99,7 @@ module Homebrew
|
|||||||
return unless MacOS.version == :el_capitan
|
return unless MacOS.version == :el_capitan
|
||||||
return unless MacOS::Xcode.version >= "8"
|
return unless MacOS::Xcode.version >= "8"
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You have Xcode 8 installed without the CLT;
|
You have Xcode 8 installed without the CLT;
|
||||||
this causes certain builds to fail on OS X El Capitan (10.11).
|
this causes certain builds to fail on OS X El Capitan (10.11).
|
||||||
Please install the CLT via:
|
Please install the CLT via:
|
||||||
@ -111,7 +111,7 @@ module Homebrew
|
|||||||
return unless MacOS::Xcode.installed?
|
return unless MacOS::Xcode.installed?
|
||||||
return unless MacOS::Xcode.below_minimum_version?
|
return unless MacOS::Xcode.below_minimum_version?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Your Xcode (#{MacOS::Xcode.version}) is too outdated.
|
Your Xcode (#{MacOS::Xcode.version}) is too outdated.
|
||||||
Please update to Xcode #{MacOS::Xcode.latest_version} (or delete it).
|
Please update to Xcode #{MacOS::Xcode.latest_version} (or delete it).
|
||||||
#{MacOS::Xcode.update_instructions}
|
#{MacOS::Xcode.update_instructions}
|
||||||
@ -122,7 +122,7 @@ module Homebrew
|
|||||||
return unless MacOS::CLT.installed?
|
return unless MacOS::CLT.installed?
|
||||||
return unless MacOS::CLT.below_minimum_version?
|
return unless MacOS::CLT.below_minimum_version?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Your Command Line Tools are too outdated.
|
Your Command Line Tools are too outdated.
|
||||||
#{MacOS::CLT.update_instructions}
|
#{MacOS::CLT.update_instructions}
|
||||||
EOS
|
EOS
|
||||||
@ -140,7 +140,7 @@ module Homebrew
|
|||||||
"Please install Xcode #{MacOS::Xcode.latest_version}."
|
"Please install Xcode #{MacOS::Xcode.latest_version}."
|
||||||
end
|
end
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You seem to have osx-gcc-installer installed.
|
You seem to have osx-gcc-installer installed.
|
||||||
Homebrew doesn't support osx-gcc-installer. It causes many builds to fail and
|
Homebrew doesn't support osx-gcc-installer. It causes many builds to fail and
|
||||||
is an unlicensed distribution of really old Xcode files.
|
is an unlicensed distribution of really old Xcode files.
|
||||||
@ -154,7 +154,7 @@ module Homebrew
|
|||||||
uninstaller = Pathname.new("/Developer/Library/uninstall-developer-folder")
|
uninstaller = Pathname.new("/Developer/Library/uninstall-developer-folder")
|
||||||
return unless ((MacOS::Xcode.version || "0") >= "4.3") && uninstaller.exist?
|
return unless ((MacOS::Xcode.version || "0") >= "4.3") && uninstaller.exist?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You have leftover files from an older version of Xcode.
|
You have leftover files from an older version of Xcode.
|
||||||
You should delete them using:
|
You should delete them using:
|
||||||
#{uninstaller}
|
#{uninstaller}
|
||||||
@ -170,7 +170,7 @@ module Homebrew
|
|||||||
return if libs.empty?
|
return if libs.empty?
|
||||||
return if libs.include? "/usr/lib/libxcselect.dylib"
|
return if libs.include? "/usr/lib/libxcselect.dylib"
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You have an outdated version of /usr/bin/install_name_tool installed.
|
You have an outdated version of /usr/bin/install_name_tool installed.
|
||||||
This will cause binary package installations to fail.
|
This will cause binary package installations to fail.
|
||||||
This can happen if you install osx-gcc-installer or RailsInstaller.
|
This can happen if you install osx-gcc-installer or RailsInstaller.
|
||||||
@ -183,7 +183,7 @@ module Homebrew
|
|||||||
ponk = MacOS.macports_or_fink
|
ponk = MacOS.macports_or_fink
|
||||||
return if ponk.empty?
|
return if ponk.empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You have MacPorts or Fink installed:
|
You have MacPorts or Fink installed:
|
||||||
#{ponk.join(", ")}
|
#{ponk.join(", ")}
|
||||||
|
|
||||||
@ -199,7 +199,7 @@ module Homebrew
|
|||||||
return if RUBY_VERSION == ruby_version
|
return if RUBY_VERSION == ruby_version
|
||||||
return if ARGV.homebrew_developer? && OS::Mac.prerelease?
|
return if ARGV.homebrew_developer? && OS::Mac.prerelease?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Ruby version #{RUBY_VERSION} is unsupported on #{MacOS.version}. Homebrew
|
Ruby version #{RUBY_VERSION} is unsupported on #{MacOS.version}. Homebrew
|
||||||
is developed and tested on Ruby #{ruby_version}, and may not work correctly
|
is developed and tested on Ruby #{ruby_version}, and may not work correctly
|
||||||
on other Rubies. Patches are accepted as long as they don't cause breakage
|
on other Rubies. Patches are accepted as long as they don't cause breakage
|
||||||
@ -212,7 +212,7 @@ module Homebrew
|
|||||||
return if prefix.nil?
|
return if prefix.nil?
|
||||||
return unless prefix.to_s.include?(" ")
|
return unless prefix.to_s.include?(" ")
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Xcode is installed to a directory with a space in the name.
|
Xcode is installed to a directory with a space in the name.
|
||||||
This will cause some formulae to fail to build.
|
This will cause some formulae to fail to build.
|
||||||
EOS
|
EOS
|
||||||
@ -222,7 +222,7 @@ module Homebrew
|
|||||||
prefix = MacOS::Xcode.prefix
|
prefix = MacOS::Xcode.prefix
|
||||||
return if prefix.nil? || prefix.exist?
|
return if prefix.nil? || prefix.exist?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
The directory Xcode is reportedly installed to doesn't exist:
|
The directory Xcode is reportedly installed to doesn't exist:
|
||||||
#{prefix}
|
#{prefix}
|
||||||
You may need to `xcode-select` the proper path if you have moved Xcode.
|
You may need to `xcode-select` the proper path if you have moved Xcode.
|
||||||
@ -236,7 +236,7 @@ module Homebrew
|
|||||||
|
|
||||||
path = MacOS::Xcode.bundle_path
|
path = MacOS::Xcode.bundle_path
|
||||||
path = "/Developer" if path.nil? || !path.directory?
|
path = "/Developer" if path.nil? || !path.directory?
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Your Xcode is configured with an invalid path.
|
Your Xcode is configured with an invalid path.
|
||||||
You should change it to the correct path:
|
You should change it to the correct path:
|
||||||
sudo xcode-select -switch #{path}
|
sudo xcode-select -switch #{path}
|
||||||
@ -247,7 +247,7 @@ module Homebrew
|
|||||||
return unless MacOS.version <= "10.8"
|
return unless MacOS.version <= "10.8"
|
||||||
return if Formula["curl"].installed?
|
return if Formula["curl"].installed?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
The system curl on 10.8 and below is often incapable of supporting
|
The system curl on 10.8 and below is often incapable of supporting
|
||||||
modern secure connections & will fail on fetching formulae.
|
modern secure connections & will fail on fetching formulae.
|
||||||
|
|
||||||
@ -261,7 +261,7 @@ module Homebrew
|
|||||||
return unless MacOS.version >= :yosemite
|
return unless MacOS.version >= :yosemite
|
||||||
return if ENV["SSL_CERT_DIR"].nil?
|
return if ENV["SSL_CERT_DIR"].nil?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
SSL_CERT_DIR support was removed from Apple's curl.
|
SSL_CERT_DIR support was removed from Apple's curl.
|
||||||
If fetching formulae fails you should:
|
If fetching formulae fails you should:
|
||||||
unset SSL_CERT_DIR
|
unset SSL_CERT_DIR
|
||||||
@ -274,7 +274,7 @@ module Homebrew
|
|||||||
# license or no "xc*" tool will work.
|
# license or no "xc*" tool will work.
|
||||||
return unless `/usr/bin/xcrun clang 2>&1` =~ /license/ && !$CHILD_STATUS.success?
|
return unless `/usr/bin/xcrun clang 2>&1` =~ /license/ && !$CHILD_STATUS.success?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You have not agreed to the Xcode license.
|
You have not agreed to the Xcode license.
|
||||||
Builds will fail! Agree to the license by opening Xcode.app or running:
|
Builds will fail! Agree to the license by opening Xcode.app or running:
|
||||||
sudo xcodebuild -license
|
sudo xcodebuild -license
|
||||||
@ -289,7 +289,7 @@ module Homebrew
|
|||||||
latest_version = Version.create(MacOS::XQuartz.latest_version)
|
latest_version = Version.create(MacOS::XQuartz.latest_version)
|
||||||
return if installed_version >= latest_version
|
return if installed_version >= latest_version
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Your XQuartz (#{installed_version}) is outdated.
|
Your XQuartz (#{installed_version}) is outdated.
|
||||||
Please install XQuartz #{latest_version} (or delete the current version).
|
Please install XQuartz #{latest_version} (or delete the current version).
|
||||||
XQuartz can be updated using Homebrew-Cask by running
|
XQuartz can be updated using Homebrew-Cask by running
|
||||||
@ -301,7 +301,7 @@ module Homebrew
|
|||||||
return unless MacOS::XQuartz.version
|
return unless MacOS::XQuartz.version
|
||||||
return unless MacOS::XQuartz.version.include? "beta"
|
return unless MacOS::XQuartz.version.include? "beta"
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
The following beta release of XQuartz is installed: #{MacOS::XQuartz.version}
|
The following beta release of XQuartz is installed: #{MacOS::XQuartz.version}
|
||||||
|
|
||||||
XQuartz beta releases include address sanitization, and do not work with
|
XQuartz beta releases include address sanitization, and do not work with
|
||||||
@ -337,7 +337,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
case_sensitive_vols.uniq!
|
case_sensitive_vols.uniq!
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
The filesystem on #{case_sensitive_vols.join(",")} appears to be case-sensitive.
|
The filesystem on #{case_sensitive_vols.join(",")} appears to be case-sensitive.
|
||||||
The default macOS filesystem is case-insensitive. Please report any apparent problems.
|
The default macOS filesystem is case-insensitive. Please report any apparent problems.
|
||||||
EOS
|
EOS
|
||||||
@ -346,7 +346,7 @@ module Homebrew
|
|||||||
def check_homebrew_prefix
|
def check_homebrew_prefix
|
||||||
return if HOMEBREW_PREFIX.to_s == "/usr/local"
|
return if HOMEBREW_PREFIX.to_s == "/usr/local"
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Your Homebrew's prefix is not /usr/local.
|
Your Homebrew's prefix is not /usr/local.
|
||||||
You can install Homebrew anywhere you want but some bottles (binary packages)
|
You can install Homebrew anywhere you want but some bottles (binary packages)
|
||||||
can only be used with a /usr/local prefix and some formulae (packages)
|
can only be used with a /usr/local prefix and some formulae (packages)
|
||||||
@ -360,7 +360,7 @@ module Homebrew
|
|||||||
|
|
||||||
mono_config = Pathname.new("/usr/bin/pkg-config")
|
mono_config = Pathname.new("/usr/bin/pkg-config")
|
||||||
if mono_config.exist? && mono_config.realpath.to_s.include?("Mono.framework")
|
if mono_config.exist? && mono_config.realpath.to_s.include?("Mono.framework")
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You have a non-Homebrew 'pkg-config' in your PATH:
|
You have a non-Homebrew 'pkg-config' in your PATH:
|
||||||
/usr/bin/pkg-config => #{mono_config.realpath}
|
/usr/bin/pkg-config => #{mono_config.realpath}
|
||||||
|
|
||||||
@ -371,7 +371,7 @@ module Homebrew
|
|||||||
`sudo rm /usr/bin/pkg-config` and upgrade to the latest version of Mono.
|
`sudo rm /usr/bin/pkg-config` and upgrade to the latest version of Mono.
|
||||||
EOS
|
EOS
|
||||||
elsif binary.to_s != "#{HOMEBREW_PREFIX}/bin/pkg-config"
|
elsif binary.to_s != "#{HOMEBREW_PREFIX}/bin/pkg-config"
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
You have a non-Homebrew 'pkg-config' in your PATH:
|
You have a non-Homebrew 'pkg-config' in your PATH:
|
||||||
#{binary}
|
#{binary}
|
||||||
|
|
||||||
|
|||||||
@ -19,7 +19,7 @@ module FormulaCellarChecks
|
|||||||
|
|
||||||
return if files.empty?
|
return if files.empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Header files that shadow system header files were installed to "#{formula.include}"
|
Header files that shadow system header files were installed to "#{formula.include}"
|
||||||
The offending files are:
|
The offending files are:
|
||||||
#{files * "\n "}
|
#{files * "\n "}
|
||||||
@ -35,7 +35,7 @@ module FormulaCellarChecks
|
|||||||
end
|
end
|
||||||
return if system_openssl.empty?
|
return if system_openssl.empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
object files were linked against system openssl
|
object files were linked against system openssl
|
||||||
These object files were linked against the deprecated system OpenSSL or
|
These object files were linked against the deprecated system OpenSSL or
|
||||||
the system's private LibreSSL.
|
the system's private LibreSSL.
|
||||||
@ -52,7 +52,7 @@ module FormulaCellarChecks
|
|||||||
end
|
end
|
||||||
return if framework_links.empty?
|
return if framework_links.empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
python modules have explicit framework links
|
python modules have explicit framework links
|
||||||
These python extension modules were linked directly to a Python
|
These python extension modules were linked directly to a Python
|
||||||
framework binary. They should be linked with -undefined dynamic_lookup
|
framework binary. They should be linked with -undefined dynamic_lookup
|
||||||
@ -67,13 +67,13 @@ module FormulaCellarChecks
|
|||||||
checker = LinkageChecker.new(keg, formula)
|
checker = LinkageChecker.new(keg, formula)
|
||||||
|
|
||||||
return unless checker.broken_dylibs?
|
return unless checker.broken_dylibs?
|
||||||
output = <<-EOS.undent
|
output = <<~EOS
|
||||||
#{formula} has broken dynamic library links:
|
#{formula} has broken dynamic library links:
|
||||||
#{checker.broken_dylibs.to_a * "\n "}
|
#{checker.broken_dylibs.to_a * "\n "}
|
||||||
EOS
|
EOS
|
||||||
tab = Tab.for_keg(keg)
|
tab = Tab.for_keg(keg)
|
||||||
if tab.poured_from_bottle
|
if tab.poured_from_bottle
|
||||||
output += <<-EOS.undent
|
output += <<~EOS
|
||||||
Rebuild this from source with:
|
Rebuild this from source with:
|
||||||
brew reinstall --build-from-source #{formula}
|
brew reinstall --build-from-source #{formula}
|
||||||
If that's successful, file an issue#{formula.tap ? " here:\n #{formula.tap.issues_url}" : "."}
|
If that's successful, file an issue#{formula.tap ? " here:\n #{formula.tap.issues_url}" : "."}
|
||||||
|
|||||||
@ -5,12 +5,12 @@ module Homebrew
|
|||||||
case name.downcase
|
case name.downcase
|
||||||
when "xcode"
|
when "xcode"
|
||||||
if MacOS.version >= :lion
|
if MacOS.version >= :lion
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Xcode can be installed from the App Store.
|
Xcode can be installed from the App Store.
|
||||||
EOS
|
EOS
|
||||||
else
|
else
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Xcode can be installed from #{Formatter.url("https://developer.apple.com/download/more/")}.
|
Xcode can be installed from #{Formatter.url("https://developer.apple.com/download/more/")}.
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|||||||
@ -26,7 +26,7 @@ class NonBinaryOsxfuseRequirement < Requirement
|
|||||||
satisfy(build_env: false) { HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseRequirement.binary_osxfuse_installed? }
|
satisfy(build_env: false) { HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseRequirement.binary_osxfuse_installed? }
|
||||||
|
|
||||||
def message
|
def message
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
osxfuse is already installed from the binary distribution and
|
osxfuse is already installed from the binary distribution and
|
||||||
conflicts with this formula.
|
conflicts with this formula.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -403,7 +403,7 @@ class Pathname
|
|||||||
mkpath
|
mkpath
|
||||||
targets.each do |target|
|
targets.each do |target|
|
||||||
target = Pathname.new(target) # allow pathnames or strings
|
target = Pathname.new(target) # allow pathnames or strings
|
||||||
join(target.basename).write <<-EOS.undent
|
join(target.basename).write <<~EOS
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
exec "#{target}" "$@"
|
exec "#{target}" "$@"
|
||||||
EOS
|
EOS
|
||||||
@ -415,9 +415,9 @@ class Pathname
|
|||||||
env_export = ""
|
env_export = ""
|
||||||
env.each { |key, value| env_export += "#{key}=\"#{value}\" " }
|
env.each { |key, value| env_export += "#{key}=\"#{value}\" " }
|
||||||
dirname.mkpath
|
dirname.mkpath
|
||||||
write <<-EOS.undent
|
write <<~EOS
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#{env_export}exec "#{target}" "$@"
|
#{env_export}exec "#{target}" "$@"
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -435,7 +435,7 @@ class Pathname
|
|||||||
# Writes an exec script that invokes a java jar
|
# Writes an exec script that invokes a java jar
|
||||||
def write_jar_script(target_jar, script_name, java_opts = "")
|
def write_jar_script(target_jar, script_name, java_opts = "")
|
||||||
mkpath
|
mkpath
|
||||||
join(script_name).write <<-EOS.undent
|
join(script_name).write <<~EOS
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
exec java #{java_opts} -jar #{target_jar} "$@"
|
exec java #{java_opts} -jar #{target_jar} "$@"
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -2,23 +2,6 @@
|
|||||||
require_relative "../vendor/backports/string"
|
require_relative "../vendor/backports/string"
|
||||||
|
|
||||||
class String
|
class String
|
||||||
def undent
|
|
||||||
gsub(/^[ \t]{#{(slice(/^[ \t]+/) || '').length}}/, "")
|
|
||||||
end
|
|
||||||
alias unindent undent
|
|
||||||
|
|
||||||
# eg:
|
|
||||||
# if foo then <<-EOS.undent_________________________________________________________72
|
|
||||||
# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
|
|
||||||
# eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
|
|
||||||
# minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
|
|
||||||
# ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
|
|
||||||
# voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
|
|
||||||
# sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt
|
|
||||||
# mollit anim id est laborum.
|
|
||||||
# EOS
|
|
||||||
alias undent_________________________________________________________72 undent
|
|
||||||
|
|
||||||
# String.chomp, but if result is empty: returns nil instead.
|
# String.chomp, but if result is empty: returns nil instead.
|
||||||
# Allows `chuzzle || foo` short-circuits.
|
# Allows `chuzzle || foo` short-circuits.
|
||||||
def chuzzle
|
def chuzzle
|
||||||
|
|||||||
@ -839,7 +839,7 @@ class Formula
|
|||||||
# This method can be overridden to provide a plist.
|
# This method can be overridden to provide a plist.
|
||||||
# For more examples read Apple's handy manpage:
|
# For more examples read Apple's handy manpage:
|
||||||
# https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/plist.5.html
|
# https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/plist.5.html
|
||||||
# <pre>def plist; <<-EOS.undent
|
# <pre>def plist; <<~EOS
|
||||||
# <?xml version="1.0" encoding="UTF-8"?>
|
# <?xml version="1.0" encoding="UTF-8"?>
|
||||||
# <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
# <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
# <plist version="1.0">
|
# <plist version="1.0">
|
||||||
@ -986,13 +986,13 @@ class Formula
|
|||||||
# to installation through a different package manager on a different OS.
|
# to installation through a different package manager on a different OS.
|
||||||
# @return [String]
|
# @return [String]
|
||||||
# <pre>def caveats
|
# <pre>def caveats
|
||||||
# <<-EOS.undent
|
# <<~EOS
|
||||||
# Are optional. Something the user should know?
|
# Are optional. Something the user should know?
|
||||||
# EOS
|
# EOS
|
||||||
# end</pre>
|
# end</pre>
|
||||||
#
|
#
|
||||||
# <pre>def caveats
|
# <pre>def caveats
|
||||||
# s = <<-EOS.undent
|
# s = <<~EOS
|
||||||
# Print some important notice to the user when `brew info <formula>` is
|
# Print some important notice to the user when `brew info <formula>` is
|
||||||
# called or when brewing a formula.
|
# called or when brewing a formula.
|
||||||
# This is optional. You can use all the vars like #{version} here.
|
# This is optional. You can use all the vars like #{version} here.
|
||||||
@ -1691,7 +1691,7 @@ class Formula
|
|||||||
# keep Homebrew's site-packages in sys.path when using system Python
|
# keep Homebrew's site-packages in sys.path when using system Python
|
||||||
user_site_packages = home/"Library/Python/2.7/lib/python/site-packages"
|
user_site_packages = home/"Library/Python/2.7/lib/python/site-packages"
|
||||||
user_site_packages.mkpath
|
user_site_packages.mkpath
|
||||||
(user_site_packages/"homebrew.pth").write <<-EOS.undent
|
(user_site_packages/"homebrew.pth").write <<~EOS
|
||||||
import site; site.addsitedir("#{HOMEBREW_PREFIX}/lib/python2.7/site-packages")
|
import site; site.addsitedir("#{HOMEBREW_PREFIX}/lib/python2.7/site-packages")
|
||||||
import sys, os; sys.path = (os.environ["PYTHONPATH"].split(os.pathsep) if "PYTHONPATH" in os.environ else []) + ["#{HOMEBREW_PREFIX}/lib/python2.7/site-packages"] + sys.path
|
import sys, os; sys.path = (os.environ["PYTHONPATH"].split(os.pathsep) if "PYTHONPATH" in os.environ else []) + ["#{HOMEBREW_PREFIX}/lib/python2.7/site-packages"] + sys.path
|
||||||
EOS
|
EOS
|
||||||
@ -2394,7 +2394,7 @@ class Formula
|
|||||||
# and building the software was ok.
|
# and building the software was ok.
|
||||||
# <pre>system bin/"foobar", "--version"</pre>
|
# <pre>system bin/"foobar", "--version"</pre>
|
||||||
#
|
#
|
||||||
# <pre>(testpath/"test.file").write <<-EOS.undent
|
# <pre>(testpath/"test.file").write <<~EOS
|
||||||
# writing some test file, if you need to
|
# writing some test file, if you need to
|
||||||
# EOS
|
# EOS
|
||||||
# assert_equal "OK", shell_output("test_command test.file").strip</pre>
|
# assert_equal "OK", shell_output("test_command test.file").strip</pre>
|
||||||
|
|||||||
@ -12,7 +12,7 @@ module FormulaCellarChecks
|
|||||||
prefix_bin = prefix_bin.realpath
|
prefix_bin = prefix_bin.realpath
|
||||||
return if ORIGINAL_PATHS.include? prefix_bin
|
return if ORIGINAL_PATHS.include? prefix_bin
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
#{prefix_bin} is not in your PATH
|
#{prefix_bin} is not in your PATH
|
||||||
You can amend this by altering your #{Utils::Shell.profile} file
|
You can amend this by altering your #{Utils::Shell.profile} file
|
||||||
EOS
|
EOS
|
||||||
@ -22,7 +22,7 @@ module FormulaCellarChecks
|
|||||||
# Check for man pages that aren't in share/man
|
# Check for man pages that aren't in share/man
|
||||||
return unless (formula.prefix/"man").directory?
|
return unless (formula.prefix/"man").directory?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
A top-level "man" directory was found
|
A top-level "man" directory was found
|
||||||
Homebrew requires that man pages live under share.
|
Homebrew requires that man pages live under share.
|
||||||
This can often be fixed by passing "--mandir=\#{man}" to configure.
|
This can often be fixed by passing "--mandir=\#{man}" to configure.
|
||||||
@ -33,7 +33,7 @@ module FormulaCellarChecks
|
|||||||
# Check for info pages that aren't in share/info
|
# Check for info pages that aren't in share/info
|
||||||
return unless (formula.prefix/"info").directory?
|
return unless (formula.prefix/"info").directory?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
A top-level "info" directory was found
|
A top-level "info" directory was found
|
||||||
Homebrew suggests that info pages live under share.
|
Homebrew suggests that info pages live under share.
|
||||||
This can often be fixed by passing "--infodir=\#{info}" to configure.
|
This can often be fixed by passing "--infodir=\#{info}" to configure.
|
||||||
@ -45,7 +45,7 @@ module FormulaCellarChecks
|
|||||||
jars = formula.lib.children.select { |g| g.extname == ".jar" }
|
jars = formula.lib.children.select { |g| g.extname == ".jar" }
|
||||||
return if jars.empty?
|
return if jars.empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
JARs were installed to "#{formula.lib}"
|
JARs were installed to "#{formula.lib}"
|
||||||
Installing JARs to "lib" can cause conflicts between packages.
|
Installing JARs to "lib" can cause conflicts between packages.
|
||||||
For Java software, it is typically better for the formula to
|
For Java software, it is typically better for the formula to
|
||||||
@ -67,7 +67,7 @@ module FormulaCellarChecks
|
|||||||
end
|
end
|
||||||
return if non_libraries.empty?
|
return if non_libraries.empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Non-libraries were installed to "#{formula.lib}"
|
Non-libraries were installed to "#{formula.lib}"
|
||||||
Installing non-libraries to "lib" is discouraged.
|
Installing non-libraries to "lib" is discouraged.
|
||||||
The offending files are:
|
The offending files are:
|
||||||
@ -81,7 +81,7 @@ module FormulaCellarChecks
|
|||||||
non_exes = bin.children.select { |g| g.directory? || !g.executable? }
|
non_exes = bin.children.select { |g| g.directory? || !g.executable? }
|
||||||
return if non_exes.empty?
|
return if non_exes.empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Non-executables were installed to "#{bin}"
|
Non-executables were installed to "#{bin}"
|
||||||
The offending files are:
|
The offending files are:
|
||||||
#{non_exes * "\n "}
|
#{non_exes * "\n "}
|
||||||
@ -94,7 +94,7 @@ module FormulaCellarChecks
|
|||||||
generics = bin.children.select { |g| generic_names.include? g.basename.to_s }
|
generics = bin.children.select { |g| generic_names.include? g.basename.to_s }
|
||||||
return if generics.empty?
|
return if generics.empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Generic binaries were installed to "#{bin}"
|
Generic binaries were installed to "#{bin}"
|
||||||
Binaries with generic names are likely to conflict with other software,
|
Binaries with generic names are likely to conflict with other software,
|
||||||
and suggest that this software should be installed to "libexec" and then
|
and suggest that this software should be installed to "libexec" and then
|
||||||
@ -109,7 +109,7 @@ module FormulaCellarChecks
|
|||||||
pth_found = Dir["#{lib}/python{2.7,3}*/site-packages/easy-install.pth"].map { |f| File.dirname(f) }
|
pth_found = Dir["#{lib}/python{2.7,3}*/site-packages/easy-install.pth"].map { |f| File.dirname(f) }
|
||||||
return if pth_found.empty?
|
return if pth_found.empty?
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
easy-install.pth files were found
|
easy-install.pth files were found
|
||||||
These .pth files are likely to cause link conflicts. Please invoke
|
These .pth files are likely to cause link conflicts. Please invoke
|
||||||
setup.py using Language::Python.setup_install_args.
|
setup.py using Language::Python.setup_install_args.
|
||||||
@ -128,7 +128,7 @@ module FormulaCellarChecks
|
|||||||
end
|
end
|
||||||
|
|
||||||
return unless bad_dir_name
|
return unless bad_dir_name
|
||||||
<<-EOS
|
<<~EOS
|
||||||
Emacs Lisp files were installed into the wrong site-lisp subdirectory.
|
Emacs Lisp files were installed into the wrong site-lisp subdirectory.
|
||||||
They should be installed into:
|
They should be installed into:
|
||||||
#{share}/emacs/site-lisp/#{name}
|
#{share}/emacs/site-lisp/#{name}
|
||||||
@ -142,7 +142,7 @@ module FormulaCellarChecks
|
|||||||
|
|
||||||
elisps = (share/"emacs/site-lisp").children.select { |file| %w[.el .elc].include? file.extname }
|
elisps = (share/"emacs/site-lisp").children.select { |file| %w[.el .elc].include? file.extname }
|
||||||
return if elisps.empty?
|
return if elisps.empty?
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Emacs Lisp files were linked directly to #{HOMEBREW_PREFIX}/share/emacs/site-lisp
|
Emacs Lisp files were linked directly to #{HOMEBREW_PREFIX}/share/emacs/site-lisp
|
||||||
This may cause conflicts with other packages.
|
This may cause conflicts with other packages.
|
||||||
They should instead be installed into:
|
They should instead be installed into:
|
||||||
|
|||||||
@ -93,7 +93,7 @@ class FormulaInstaller
|
|||||||
return false if formula.bottle_disabled?
|
return false if formula.bottle_disabled?
|
||||||
unless formula.pour_bottle?
|
unless formula.pour_bottle?
|
||||||
if install_bottle_options[:warn] && formula.pour_bottle_check_unsatisfied_reason
|
if install_bottle_options[:warn] && formula.pour_bottle_check_unsatisfied_reason
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
Building #{formula.full_name} from source:
|
Building #{formula.full_name} from source:
|
||||||
#{formula.pour_bottle_check_unsatisfied_reason}
|
#{formula.pour_bottle_check_unsatisfied_reason}
|
||||||
EOS
|
EOS
|
||||||
@ -104,7 +104,7 @@ class FormulaInstaller
|
|||||||
bottle = formula.bottle_specification
|
bottle = formula.bottle_specification
|
||||||
unless bottle.compatible_cellar?
|
unless bottle.compatible_cellar?
|
||||||
if install_bottle_options[:warn]
|
if install_bottle_options[:warn]
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
Building #{formula.full_name} from source:
|
Building #{formula.full_name} from source:
|
||||||
The bottle needs a #{bottle.cellar} Cellar (yours is #{HOMEBREW_CELLAR}).
|
The bottle needs a #{bottle.cellar} Cellar (yours is #{HOMEBREW_CELLAR}).
|
||||||
EOS
|
EOS
|
||||||
@ -165,14 +165,14 @@ class FormulaInstaller
|
|||||||
end
|
end
|
||||||
|
|
||||||
unless recursive_dependencies.empty?
|
unless recursive_dependencies.empty?
|
||||||
raise CannotInstallFormulaError, <<-EOS.undent
|
raise CannotInstallFormulaError, <<~EOS
|
||||||
#{formula.full_name} contains a recursive dependency on itself:
|
#{formula.full_name} contains a recursive dependency on itself:
|
||||||
#{recursive_dependencies.join("\n ")}
|
#{recursive_dependencies.join("\n ")}
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
if recursive_formulae.flat_map(&:recursive_dependencies).map(&:to_s).include?(formula.name)
|
if recursive_formulae.flat_map(&:recursive_dependencies).map(&:to_s).include?(formula.name)
|
||||||
raise CannotInstallFormulaError, <<-EOS.undent
|
raise CannotInstallFormulaError, <<~EOS
|
||||||
#{formula.full_name} contains a recursive dependency on itself!
|
#{formula.full_name} contains a recursive dependency on itself!
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -188,7 +188,7 @@ class FormulaInstaller
|
|||||||
version_conflicts += version_hash[unversioned_name]
|
version_conflicts += version_hash[unversioned_name]
|
||||||
end
|
end
|
||||||
unless version_conflicts.empty?
|
unless version_conflicts.empty?
|
||||||
raise CannotInstallFormulaError, <<-EOS.undent
|
raise CannotInstallFormulaError, <<~EOS
|
||||||
#{formula.full_name} contains conflicting version recursive dependencies:
|
#{formula.full_name} contains conflicting version recursive dependencies:
|
||||||
#{version_conflicts.to_a.join ", "}
|
#{version_conflicts.to_a.join ", "}
|
||||||
View these with `brew deps --tree #{formula.full_name}`.
|
View these with `brew deps --tree #{formula.full_name}`.
|
||||||
@ -221,16 +221,16 @@ class FormulaInstaller
|
|||||||
# function but after instantiating this class so that it can avoid having to
|
# function but after instantiating this class so that it can avoid having to
|
||||||
# relink the active keg if possible (because it is slow).
|
# relink the active keg if possible (because it is slow).
|
||||||
if formula.linked_keg.directory?
|
if formula.linked_keg.directory?
|
||||||
message = <<-EOS.undent
|
message = <<~EOS
|
||||||
#{formula.name} #{formula.linked_version} is already installed
|
#{formula.name} #{formula.linked_version} is already installed
|
||||||
EOS
|
EOS
|
||||||
message += if formula.outdated? && !formula.head?
|
message += if formula.outdated? && !formula.head?
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
To upgrade to #{formula.pkg_version}, run `brew upgrade #{formula.name}`
|
To upgrade to #{formula.pkg_version}, run `brew upgrade #{formula.name}`
|
||||||
EOS
|
EOS
|
||||||
else
|
else
|
||||||
# some other version is already installed *and* linked
|
# some other version is already installed *and* linked
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
To install #{formula.pkg_version}, first run `brew unlink #{formula.name}`
|
To install #{formula.pkg_version}, first run `brew unlink #{formula.name}`
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -355,7 +355,7 @@ class FormulaInstaller
|
|||||||
rescue FormulaUnavailableError => e
|
rescue FormulaUnavailableError => e
|
||||||
# If the formula name doesn't exist any more then complain but don't
|
# If the formula name doesn't exist any more then complain but don't
|
||||||
# stop installation from continuing.
|
# stop installation from continuing.
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
#{formula}: #{e.message}
|
#{formula}: #{e.message}
|
||||||
'conflicts_with \"#{c.name}\"' should be removed from #{formula.path.basename}.
|
'conflicts_with \"#{c.name}\"' should be removed from #{formula.path.basename}.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -33,33 +33,33 @@ class KegOnlyReason
|
|||||||
def to_s
|
def to_s
|
||||||
return @explanation unless @explanation.empty?
|
return @explanation unless @explanation.empty?
|
||||||
case @reason
|
case @reason
|
||||||
when :versioned_formula then <<-EOS.undent
|
when :versioned_formula then <<~EOS
|
||||||
this is an alternate version of another formula
|
this is an alternate version of another formula
|
||||||
EOS
|
EOS
|
||||||
when :provided_by_macos, :provided_by_osx then <<-EOS.undent
|
when :provided_by_macos, :provided_by_osx then <<~EOS
|
||||||
macOS already provides this software and installing another version in
|
macOS already provides this software and installing another version in
|
||||||
parallel can cause all kinds of trouble
|
parallel can cause all kinds of trouble
|
||||||
EOS
|
EOS
|
||||||
when :shadowed_by_macos, :shadowed_by_osx then <<-EOS.undent
|
when :shadowed_by_macos, :shadowed_by_osx then <<~EOS
|
||||||
macOS provides similar software and installing this software in
|
macOS provides similar software and installing this software in
|
||||||
parallel can cause all kinds of trouble
|
parallel can cause all kinds of trouble
|
||||||
EOS
|
EOS
|
||||||
when :provided_pre_mountain_lion then <<-EOS.undent
|
when :provided_pre_mountain_lion then <<~EOS
|
||||||
macOS already provides this software in versions before Mountain Lion
|
macOS already provides this software in versions before Mountain Lion
|
||||||
EOS
|
EOS
|
||||||
when :provided_pre_mavericks then <<-EOS.undent
|
when :provided_pre_mavericks then <<~EOS
|
||||||
macOS already provides this software in versions before Mavericks
|
macOS already provides this software in versions before Mavericks
|
||||||
EOS
|
EOS
|
||||||
when :provided_pre_el_capitan then <<-EOS.undent
|
when :provided_pre_el_capitan then <<~EOS
|
||||||
macOS already provides this software in versions before El Capitan
|
macOS already provides this software in versions before El Capitan
|
||||||
EOS
|
EOS
|
||||||
when :provided_pre_high_sierra then <<-EOS.undent
|
when :provided_pre_high_sierra then <<~EOS
|
||||||
macOS already provides this software in versions before High Sierra
|
macOS already provides this software in versions before High Sierra
|
||||||
EOS
|
EOS
|
||||||
when :provided_until_xcode43 then <<-EOS.undent
|
when :provided_until_xcode43 then <<~EOS
|
||||||
Xcode provides this software prior to version 4.3
|
Xcode provides this software prior to version 4.3
|
||||||
EOS
|
EOS
|
||||||
when :provided_until_xcode5 then <<-EOS.undent
|
when :provided_until_xcode5 then <<~EOS
|
||||||
Xcode provides this software prior to version 5
|
Xcode provides this software prior to version 5
|
||||||
EOS
|
EOS
|
||||||
else
|
else
|
||||||
|
|||||||
@ -128,7 +128,7 @@ module Formulary
|
|||||||
formula = begin
|
formula = begin
|
||||||
Formulary.from_contents name, @bottle_filename, contents, spec
|
Formulary.from_contents name, @bottle_filename, contents, spec
|
||||||
rescue FormulaUnreadableError => e
|
rescue FormulaUnreadableError => e
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
Unreadable formula in #{@bottle_filename}:
|
Unreadable formula in #{@bottle_filename}:
|
||||||
#{e}
|
#{e}
|
||||||
EOS
|
EOS
|
||||||
@ -443,7 +443,7 @@ module Formulary
|
|||||||
if possible_pinned_tap_formulae.size == 1
|
if possible_pinned_tap_formulae.size == 1
|
||||||
selected_formula = factory(possible_pinned_tap_formulae.first, spec)
|
selected_formula = factory(possible_pinned_tap_formulae.first, spec)
|
||||||
if core_path(ref).file?
|
if core_path(ref).file?
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
#{ref} is provided by core, but is now shadowed by #{selected_formula.full_name}.
|
#{ref} is provided by core, but is now shadowed by #{selected_formula.full_name}.
|
||||||
To refer to the core formula, use Homebrew/core/#{ref} instead.
|
To refer to the core formula, use Homebrew/core/#{ref} instead.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -32,7 +32,7 @@ class Gpg
|
|||||||
def self.create_test_key(path)
|
def self.create_test_key(path)
|
||||||
odie "No GPG present to test against!" unless available?
|
odie "No GPG present to test against!" unless available?
|
||||||
|
|
||||||
(path/"batch.gpg").write <<-EOS.undent
|
(path/"batch.gpg").write <<~EOS
|
||||||
Key-Type: RSA
|
Key-Type: RSA
|
||||||
Key-Length: 2048
|
Key-Length: 2048
|
||||||
Subkey-Type: RSA
|
Subkey-Type: RSA
|
||||||
|
|||||||
@ -6,7 +6,7 @@ require "ostruct"
|
|||||||
class Keg
|
class Keg
|
||||||
class AlreadyLinkedError < RuntimeError
|
class AlreadyLinkedError < RuntimeError
|
||||||
def initialize(keg)
|
def initialize(keg)
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
Cannot link #{keg.name}
|
Cannot link #{keg.name}
|
||||||
Another version is already linked: #{keg.linked_keg_record.resolved_path}
|
Another version is already linked: #{keg.linked_keg_record.resolved_path}
|
||||||
EOS
|
EOS
|
||||||
@ -32,9 +32,9 @@ class Keg
|
|||||||
rescue NotAKegError, Errno::ENOENT
|
rescue NotAKegError, Errno::ENOENT
|
||||||
"already exists. You may want to remove it:\n rm '#{dst}'\n"
|
"already exists. You may want to remove it:\n rm '#{dst}'\n"
|
||||||
else
|
else
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
is a symlink belonging to #{conflict.name}. You can unlink it:
|
is a symlink belonging to #{conflict.name}. You can unlink it:
|
||||||
brew unlink #{conflict.name}
|
brew unlink #{conflict.name}
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ class Keg
|
|||||||
s = []
|
s = []
|
||||||
s << "Could not symlink #{src}"
|
s << "Could not symlink #{src}"
|
||||||
s << "Target #{dst}" << suggestion
|
s << "Target #{dst}" << suggestion
|
||||||
s << <<-EOS.undent
|
s << <<~EOS
|
||||||
To force the link and overwrite all conflicting files:
|
To force the link and overwrite all conflicting files:
|
||||||
brew link --overwrite #{keg.name}
|
brew link --overwrite #{keg.name}
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ class Keg
|
|||||||
end
|
end
|
||||||
|
|
||||||
class DirectoryNotWritableError < LinkError
|
class DirectoryNotWritableError < LinkError
|
||||||
def to_s; <<-EOS.undent
|
def to_s; <<~EOS
|
||||||
Could not symlink #{src}
|
Could not symlink #{src}
|
||||||
#{dst.dirname} is not writable.
|
#{dst.dirname} is not writable.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -46,7 +46,7 @@ module Language
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.in_sys_path?(python, path)
|
def self.in_sys_path?(python, path)
|
||||||
script = <<-EOS.undent
|
script = <<~EOS
|
||||||
import os, sys
|
import os, sys
|
||||||
[os.path.realpath(p) for p in sys.path].index(os.path.realpath("#{path}"))
|
[os.path.realpath(p) for p in sys.path].index(os.path.realpath("#{path}"))
|
||||||
EOS
|
EOS
|
||||||
@ -54,7 +54,7 @@ module Language
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.setup_install_args(prefix)
|
def self.setup_install_args(prefix)
|
||||||
shim = <<-EOS.undent
|
shim = <<~EOS
|
||||||
import setuptools, tokenize
|
import setuptools, tokenize
|
||||||
__file__ = 'setup.py'
|
__file__ = 'setup.py'
|
||||||
exec(compile(getattr(tokenize, 'open', open)(__file__).read()
|
exec(compile(getattr(tokenize, 'open', open)(__file__).read()
|
||||||
|
|||||||
@ -6,7 +6,7 @@ require "tab"
|
|||||||
class Migrator
|
class Migrator
|
||||||
class MigrationNeededError < RuntimeError
|
class MigrationNeededError < RuntimeError
|
||||||
def initialize(formula)
|
def initialize(formula)
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
#{formula.oldname} was renamed to #{formula.name} and needs to be migrated.
|
#{formula.oldname} was renamed to #{formula.name} and needs to be migrated.
|
||||||
Please run `brew migrate #{formula.oldname}`
|
Please run `brew migrate #{formula.oldname}`
|
||||||
EOS
|
EOS
|
||||||
@ -33,10 +33,9 @@ class Migrator
|
|||||||
"Please try to use fully-qualified #{tap}/#{formula.oldname} to refer the formula.\n"
|
"Please try to use fully-qualified #{tap}/#{formula.oldname} to refer the formula.\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
super <<-EOS.undent
|
super <<~EOS
|
||||||
#{formula.name} from #{formula.tap} is given, but old name #{formula.oldname} was installed from #{tap ? tap : "path or url"}.
|
#{formula.name} from #{formula.tap} is given, but old name #{formula.oldname} was installed from #{tap ? tap : "path or url"}.
|
||||||
|
#{msg}To force migrate use `brew migrate --force #{formula.oldname}`.
|
||||||
#{msg}To force migrate use `brew migrate --force #{formula.oldname}`.
|
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -12,10 +12,10 @@ module Homebrew
|
|||||||
|
|
||||||
def blacklisted_reason(name)
|
def blacklisted_reason(name)
|
||||||
case name.downcase
|
case name.downcase
|
||||||
when "gem", /^rubygems?$/ then <<-EOS.undent
|
when "gem", /^rubygems?$/ then <<~EOS
|
||||||
Homebrew provides gem via: `brew install ruby`.
|
Homebrew provides gem via: `brew install ruby`.
|
||||||
EOS
|
EOS
|
||||||
when "tex", "tex-live", "texlive", "latex" then <<-EOS.undent
|
when "tex", "tex-live", "texlive", "latex" then <<~EOS
|
||||||
Installing TeX from source is weird and gross, requires a lot of patches,
|
Installing TeX from source is weird and gross, requires a lot of patches,
|
||||||
and only builds 32-bit (and thus can't use Homebrew dependencies)
|
and only builds 32-bit (and thus can't use Homebrew dependencies)
|
||||||
|
|
||||||
@ -24,42 +24,42 @@ module Homebrew
|
|||||||
You can install it with Homebrew-Cask:
|
You can install it with Homebrew-Cask:
|
||||||
brew cask install mactex
|
brew cask install mactex
|
||||||
EOS
|
EOS
|
||||||
when "pip" then <<-EOS.undent
|
when "pip" then <<~EOS
|
||||||
Homebrew provides pip via: `brew install python`. However you will then
|
Homebrew provides pip via: `brew install python`. However you will then
|
||||||
have two Pythons installed on your Mac, so alternatively you can install
|
have two Pythons installed on your Mac, so alternatively you can install
|
||||||
pip via the instructions at:
|
pip via the instructions at:
|
||||||
#{Formatter.url("https://pip.readthedocs.io/en/stable/installing/")}
|
#{Formatter.url("https://pip.readthedocs.io/en/stable/installing/")}
|
||||||
EOS
|
EOS
|
||||||
when "pil" then <<-EOS.undent
|
when "pil" then <<~EOS
|
||||||
Instead of PIL, consider `pip2 install pillow`.
|
Instead of PIL, consider `pip2 install pillow`.
|
||||||
EOS
|
EOS
|
||||||
when "macruby" then <<-EOS.undent
|
when "macruby" then <<~EOS
|
||||||
MacRuby is not packaged and is on an indefinite development hiatus.
|
MacRuby is not packaged and is on an indefinite development hiatus.
|
||||||
You can read more about it at:
|
You can read more about it at:
|
||||||
#{Formatter.url("https://github.com/MacRuby/MacRuby")}
|
#{Formatter.url("https://github.com/MacRuby/MacRuby")}
|
||||||
EOS
|
EOS
|
||||||
when /(lib)?lzma/
|
when /(lib)?lzma/
|
||||||
"lzma is now part of the xz formula."
|
"lzma is now part of the xz formula."
|
||||||
when "gtest", "googletest", "google-test" then <<-EOS.undent
|
when "gtest", "googletest", "google-test" then <<~EOS
|
||||||
Installing gtest system-wide is not recommended; it should be vendored
|
Installing gtest system-wide is not recommended; it should be vendored
|
||||||
in your projects that use it.
|
in your projects that use it.
|
||||||
EOS
|
EOS
|
||||||
when "gmock", "googlemock", "google-mock" then <<-EOS.undent
|
when "gmock", "googlemock", "google-mock" then <<~EOS
|
||||||
Installing gmock system-wide is not recommended; it should be vendored
|
Installing gmock system-wide is not recommended; it should be vendored
|
||||||
in your projects that use it.
|
in your projects that use it.
|
||||||
EOS
|
EOS
|
||||||
when "sshpass" then <<-EOS.undent
|
when "sshpass" then <<~EOS
|
||||||
We won't add sshpass because it makes it too easy for novice SSH users to
|
We won't add sshpass because it makes it too easy for novice SSH users to
|
||||||
ruin SSH's security.
|
ruin SSH's security.
|
||||||
EOS
|
EOS
|
||||||
when "gsutil" then <<-EOS.undent
|
when "gsutil" then <<~EOS
|
||||||
Install gsutil with `pip2 install gsutil`
|
Install gsutil with `pip2 install gsutil`
|
||||||
EOS
|
EOS
|
||||||
when "gfortran" then <<-EOS.undent
|
when "gfortran" then <<~EOS
|
||||||
GNU Fortran is now provided as part of GCC, and can be installed with:
|
GNU Fortran is now provided as part of GCC, and can be installed with:
|
||||||
brew install gcc
|
brew install gcc
|
||||||
EOS
|
EOS
|
||||||
when "play" then <<-EOS.undent
|
when "play" then <<~EOS
|
||||||
Play 2.3 replaces the play command with activator:
|
Play 2.3 replaces the play command with activator:
|
||||||
brew install typesafe-activator
|
brew install typesafe-activator
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ module Homebrew
|
|||||||
#{Formatter.url("https://www.playframework.com/documentation/2.3.x/Migration23")}
|
#{Formatter.url("https://www.playframework.com/documentation/2.3.x/Migration23")}
|
||||||
#{Formatter.url("https://www.playframework.com/documentation/2.3.x/Highlights23")}
|
#{Formatter.url("https://www.playframework.com/documentation/2.3.x/Highlights23")}
|
||||||
EOS
|
EOS
|
||||||
when "haskell-platform" then <<-EOS.undent
|
when "haskell-platform" then <<~EOS
|
||||||
We no longer package haskell-platform. Consider installing ghc
|
We no longer package haskell-platform. Consider installing ghc
|
||||||
and cabal-install instead:
|
and cabal-install instead:
|
||||||
brew install ghc cabal-install
|
brew install ghc cabal-install
|
||||||
@ -75,10 +75,10 @@ module Homebrew
|
|||||||
You can install with Homebrew-Cask:
|
You can install with Homebrew-Cask:
|
||||||
brew cask install haskell-platform
|
brew cask install haskell-platform
|
||||||
EOS
|
EOS
|
||||||
when "mysqldump-secure" then <<-EOS.undent
|
when "mysqldump-secure" then <<~EOS
|
||||||
The creator of mysqldump-secure tried to game our popularity metrics.
|
The creator of mysqldump-secure tried to game our popularity metrics.
|
||||||
EOS
|
EOS
|
||||||
when "ngrok" then <<-EOS.undent
|
when "ngrok" then <<~EOS
|
||||||
Upstream sunsetted 1.x in March 2016 and 2.x is not open-source.
|
Upstream sunsetted 1.x in March 2016 and 2.x is not open-source.
|
||||||
|
|
||||||
If you wish to use the 2.x release you can install with Homebrew-Cask:
|
If you wish to use the 2.x release you can install with Homebrew-Cask:
|
||||||
@ -98,12 +98,12 @@ module Homebrew
|
|||||||
new_tap_user, new_tap_repo, = new_tap.split("/")
|
new_tap_user, new_tap_repo, = new_tap.split("/")
|
||||||
new_tap_name = "#{new_tap_user}/#{new_tap_repo}"
|
new_tap_name = "#{new_tap_user}/#{new_tap_repo}"
|
||||||
|
|
||||||
message = <<-EOS.undent
|
message = <<~EOS
|
||||||
It was migrated from #{old_tap} to #{new_tap}.
|
It was migrated from #{old_tap} to #{new_tap}.
|
||||||
EOS
|
EOS
|
||||||
break if new_tap_name == CoreTap.instance.name
|
break if new_tap_name == CoreTap.instance.name
|
||||||
|
|
||||||
message += <<-EOS.undent
|
message += <<~EOS
|
||||||
You can access it again by running:
|
You can access it again by running:
|
||||||
brew tap #{new_tap_name}
|
brew tap #{new_tap_name}
|
||||||
EOS
|
EOS
|
||||||
@ -124,7 +124,7 @@ module Homebrew
|
|||||||
unless silent
|
unless silent
|
||||||
ohai "Searching for a previously deleted formula..."
|
ohai "Searching for a previously deleted formula..."
|
||||||
if (tap.path/".git/shallow").exist?
|
if (tap.path/".git/shallow").exist?
|
||||||
opoo <<-EOS.undent
|
opoo <<~EOS
|
||||||
#{tap} is shallow clone. To get complete history run:
|
#{tap} is shallow clone. To get complete history run:
|
||||||
git -C "$(brew --repo #{tap})" fetch --unshallow
|
git -C "$(brew --repo #{tap})" fetch --unshallow
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ module Homebrew
|
|||||||
commit_message.sub!(/ \(#(\d+)\)$/, " (#{tap.issues_url}/\\1)")
|
commit_message.sub!(/ \(#(\d+)\)$/, " (#{tap.issues_url}/\\1)")
|
||||||
commit_message.gsub!(/(Closes|Fixes) #(\d+)/, "\\1 #{tap.issues_url}/\\2")
|
commit_message.gsub!(/(Closes|Fixes) #(\d+)/, "\\1 #{tap.issues_url}/\\2")
|
||||||
|
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
#{name} was deleted from #{tap.name} in commit #{short_hash}:
|
#{name} was deleted from #{tap.name} in commit #{short_hash}:
|
||||||
#{commit_message}
|
#{commit_message}
|
||||||
|
|
||||||
|
|||||||
@ -208,7 +208,7 @@ module OS
|
|||||||
send(:"#{method}_version") == build
|
send(:"#{method}_version") == build
|
||||||
end
|
end
|
||||||
rescue IndexError
|
rescue IndexError
|
||||||
onoe <<-EOS.undent
|
onoe <<~EOS
|
||||||
Homebrew doesn't know what compiler versions ship with your version
|
Homebrew doesn't know what compiler versions ship with your version
|
||||||
of Xcode (#{Xcode.version}). Please `brew update` and if that doesn't
|
of Xcode (#{Xcode.version}). Please `brew update` and if that doesn't
|
||||||
help, file an issue with the output of `brew --config`:
|
help, file an issue with the output of `brew --config`:
|
||||||
|
|||||||
@ -5,7 +5,7 @@ class Keg
|
|||||||
puts "Changing dylib ID of #{file}\n from #{file.dylib_id}\n to #{id}" if ARGV.debug?
|
puts "Changing dylib ID of #{file}\n from #{file.dylib_id}\n to #{id}" if ARGV.debug?
|
||||||
MachO::Tools.change_dylib_id(file, id, strict: false)
|
MachO::Tools.change_dylib_id(file, id, strict: false)
|
||||||
rescue MachO::MachOError
|
rescue MachO::MachOError
|
||||||
onoe <<-EOS.undent
|
onoe <<~EOS
|
||||||
Failed changing dylib ID of #{file}
|
Failed changing dylib ID of #{file}
|
||||||
from #{file.dylib_id}
|
from #{file.dylib_id}
|
||||||
to #{id}
|
to #{id}
|
||||||
@ -19,7 +19,7 @@ class Keg
|
|||||||
puts "Changing install name in #{file}\n from #{old}\n to #{new}" if ARGV.debug?
|
puts "Changing install name in #{file}\n from #{old}\n to #{new}" if ARGV.debug?
|
||||||
MachO::Tools.change_install_name(file, old, new, strict: false)
|
MachO::Tools.change_install_name(file, old, new, strict: false)
|
||||||
rescue MachO::MachOError
|
rescue MachO::MachOError
|
||||||
onoe <<-EOS.undent
|
onoe <<~EOS
|
||||||
Failed changing install name in #{file}
|
Failed changing install name in #{file}
|
||||||
from #{old}
|
from #{old}
|
||||||
to #{new}
|
to #{new}
|
||||||
|
|||||||
@ -86,11 +86,11 @@ module OS
|
|||||||
|
|
||||||
def update_instructions
|
def update_instructions
|
||||||
if MacOS.version >= "10.9" && !OS::Mac.prerelease?
|
if MacOS.version >= "10.9" && !OS::Mac.prerelease?
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Xcode can be updated from the App Store.
|
Xcode can be updated from the App Store.
|
||||||
EOS
|
EOS
|
||||||
else
|
else
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Xcode can be updated from
|
Xcode can be updated from
|
||||||
https://developer.apple.com/download/more/
|
https://developer.apple.com/download/more/
|
||||||
EOS
|
EOS
|
||||||
@ -199,11 +199,11 @@ module OS
|
|||||||
|
|
||||||
def update_instructions
|
def update_instructions
|
||||||
if MacOS.version >= "10.9"
|
if MacOS.version >= "10.9"
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
Update them from Software Update in the App Store.
|
Update them from Software Update in the App Store.
|
||||||
EOS
|
EOS
|
||||||
elsif MacOS.version == "10.8" || MacOS.version == "10.7"
|
elsif MacOS.version == "10.8" || MacOS.version == "10.7"
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
The standalone package can be obtained from
|
The standalone package can be obtained from
|
||||||
https://developer.apple.com/download/more/
|
https://developer.apple.com/download/more/
|
||||||
or it can be installed via Xcode's preferences.
|
or it can be installed via Xcode's preferences.
|
||||||
|
|||||||
@ -139,7 +139,7 @@ class ExternalPatch
|
|||||||
if patch_files.empty?
|
if patch_files.empty?
|
||||||
children = patch_dir.children
|
children = patch_dir.children
|
||||||
if children.length != 1 || !children.first.file?
|
if children.length != 1 || !children.first.file?
|
||||||
raise MissingApplyError, <<-EOS.undent
|
raise MissingApplyError, <<~EOS
|
||||||
There should be exactly one patch file in the staging directory unless
|
There should be exactly one patch file in the staging directory unless
|
||||||
the "apply" method was used one or more times in the patch-do block.
|
the "apply" method was used one or more times in the patch-do block.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -35,18 +35,16 @@ class Requirement
|
|||||||
_, _, class_name = self.class.to_s.rpartition "::"
|
_, _, class_name = self.class.to_s.rpartition "::"
|
||||||
s = "#{class_name} unsatisfied!\n"
|
s = "#{class_name} unsatisfied!\n"
|
||||||
if cask
|
if cask
|
||||||
s += <<-EOS.undent
|
s += <<~EOS
|
||||||
|
|
||||||
You can install with Homebrew-Cask:
|
You can install with Homebrew-Cask:
|
||||||
brew cask install #{cask}
|
brew cask install #{cask}
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
if download
|
if download
|
||||||
s += <<-EOS.undent
|
s += <<~EOS
|
||||||
|
|
||||||
You can download from:
|
You can download from:
|
||||||
#{download}
|
#{download}
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
s
|
s
|
||||||
|
|||||||
@ -34,16 +34,16 @@ class XcodeRequirement < Requirement
|
|||||||
|
|
||||||
def message
|
def message
|
||||||
version = " #{@version}" if @version
|
version = " #{@version}" if @version
|
||||||
message = <<-EOS.undent
|
message = <<~EOS
|
||||||
A full installation of Xcode.app#{version} is required to compile this software.
|
A full installation of Xcode.app#{version} is required to compile this software.
|
||||||
Installing just the Command Line Tools is not sufficient.
|
Installing just the Command Line Tools is not sufficient.
|
||||||
EOS
|
EOS
|
||||||
if MacOS.version >= :lion
|
if MacOS.version >= :lion
|
||||||
message + <<-EOS.undent
|
message + <<~EOS
|
||||||
Xcode can be installed from the App Store.
|
Xcode can be installed from the App Store.
|
||||||
EOS
|
EOS
|
||||||
else
|
else
|
||||||
message + <<-EOS.undent
|
message + <<~EOS
|
||||||
Xcode can be installed from #{Formatter.url("https://developer.apple.com/download/more/")}.
|
Xcode can be installed from #{Formatter.url("https://developer.apple.com/download/more/")}.
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -83,7 +83,7 @@ class TeXRequirement < Requirement
|
|||||||
satisfy { which("tex") || which("latex") }
|
satisfy { which("tex") || which("latex") }
|
||||||
|
|
||||||
def message
|
def message
|
||||||
s = <<-EOS.undent
|
s = <<~EOS
|
||||||
A LaTeX distribution is required for Homebrew to install this formula.
|
A LaTeX distribution is required for Homebrew to install this formula.
|
||||||
|
|
||||||
Make sure that "/usr/texbin", or the location you installed it to, is in
|
Make sure that "/usr/texbin", or the location you installed it to, is in
|
||||||
|
|||||||
@ -13,16 +13,15 @@ class LanguageModuleRequirement < Requirement
|
|||||||
satisfy(build_env: false) { quiet_system(*the_test) }
|
satisfy(build_env: false) { quiet_system(*the_test) }
|
||||||
|
|
||||||
def message
|
def message
|
||||||
s = <<-EOS.undent
|
s = <<~EOS
|
||||||
Unsatisfied dependency: #{@module_name}
|
Unsatisfied dependency: #{@module_name}
|
||||||
Homebrew does not provide special #{@language.to_s.capitalize} dependencies; install with:
|
Homebrew does not provide special #{@language.to_s.capitalize} dependencies; install with:
|
||||||
`#{command_line} #{@module_name}`
|
`#{command_line} #{@module_name}`
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
unless [:python, :perl, :ruby].include? @language
|
unless [:python, :perl, :ruby].include? @language
|
||||||
s += <<-EOS.undent
|
s += <<~EOS
|
||||||
|
You may need to: `brew install #{@language}`
|
||||||
You may need to: `brew install #{@language}`
|
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|||||||
@ -11,7 +11,7 @@ class MaximumMacOSRequirement < Requirement
|
|||||||
satisfy(build_env: false) { MacOS.version <= @version }
|
satisfy(build_env: false) { MacOS.version <= @version }
|
||||||
|
|
||||||
def message
|
def message
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
This formula either does not compile or function as expected on macOS
|
This formula either does not compile or function as expected on macOS
|
||||||
versions newer than #{@version.pretty_name} due to an upstream incompatibility.
|
versions newer than #{@version.pretty_name} due to an upstream incompatibility.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -6,7 +6,7 @@ class UnsignedKextRequirement < Requirement
|
|||||||
satisfy(build_env: false) { MacOS.version < :yosemite }
|
satisfy(build_env: false) { MacOS.version < :yosemite }
|
||||||
|
|
||||||
def message
|
def message
|
||||||
s = <<-EOS.undent
|
s = <<~EOS
|
||||||
Building this formula from source isn't possible due to OS X
|
Building this formula from source isn't possible due to OS X
|
||||||
Yosemite (10.10) and above's strict unsigned kext ban.
|
Yosemite (10.10) and above's strict unsigned kext ban.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -6,7 +6,7 @@ module RuboCop
|
|||||||
module FormulaAudit
|
module FormulaAudit
|
||||||
# This cop audits versioned Formulae for `conflicts_with`
|
# This cop audits versioned Formulae for `conflicts_with`
|
||||||
class Conflicts < FormulaCop
|
class Conflicts < FormulaCop
|
||||||
MSG = <<-EOS.undent
|
MSG = <<~EOS.freeze
|
||||||
Versioned formulae should not use `conflicts_with`.
|
Versioned formulae should not use `conflicts_with`.
|
||||||
Use `keg_only :versioned_formula` instead.
|
Use `keg_only :versioned_formula` instead.
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -167,19 +167,19 @@ module RuboCop
|
|||||||
type_match && name_match
|
type_match && name_match
|
||||||
end
|
end
|
||||||
|
|
||||||
def_node_search :required_dependency?, <<-EOS.undent
|
def_node_search :required_dependency?, <<~EOS
|
||||||
(send nil :depends_on ({str sym} _))
|
(send nil :depends_on ({str sym} _))
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
def_node_search :required_dependency_name?, <<-EOS.undent
|
def_node_search :required_dependency_name?, <<~EOS
|
||||||
(send nil :depends_on ({str sym} %1))
|
(send nil :depends_on ({str sym} %1))
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
def_node_search :dependency_type_hash_match?, <<-EOS.undent
|
def_node_search :dependency_type_hash_match?, <<~EOS
|
||||||
(hash (pair ({str sym} _) ({str sym} %1)))
|
(hash (pair ({str sym} _) ({str sym} %1)))
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
def_node_search :dependency_name_hash_match?, <<-EOS.undent
|
def_node_search :dependency_name_hash_match?, <<~EOS
|
||||||
(hash (pair ({str sym} %1) ({str sym} _)))
|
(hash (pair ({str sym} %1) ({str sym} _)))
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ module RuboCop
|
|||||||
desc_length = "#{@formula_name}: #{string_content(desc)}".length
|
desc_length = "#{@formula_name}: #{string_content(desc)}".length
|
||||||
max_desc_length = 80
|
max_desc_length = 80
|
||||||
return if desc_length <= max_desc_length
|
return if desc_length <= max_desc_length
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
Description is too long. "name: desc" should be less than #{max_desc_length} characters.
|
Description is too long. "name: desc" should be less than #{max_desc_length} characters.
|
||||||
Length is calculated as #{@formula_name} + desc. (currently #{desc_length})
|
Length is calculated as #{@formula_name} + desc. (currently #{desc_length})
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -109,7 +109,7 @@ module RuboCop
|
|||||||
end
|
end
|
||||||
|
|
||||||
find_method_with_args(body_node, :skip_clean, :all) do
|
find_method_with_args(body_node, :skip_clean, :all) do
|
||||||
problem <<-EOS.undent.chomp
|
problem <<~EOS.chomp
|
||||||
`skip_clean :all` is deprecated; brew no longer strips symbols
|
`skip_clean :all` is deprecated; brew no longer strips symbols
|
||||||
Pass explicit paths to prevent Homebrew from removing empty folders.
|
Pass explicit paths to prevent Homebrew from removing empty folders.
|
||||||
EOS
|
EOS
|
||||||
@ -131,7 +131,7 @@ module RuboCop
|
|||||||
end
|
end
|
||||||
|
|
||||||
# Node Pattern search for Language::Node
|
# Node Pattern search for Language::Node
|
||||||
def_node_search :languageNodeModule?, <<-EOS.undent
|
def_node_search :languageNodeModule?, <<~EOS
|
||||||
(const (const nil :Language) :Node)
|
(const (const nil :Language) :Node)
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|||||||
@ -28,7 +28,7 @@ module RuboCop
|
|||||||
gh_patch_param_pattern = %r{https?://github\.com/.+/.+/(?:commit|pull)/[a-fA-F0-9]*.(?:patch|diff)}
|
gh_patch_param_pattern = %r{https?://github\.com/.+/.+/(?:commit|pull)/[a-fA-F0-9]*.(?:patch|diff)}
|
||||||
if regex_match_group(patch, gh_patch_param_pattern)
|
if regex_match_group(patch, gh_patch_param_pattern)
|
||||||
if patch_url !~ /\?full_index=\w+$/
|
if patch_url !~ /\?full_index=\w+$/
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
GitHub patches should use the full_index parameter:
|
GitHub patches should use the full_index parameter:
|
||||||
#{patch_url}?full_index=1
|
#{patch_url}?full_index=1
|
||||||
EOS
|
EOS
|
||||||
@ -41,7 +41,7 @@ module RuboCop
|
|||||||
%r{gist\.githubusercontent\.com/.+/raw}])
|
%r{gist\.githubusercontent\.com/.+/raw}])
|
||||||
if regex_match_group(patch, gh_patch_patterns)
|
if regex_match_group(patch, gh_patch_patterns)
|
||||||
if patch_url !~ /[a-fA-F0-9]{40}/
|
if patch_url !~ /[a-fA-F0-9]{40}/
|
||||||
problem <<-EOS.undent.chomp
|
problem <<~EOS.chomp
|
||||||
GitHub/Gist patches should specify a revision:
|
GitHub/Gist patches should specify a revision:
|
||||||
#{patch_url}
|
#{patch_url}
|
||||||
EOS
|
EOS
|
||||||
@ -50,7 +50,7 @@ module RuboCop
|
|||||||
|
|
||||||
gh_patch_diff_pattern = %r{https?://patch-diff\.githubusercontent\.com/raw/(.+)/(.+)/pull/(.+)\.(?:diff|patch)}
|
gh_patch_diff_pattern = %r{https?://patch-diff\.githubusercontent\.com/raw/(.+)/(.+)/pull/(.+)\.(?:diff|patch)}
|
||||||
if match_obj = regex_match_group(patch, gh_patch_diff_pattern)
|
if match_obj = regex_match_group(patch, gh_patch_diff_pattern)
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
use GitHub pull request URLs:
|
use GitHub pull request URLs:
|
||||||
https://github.com/#{match_obj[1]}/#{match_obj[2]}/pull/#{match_obj[3]}.patch
|
https://github.com/#{match_obj[1]}/#{match_obj[2]}/pull/#{match_obj[3]}.patch
|
||||||
Rather than patch-diff:
|
Rather than patch-diff:
|
||||||
@ -59,21 +59,21 @@ module RuboCop
|
|||||||
end
|
end
|
||||||
|
|
||||||
if regex_match_group(patch, %r{macports/trunk})
|
if regex_match_group(patch, %r{macports/trunk})
|
||||||
problem <<-EOS.undent.chomp
|
problem <<~EOS.chomp
|
||||||
MacPorts patches should specify a revision instead of trunk:
|
MacPorts patches should specify a revision instead of trunk:
|
||||||
#{patch_url}
|
#{patch_url}
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
if regex_match_group(patch, %r{^http://trac\.macports\.org})
|
if regex_match_group(patch, %r{^http://trac\.macports\.org})
|
||||||
problem <<-EOS.undent.chomp
|
problem <<~EOS.chomp
|
||||||
Patches from MacPorts Trac should be https://, not http:
|
Patches from MacPorts Trac should be https://, not http:
|
||||||
#{patch_url}
|
#{patch_url}
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
return unless regex_match_group(patch, %r{^http://bugs\.debian\.org})
|
return unless regex_match_group(patch, %r{^http://bugs\.debian\.org})
|
||||||
problem <<-EOS.undent.chomp
|
problem <<~EOS.chomp
|
||||||
Patches from Debian should be https://, not http:
|
Patches from Debian should be https://, not http:
|
||||||
#{patch_url}
|
#{patch_url}
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -104,7 +104,7 @@ module RuboCop
|
|||||||
end
|
end
|
||||||
|
|
||||||
if url =~ %r{^https?://prdownloads\.}
|
if url =~ %r{^https?://prdownloads\.}
|
||||||
problem <<-EOS.undent.chomp
|
problem <<~EOS.chomp
|
||||||
Don't use prdownloads in SourceForge urls (url is #{url}).
|
Don't use prdownloads in SourceForge urls (url is #{url}).
|
||||||
See: http://librelist.com/browser/homebrew/2011/1/12/prdownloads-is-bad/
|
See: http://librelist.com/browser/homebrew/2011/1/12/prdownloads-is-bad/
|
||||||
EOS
|
EOS
|
||||||
@ -121,7 +121,7 @@ module RuboCop
|
|||||||
# one out of the grab bag.
|
# one out of the grab bag.
|
||||||
unsecure_deb_pattern = %r{^http://http\.debian\.net/debian/(.*)}i
|
unsecure_deb_pattern = %r{^http://http\.debian\.net/debian/(.*)}i
|
||||||
audit_urls(urls, unsecure_deb_pattern) do |match, _|
|
audit_urls(urls, unsecure_deb_pattern) do |match, _|
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
Please use a secure mirror for Debian URLs.
|
Please use a secure mirror for Debian URLs.
|
||||||
We recommend:
|
We recommend:
|
||||||
https://mirrors.ocf.berkeley.edu/debian/#{match[1]}
|
https://mirrors.ocf.berkeley.edu/debian/#{match[1]}
|
||||||
@ -176,7 +176,7 @@ module RuboCop
|
|||||||
# Don't use GitHub codeload URLs
|
# Don't use GitHub codeload URLs
|
||||||
codeload_gh_pattern = %r{https?://codeload\.github\.com/(.+)/(.+)/(?:tar\.gz|zip)/(.+)}
|
codeload_gh_pattern = %r{https?://codeload\.github\.com/(.+)/(.+)/(?:tar\.gz|zip)/(.+)}
|
||||||
audit_urls(urls, codeload_gh_pattern) do |match, url|
|
audit_urls(urls, codeload_gh_pattern) do |match, url|
|
||||||
problem <<-EOS.undent
|
problem <<~EOS
|
||||||
Use GitHub archive URLs:
|
Use GitHub archive URLs:
|
||||||
https://github.com/#{match[1]}/#{match[2]}/archive/#{match[3]}.tar.gz
|
https://github.com/#{match[1]}/#{match[2]}/archive/#{match[3]}.tar.gz
|
||||||
Rather than codeload:
|
Rather than codeload:
|
||||||
|
|||||||
@ -138,7 +138,7 @@ class Sandbox
|
|||||||
end
|
end
|
||||||
|
|
||||||
class SandboxProfile
|
class SandboxProfile
|
||||||
SEATBELT_ERB = <<-EOS.undent
|
SEATBELT_ERB = <<~EOS.freeze
|
||||||
(version 1)
|
(version 1)
|
||||||
(debug deny) ; log all denied operations to /var/log/system.log
|
(debug deny) ; log all denied operations to /var/log/system.log
|
||||||
<%= rules.join("\n") %>
|
<%= rules.join("\n") %>
|
||||||
|
|||||||
@ -267,7 +267,7 @@ class Tap
|
|||||||
return if options[:clone_target]
|
return if options[:clone_target]
|
||||||
return unless private?
|
return unless private?
|
||||||
return if quiet
|
return if quiet
|
||||||
puts <<-EOS.undent
|
puts <<~EOS
|
||||||
It looks like you tapped a private repository. To avoid entering your
|
It looks like you tapped a private repository. To avoid entering your
|
||||||
credentials each time you update, you can use git HTTP credential
|
credentials each time you update, you can use git HTTP credential
|
||||||
caching or issue the following command:
|
caching or issue the following command:
|
||||||
|
|||||||
@ -82,12 +82,12 @@ describe Hbc::Artifact::App, :cask do
|
|||||||
|
|
||||||
describe "target is both writable and user-owned" do
|
describe "target is both writable and user-owned" do
|
||||||
it "overwrites the existing app" do
|
it "overwrites the existing app" do
|
||||||
stdout = <<-EOS.undent
|
stdout = <<~EOS
|
||||||
==> Removing App '#{target_path}'.
|
==> Removing App '#{target_path}'.
|
||||||
==> Moving App 'Caffeine.app' to '#{target_path}'.
|
==> Moving App 'Caffeine.app' to '#{target_path}'.
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
stderr = <<-EOS.undent
|
stderr = <<~EOS
|
||||||
Warning: It seems there is already an App at '#{target_path}'; overwriting.
|
Warning: It seems there is already an App at '#{target_path}'; overwriting.
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
@ -117,12 +117,12 @@ describe Hbc::Artifact::App, :cask do
|
|||||||
expect(command).to receive(:run).with("/usr/bin/chflags", args: ["-R", "--", "000", target_path], must_succeed: false)
|
expect(command).to receive(:run).with("/usr/bin/chflags", args: ["-R", "--", "000", target_path], must_succeed: false)
|
||||||
.and_call_original
|
.and_call_original
|
||||||
|
|
||||||
stdout = <<-EOS.undent
|
stdout = <<~EOS
|
||||||
==> Removing App '#{target_path}'.
|
==> Removing App '#{target_path}'.
|
||||||
==> Moving App 'Caffeine.app' to '#{target_path}'.
|
==> Moving App 'Caffeine.app' to '#{target_path}'.
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
stderr = <<-EOS.undent
|
stderr = <<~EOS
|
||||||
Warning: It seems there is already an App at '#{target_path}'; overwriting.
|
Warning: It seems there is already an App at '#{target_path}'; overwriting.
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
@ -162,12 +162,12 @@ describe Hbc::Artifact::App, :cask do
|
|||||||
let(:force) { true }
|
let(:force) { true }
|
||||||
|
|
||||||
it "overwrites the existing app" do
|
it "overwrites the existing app" do
|
||||||
stdout = <<-EOS.undent
|
stdout = <<~EOS
|
||||||
==> Removing App '#{target_path}'.
|
==> Removing App '#{target_path}'.
|
||||||
==> Moving App 'Caffeine.app' to '#{target_path}'.
|
==> Moving App 'Caffeine.app' to '#{target_path}'.
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
stderr = <<-EOS.undent
|
stderr = <<~EOS
|
||||||
Warning: It seems there is already an App at '#{target_path}'; overwriting.
|
Warning: It seems there is already an App at '#{target_path}'; overwriting.
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ describe Hbc::Artifact::Pkg, :cask do
|
|||||||
|
|
||||||
file = double(path: Pathname.new("/tmp/choices.xml"))
|
file = double(path: Pathname.new("/tmp/choices.xml"))
|
||||||
|
|
||||||
expect(file).to receive(:write).with(<<-EOS.undent)
|
expect(file).to receive(:write).with(<<~EOS)
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
|
|||||||
@ -61,7 +61,7 @@ describe Hbc::Artifact::App, :cask do
|
|||||||
target_path_mini.mkpath
|
target_path_mini.mkpath
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
expect(install_phase).to output(<<-EOS.undent).to_stdout
|
expect(install_phase).to output(<<~EOS).to_stdout
|
||||||
==> Moving App 'Caffeine Pro.app' to '#{target_path_pro}'
|
==> Moving App 'Caffeine Pro.app' to '#{target_path_pro}'
|
||||||
EOS
|
EOS
|
||||||
}.to raise_error(Hbc::CaskError, "It seems there is already an App at '#{target_path_mini}'.")
|
}.to raise_error(Hbc::CaskError, "It seems there is already an App at '#{target_path_mini}'.")
|
||||||
@ -75,7 +75,7 @@ describe Hbc::Artifact::App, :cask do
|
|||||||
target_path_pro.mkpath
|
target_path_pro.mkpath
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
expect(install_phase).to output(<<-EOS.undent).to_stdout
|
expect(install_phase).to output(<<~EOS).to_stdout
|
||||||
==> Moving App 'Caffeine Mini.app' to '#{target_path_mini}'
|
==> Moving App 'Caffeine Mini.app' to '#{target_path_mini}'
|
||||||
EOS
|
EOS
|
||||||
}.to raise_error(Hbc::CaskError, "It seems there is already an App at '#{target_path_pro}'.")
|
}.to raise_error(Hbc::CaskError, "It seems there is already an App at '#{target_path_pro}'.")
|
||||||
|
|||||||
@ -11,7 +11,7 @@ shared_examples "#uninstall_phase or #zap_phase" do
|
|||||||
let(:launchctl_remove_cmd) { %w[/bin/launchctl remove my.fancy.package.service] }
|
let(:launchctl_remove_cmd) { %w[/bin/launchctl remove my.fancy.package.service] }
|
||||||
let(:unknown_response) { "launchctl list returned unknown response\n" }
|
let(:unknown_response) { "launchctl list returned unknown response\n" }
|
||||||
let(:service_info) do
|
let(:service_info) do
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
{
|
{
|
||||||
"LimitLoadToSessionType" = "Aqua";
|
"LimitLoadToSessionType" = "Aqua";
|
||||||
"Label" = "my.fancy.package.service";
|
"Label" = "my.fancy.package.service";
|
||||||
|
|||||||
@ -7,7 +7,7 @@ describe Hbc::CLI::Cat, :cask do
|
|||||||
|
|
||||||
describe "given a basic Cask" do
|
describe "given a basic Cask" do
|
||||||
let(:basic_cask_content) {
|
let(:basic_cask_content) {
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
cask 'basic-cask' do
|
cask 'basic-cask' do
|
||||||
version '1.2.3'
|
version '1.2.3'
|
||||||
sha256 '8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b'
|
sha256 '8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b'
|
||||||
|
|||||||
@ -32,7 +32,7 @@ describe Hbc::CLI::Cleanup, :cask do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
subject.run
|
subject.run
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
==> Removing cached downloads for #{cask_token}
|
==> Removing cached downloads for #{cask_token}
|
||||||
#{cached_downloads[0]}
|
#{cached_downloads[0]}
|
||||||
==> This operation has freed approximately #{disk_usage_readable(cleanup_size)} of disk space.
|
==> This operation has freed approximately #{disk_usage_readable(cleanup_size)} of disk space.
|
||||||
@ -52,7 +52,7 @@ describe Hbc::CLI::Cleanup, :cask do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
subject.run
|
subject.run
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
==> Removing cached downloads
|
==> Removing cached downloads
|
||||||
#{cached_download}
|
#{cached_download}
|
||||||
==> This operation has freed approximately #{disk_usage_readable(cleanup_size)} of disk space.
|
==> This operation has freed approximately #{disk_usage_readable(cleanup_size)} of disk space.
|
||||||
@ -70,7 +70,7 @@ describe Hbc::CLI::Cleanup, :cask do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
subject.run
|
subject.run
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
==> Removing cached downloads older than 10 days old
|
==> Removing cached downloads older than 10 days old
|
||||||
Nothing to do
|
Nothing to do
|
||||||
EOS
|
EOS
|
||||||
|
|||||||
@ -28,7 +28,7 @@ describe Hbc::CLI::Create, :cask do
|
|||||||
it "drops a template down for the specified Cask" do
|
it "drops a template down for the specified Cask" do
|
||||||
described_class.run("new-cask")
|
described_class.run("new-cask")
|
||||||
template = File.read(Hbc::CaskLoader.path("new-cask"))
|
template = File.read(Hbc::CaskLoader.path("new-cask"))
|
||||||
expect(template).to eq <<-EOS.undent
|
expect(template).to eq <<~EOS
|
||||||
cask 'new-cask' do
|
cask 'new-cask' do
|
||||||
version ''
|
version ''
|
||||||
sha256 ''
|
sha256 ''
|
||||||
|
|||||||
@ -8,7 +8,7 @@ describe Hbc::CLI::Info, :cask do
|
|||||||
it "displays some nice info about the specified Cask" do
|
it "displays some nice info about the specified Cask" do
|
||||||
expect {
|
expect {
|
||||||
described_class.run("local-caffeine")
|
described_class.run("local-caffeine")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
local-caffeine: 1.2.3
|
local-caffeine: 1.2.3
|
||||||
http://example.com/local-caffeine
|
http://example.com/local-caffeine
|
||||||
Not installed
|
Not installed
|
||||||
@ -22,7 +22,7 @@ describe Hbc::CLI::Info, :cask do
|
|||||||
|
|
||||||
describe "given multiple Casks" do
|
describe "given multiple Casks" do
|
||||||
let(:expected_output) {
|
let(:expected_output) {
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
local-caffeine: 1.2.3
|
local-caffeine: 1.2.3
|
||||||
http://example.com/local-caffeine
|
http://example.com/local-caffeine
|
||||||
Not installed
|
Not installed
|
||||||
@ -52,7 +52,7 @@ describe Hbc::CLI::Info, :cask do
|
|||||||
it "should print caveats if the Cask provided one" do
|
it "should print caveats if the Cask provided one" do
|
||||||
expect {
|
expect {
|
||||||
described_class.run("with-caveats")
|
described_class.run("with-caveats")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
with-caveats: 1.2.3
|
with-caveats: 1.2.3
|
||||||
http://example.com/local-caffeine
|
http://example.com/local-caffeine
|
||||||
Not installed
|
Not installed
|
||||||
@ -78,7 +78,7 @@ describe Hbc::CLI::Info, :cask do
|
|||||||
it 'should not print "Caveats" section divider if the caveats block has no output' do
|
it 'should not print "Caveats" section divider if the caveats block has no output' do
|
||||||
expect {
|
expect {
|
||||||
described_class.run("with-conditional-caveats")
|
described_class.run("with-conditional-caveats")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
with-conditional-caveats: 1.2.3
|
with-conditional-caveats: 1.2.3
|
||||||
http://example.com/local-caffeine
|
http://example.com/local-caffeine
|
||||||
Not installed
|
Not installed
|
||||||
@ -93,7 +93,7 @@ describe Hbc::CLI::Info, :cask do
|
|||||||
it "prints languages specified in the Cask" do
|
it "prints languages specified in the Cask" do
|
||||||
expect {
|
expect {
|
||||||
described_class.run("with-languages")
|
described_class.run("with-languages")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
with-languages: 1.2.3
|
with-languages: 1.2.3
|
||||||
http://example.com/local-caffeine
|
http://example.com/local-caffeine
|
||||||
Not installed
|
Not installed
|
||||||
@ -110,7 +110,7 @@ describe Hbc::CLI::Info, :cask do
|
|||||||
it 'does not print "Languages" section divider if the languages block has no output' do
|
it 'does not print "Languages" section divider if the languages block has no output' do
|
||||||
expect {
|
expect {
|
||||||
described_class.run("without-languages")
|
described_class.run("without-languages")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
without-languages: 1.2.3
|
without-languages: 1.2.3
|
||||||
http://example.com/local-caffeine
|
http://example.com/local-caffeine
|
||||||
Not installed
|
Not installed
|
||||||
|
|||||||
@ -6,7 +6,7 @@ describe Hbc::CLI::Install, :cask do
|
|||||||
it_behaves_like "a command that handles invalid options"
|
it_behaves_like "a command that handles invalid options"
|
||||||
|
|
||||||
it "displays the installation progress" do
|
it "displays the installation progress" do
|
||||||
output = Regexp.new <<-EOS.undent
|
output = Regexp.new <<~EOS
|
||||||
==> Downloading file:.*caffeine.zip
|
==> Downloading file:.*caffeine.zip
|
||||||
==> Verifying checksum for Cask local-caffeine
|
==> Verifying checksum for Cask local-caffeine
|
||||||
==> Installing Cask local-caffeine
|
==> Installing Cask local-caffeine
|
||||||
|
|||||||
@ -12,7 +12,7 @@ describe Hbc::CLI::List, :cask do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
described_class.run
|
described_class.run
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
local-caffeine
|
local-caffeine
|
||||||
local-transmission
|
local-transmission
|
||||||
EOS
|
EOS
|
||||||
@ -31,7 +31,7 @@ describe Hbc::CLI::List, :cask do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
described_class.run("--full-name")
|
described_class.run("--full-name")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
local-caffeine
|
local-caffeine
|
||||||
local-transmission
|
local-transmission
|
||||||
third-party/tap/third-party-cask
|
third-party/tap/third-party-cask
|
||||||
@ -41,7 +41,7 @@ describe Hbc::CLI::List, :cask do
|
|||||||
describe "lists versions" do
|
describe "lists versions" do
|
||||||
let(:casks) { ["local-caffeine", "local-transmission"] }
|
let(:casks) { ["local-caffeine", "local-transmission"] }
|
||||||
let(:expected_output) {
|
let(:expected_output) {
|
||||||
<<-EOS.undent
|
<<~EOS
|
||||||
local-caffeine 1.2.3
|
local-caffeine 1.2.3
|
||||||
local-transmission 2.61
|
local-transmission 2.61
|
||||||
EOS
|
EOS
|
||||||
@ -78,7 +78,7 @@ describe Hbc::CLI::List, :cask do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
described_class.run("local-transmission", "local-caffeine")
|
described_class.run("local-transmission", "local-caffeine")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
==> Apps
|
==> Apps
|
||||||
#{Hbc.appdir.join("Transmission.app")} (#{Hbc.appdir.join("Transmission.app").abv})
|
#{Hbc.appdir.join("Transmission.app")} (#{Hbc.appdir.join("Transmission.app").abv})
|
||||||
==> Apps
|
==> Apps
|
||||||
|
|||||||
@ -23,7 +23,7 @@ describe Hbc::CLI::Outdated, :cask do
|
|||||||
it "checks all the installed Casks when no token is provided" do
|
it "checks all the installed Casks when no token is provided" do
|
||||||
expect {
|
expect {
|
||||||
described_class.run
|
described_class.run
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
local-caffeine (1.2.2) != 1.2.3
|
local-caffeine (1.2.2) != 1.2.3
|
||||||
local-transmission (2.60) != 2.61
|
local-transmission (2.60) != 2.61
|
||||||
EOS
|
EOS
|
||||||
@ -32,7 +32,7 @@ describe Hbc::CLI::Outdated, :cask do
|
|||||||
it "checks only the tokens specified in the command line" do
|
it "checks only the tokens specified in the command line" do
|
||||||
expect {
|
expect {
|
||||||
described_class.run("local-caffeine")
|
described_class.run("local-caffeine")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
local-caffeine (1.2.2) != 1.2.3
|
local-caffeine (1.2.2) != 1.2.3
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -40,7 +40,7 @@ describe Hbc::CLI::Outdated, :cask do
|
|||||||
it 'ignores "auto_updates" and "latest" Casks even when their tokens are provided in the command line' do
|
it 'ignores "auto_updates" and "latest" Casks even when their tokens are provided in the command line' do
|
||||||
expect {
|
expect {
|
||||||
described_class.run("local-caffeine", "auto-updates", "version-latest-string")
|
described_class.run("local-caffeine", "auto-updates", "version-latest-string")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
local-caffeine (1.2.2) != 1.2.3
|
local-caffeine (1.2.2) != 1.2.3
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -54,7 +54,7 @@ describe Hbc::CLI::Outdated, :cask do
|
|||||||
it "lists only the names (no versions) of the outdated Casks with --quiet" do
|
it "lists only the names (no versions) of the outdated Casks with --quiet" do
|
||||||
expect {
|
expect {
|
||||||
described_class.run("--verbose", "--quiet")
|
described_class.run("--verbose", "--quiet")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
local-caffeine
|
local-caffeine
|
||||||
local-transmission
|
local-transmission
|
||||||
EOS
|
EOS
|
||||||
@ -65,7 +65,7 @@ describe Hbc::CLI::Outdated, :cask do
|
|||||||
it 'includes the Casks with "auto_updates true" or "version latest" with --greedy' do
|
it 'includes the Casks with "auto_updates true" or "version latest" with --greedy' do
|
||||||
expect {
|
expect {
|
||||||
described_class.run("--greedy")
|
described_class.run("--greedy")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
auto-updates (2.57) != 2.61
|
auto-updates (2.57) != 2.61
|
||||||
local-caffeine (1.2.2) != 1.2.3
|
local-caffeine (1.2.2) != 1.2.3
|
||||||
local-transmission (2.60) != 2.61
|
local-transmission (2.60) != 2.61
|
||||||
@ -79,7 +79,7 @@ describe Hbc::CLI::Outdated, :cask do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
described_class.run("--greedy")
|
described_class.run("--greedy")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
local-caffeine (1.2.2) != 1.2.3
|
local-caffeine (1.2.2) != 1.2.3
|
||||||
local-transmission (2.60) != 2.61
|
local-transmission (2.60) != 2.61
|
||||||
version-latest-string (latest) != latest
|
version-latest-string (latest) != latest
|
||||||
|
|||||||
@ -8,7 +8,7 @@ describe Hbc::CLI::Reinstall, :cask do
|
|||||||
|
|
||||||
Hbc::Installer.new(caffeine).install
|
Hbc::Installer.new(caffeine).install
|
||||||
|
|
||||||
output = Regexp.new <<-EOS.undent
|
output = Regexp.new <<~EOS
|
||||||
==> Downloading file:.*caffeine.zip
|
==> Downloading file:.*caffeine.zip
|
||||||
Already downloaded: .*local-caffeine--1.2.3.zip
|
Already downloaded: .*local-caffeine--1.2.3.zip
|
||||||
==> Verifying checksum for Cask local-caffeine
|
==> Verifying checksum for Cask local-caffeine
|
||||||
|
|||||||
@ -12,7 +12,7 @@ describe Hbc::CLI::Search, :cask do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
Hbc::CLI::Search.run("local")
|
Hbc::CLI::Search.run("local")
|
||||||
}.to output(<<-EOS.undent).to_stdout.as_tty
|
}.to output(<<~EOS).to_stdout.as_tty
|
||||||
==> Partial Matches
|
==> Partial Matches
|
||||||
local-caffeine
|
local-caffeine
|
||||||
local-transmission
|
local-transmission
|
||||||
@ -24,7 +24,7 @@ describe Hbc::CLI::Search, :cask do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
Hbc::CLI::Search.run("local")
|
Hbc::CLI::Search.run("local")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
local-caffeine
|
local-caffeine
|
||||||
local-transmission
|
local-transmission
|
||||||
EOS
|
EOS
|
||||||
@ -35,7 +35,7 @@ describe Hbc::CLI::Search, :cask do
|
|||||||
|
|
||||||
expect {
|
expect {
|
||||||
Hbc::CLI::Search.run("local")
|
Hbc::CLI::Search.run("local")
|
||||||
}.to output(<<-EOS.undent).to_stdout
|
}.to output(<<~EOS).to_stdout
|
||||||
local-caffeine
|
local-caffeine
|
||||||
local-transmission
|
local-transmission
|
||||||
EOS
|
EOS
|
||||||
@ -45,7 +45,7 @@ describe Hbc::CLI::Search, :cask do
|
|||||||
it "shows that there are no Casks matching a search term that did not result in anything" do
|
it "shows that there are no Casks matching a search term that did not result in anything" do
|
||||||
expect {
|
expect {
|
||||||
Hbc::CLI::Search.run("foo-bar-baz")
|
Hbc::CLI::Search.run("foo-bar-baz")
|
||||||
}.to output(<<-EOS.undent).to_stdout.as_tty
|
}.to output(<<~EOS).to_stdout.as_tty
|
||||||
No Cask found for "foo-bar-baz".
|
No Cask found for "foo-bar-baz".
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
@ -84,7 +84,7 @@ describe Hbc::CLI::Search, :cask do
|
|||||||
it "accepts a regexp argument" do
|
it "accepts a regexp argument" do
|
||||||
expect {
|
expect {
|
||||||
Hbc::CLI::Search.run("/^local-c[a-z]ffeine$/")
|
Hbc::CLI::Search.run("/^local-c[a-z]ffeine$/")
|
||||||
}.to output(<<-EOS.undent).to_stdout.as_tty
|
}.to output(<<~EOS).to_stdout.as_tty
|
||||||
==> Regexp Matches
|
==> Regexp Matches
|
||||||
local-caffeine
|
local-caffeine
|
||||||
EOS
|
EOS
|
||||||
@ -93,7 +93,7 @@ describe Hbc::CLI::Search, :cask do
|
|||||||
it "returns both exact and partial matches" do
|
it "returns both exact and partial matches" do
|
||||||
expect {
|
expect {
|
||||||
Hbc::CLI::Search.run("test-opera")
|
Hbc::CLI::Search.run("test-opera")
|
||||||
}.to output(<<-EOS.undent).to_stdout.as_tty
|
}.to output(<<~EOS).to_stdout.as_tty
|
||||||
==> Exact Match
|
==> Exact Match
|
||||||
test-opera
|
test-opera
|
||||||
==> Partial Matches
|
==> Partial Matches
|
||||||
@ -104,7 +104,7 @@ describe Hbc::CLI::Search, :cask do
|
|||||||
it "does not search the Tap name" do
|
it "does not search the Tap name" do
|
||||||
expect {
|
expect {
|
||||||
Hbc::CLI::Search.run("caskroom")
|
Hbc::CLI::Search.run("caskroom")
|
||||||
}.to output(<<-EOS.undent).to_stdout.as_tty
|
}.to output(<<~EOS).to_stdout.as_tty
|
||||||
No Cask found for "caskroom".
|
No Cask found for "caskroom".
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|||||||
@ -10,7 +10,7 @@ describe Hbc::CLI::Uninstall, :cask do
|
|||||||
|
|
||||||
Hbc::Installer.new(caffeine).install
|
Hbc::Installer.new(caffeine).install
|
||||||
|
|
||||||
output = Regexp.new <<-EOS.undent
|
output = Regexp.new <<~EOS
|
||||||
==> Uninstalling Cask local-caffeine
|
==> Uninstalling Cask local-caffeine
|
||||||
==> Removing App '.*Caffeine.app'.
|
==> Removing App '.*Caffeine.app'.
|
||||||
EOS
|
EOS
|
||||||
@ -107,7 +107,7 @@ describe Hbc::CLI::Uninstall, :cask do
|
|||||||
timestamped_versions.each do |timestamped_version|
|
timestamped_versions.each do |timestamped_version|
|
||||||
caskroom_path.join(".metadata", *timestamped_version, "Casks").tap(&:mkpath)
|
caskroom_path.join(".metadata", *timestamped_version, "Casks").tap(&:mkpath)
|
||||||
.join("#{token}.rb").open("w") do |caskfile|
|
.join("#{token}.rb").open("w") do |caskfile|
|
||||||
caskfile.puts <<-EOS.undent
|
caskfile.puts <<~EOS
|
||||||
cask '#{token}' do
|
cask '#{token}' do
|
||||||
version '#{timestamped_version[0]}'
|
version '#{timestamped_version[0]}'
|
||||||
end
|
end
|
||||||
@ -153,7 +153,7 @@ describe Hbc::CLI::Uninstall, :cask do
|
|||||||
|
|
||||||
saved_caskfile.dirname.mkpath
|
saved_caskfile.dirname.mkpath
|
||||||
|
|
||||||
IO.write saved_caskfile, <<-EOS.undent
|
IO.write saved_caskfile, <<~EOS
|
||||||
cask 'ive-been-renamed' do
|
cask 'ive-been-renamed' do
|
||||||
version :latest
|
version :latest
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user