diff options
| author | BrewTestBot | 2015-08-03 13:09:07 +0100 | 
|---|---|---|
| committer | Mike McQuaid | 2015-08-03 13:22:35 +0100 | 
| commit | 13d544e11e92ba8ea3788723432046f8dfe4adf9 (patch) | |
| tree | e6da18436d9ce956e6fbe80e3185c67cf3b58808 /Library | |
| parent | 3b68215be793774fafd9ce124a2065f5968f50e5 (diff) | |
| download | brew-13d544e11e92ba8ea3788723432046f8dfe4adf9.tar.bz2 | |
Core files style updates.
Closes Homebrew/homebrew#42354.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Diffstat (limited to 'Library')
184 files changed, 2948 insertions, 2750 deletions
diff --git a/Library/Contributions/example-formula.rb b/Library/Contributions/example-formula.rb index 435b6c58d..537b9c445 100644 --- a/Library/Contributions/example-formula.rb +++ b/Library/Contributions/example-formula.rb @@ -12,7 +12,7 @@ class ExampleFormula < Formula    desc "Example formula" # shows up in `brew info`, and can be searched with `brew search --desc`.    homepage "https://www.example.com" # used by `brew home example-formula`.    revision 1 # This is used when there's no new version but it needs recompiling for another reason. -             # 0 is default & unwritten. +  # 0 is default & unwritten.    # The URL of the archive. Prefer https (security and proxy issues):    url "https://packed.sources.and.we.prefer.https.example.com/archive-1.2.3.tar.bz2" @@ -72,7 +72,6 @@ class ExampleFormula < Formula      depends_on "pixman"    end -    ## Options    # Options can be used as arguments to `brew install`. @@ -120,7 +119,6 @@ class ExampleFormula < Formula    keg_only :provided_by_osx    keg_only "because I want it so" -    ## Dependencies    # The dependencies for this formula. Use strings for the names of other @@ -184,7 +182,6 @@ class ExampleFormula < Formula    # If this formula conflicts with another one:    conflicts_with "imagemagick", :because => "because this is just a stupid example" -    ## Failing with a certain compiler?    # If it is failing for certain compiler: @@ -208,7 +205,6 @@ class ExampleFormula < Formula      sha256 "c6bc3f48ce8e797854c4b865f6a8ff969867bbcaebd648ae6fd825683e59fef2"    end -    ## Patches    # External patches can be declared using resource-style blocks. @@ -399,7 +395,6 @@ class ExampleFormula < Formula      # `name` and `version` are accessible too, if you need them.    end -    ## Caveats    def caveats @@ -416,7 +411,6 @@ class ExampleFormula < Formula      s    end -    ## Test (is optional but makes us happy)    test do @@ -444,7 +438,6 @@ class ExampleFormula < Formula      # Failed assertions and failed `system` commands will raise exceptions.    end -    ## Plist handling    # Does your plist need to be loaded at startup? diff --git a/Library/ENV/4.3/cc b/Library/ENV/4.3/cc index 23e146d00..f388e00bf 100755 --- a/Library/ENV/4.3/cc +++ b/Library/ENV/4.3/cc @@ -1,8 +1,8 @@  #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0  $:.unshift Dir["/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/lib/ruby/{1.8,2.0.0}"].first -require 'pathname' -require 'set' +require "pathname" +require "set"  class Cmd    attr_reader :config, :prefix, :cellar, :tmpdir, :sysroot @@ -12,24 +12,24 @@ class Cmd      @arg0 = arg0      @args = args.freeze      @config = ENV.fetch("HOMEBREW_CCCFG") { "" } -    @prefix = ENV['HOMEBREW_PREFIX'] -    @cellar = ENV['HOMEBREW_CELLAR'] -    @tmpdir = ENV['HOMEBREW_TEMP'] -    @sysroot = ENV['HOMEBREW_SDKROOT'] +    @prefix = ENV["HOMEBREW_PREFIX"] +    @cellar = ENV["HOMEBREW_CELLAR"] +    @tmpdir = ENV["HOMEBREW_TEMP"] +    @sysroot = ENV["HOMEBREW_SDKROOT"]      @archflags = ENV.fetch("HOMEBREW_ARCHFLAGS") { "" }.split(" ")      @optflags = ENV.fetch("HOMEBREW_OPTFLAGS") { "" }.split(" ")    end    def mode -    if @arg0 == 'cpp' or @arg0 == 'ld' +    if @arg0 == "cpp" or @arg0 == "ld"        @arg0.to_sym -    elsif @args.include? '-c' +    elsif @args.include? "-c"        if @arg0 =~ /(?:c|g|clang)\+\+/          :cxx        else          :cc        end -    elsif @args.include? '-E' +    elsif @args.include? "-E"        :ccE      else        if @arg0 =~ /(?:c|g|clang)\+\+/ @@ -42,26 +42,26 @@ class Cmd    def tool      @tool ||= case @arg0 -    when 'ld' then 'ld' -    when 'cpp' then 'cpp' +    when "ld" then "ld" +    when "cpp" then "cpp"      when /\w\+\+(-\d(\.\d)?)?$/ -      case ENV['HOMEBREW_CC'] +      case ENV["HOMEBREW_CC"]        when /clang/ -        'clang++' +        "clang++"        when /llvm-gcc/ -        'llvm-g++-4.2' +        "llvm-g++-4.2"        when /gcc(-\d(\.\d)?)?$/ -        'g++' + $1.to_s +        "g++" + $1.to_s        end      else        # Note that this is a universal fallback, so that we'll always invoke        # HOMEBREW_CC regardless of what name under which the tool was invoked. -      ENV['HOMEBREW_CC'] +      ENV["HOMEBREW_CC"]      end    end    def args -    if @args.length == 1 and @args[0] == '-v' +    if @args.length == 1 and @args[0] == "-v"        # Don't add linker arguments if -v passed as sole option. This stops gcc        # -v with no other arguments from outputting a linker error. Some        # software uses gcc -v (wrongly) to sniff the GCC version. @@ -135,34 +135,34 @@ class Cmd      args = []      case arg -    when /^-g\d?/, /^-gstabs\d+/, '-gstabs+', /^-ggdb\d?/, '-gdwarf-2', +    when /^-g\d?/, /^-gstabs\d+/, "-gstabs+", /^-ggdb\d?/, "-gdwarf-2",        /^-march=.+/, /^-mtune=.+/, /^-mcpu=.+/, -      /^-O[0-9zs]?$/, '-fast', '-no-cpp-precomp', -      '-pedantic', '-pedantic-errors', '-Wno-long-double', -      '-Wno-unused-but-set-variable' -    when '-fopenmp', '-lgomp', '-mno-fused-madd', '-fforce-addr', '-fno-defer-pop', -      '-mno-dynamic-no-pic', '-fearly-inlining', /^-f(?:no-)?inline-functions-called-once/, -      /^-finline-limit/, /^-f(?:no-)?check-new/, '-fno-delete-null-pointer-checks', -      '-fcaller-saves', '-fthread-jumps', '-fno-reorder-blocks', '-fcse-skip-blocks', -      '-frerun-cse-after-loop', '-frerun-loop-opt', '-fcse-follow-jumps', -      '-fno-regmove', '-fno-for-scope', '-fno-tree-pre', '-fno-tree-dominator-opts', -      '-fuse-linker-plugin' +      /^-O[0-9zs]?$/, "-fast", "-no-cpp-precomp", +      "-pedantic", "-pedantic-errors", "-Wno-long-double", +      "-Wno-unused-but-set-variable" +    when "-fopenmp", "-lgomp", "-mno-fused-madd", "-fforce-addr", "-fno-defer-pop", +      "-mno-dynamic-no-pic", "-fearly-inlining", /^-f(?:no-)?inline-functions-called-once/, +      /^-finline-limit/, /^-f(?:no-)?check-new/, "-fno-delete-null-pointer-checks", +      "-fcaller-saves", "-fthread-jumps", "-fno-reorder-blocks", "-fcse-skip-blocks", +      "-frerun-cse-after-loop", "-frerun-loop-opt", "-fcse-follow-jumps", +      "-fno-regmove", "-fno-for-scope", "-fno-tree-pre", "-fno-tree-dominator-opts", +      "-fuse-linker-plugin"        # clang doesn't support these flags -      args << arg if not tool =~ /^clang/ +      args << arg unless tool =~ /^clang/      when /^-W[alp],/, /^-Wno-/        args << arg      when /^-W.*/        # prune warnings -    when '-macosx_version_min', '-dylib_install_name' +    when "-macosx_version_min", "-dylib_install_name"        args << "-Wl,#{arg},#{enum.next}" -    when '-multiply_definedsuppress' +    when "-multiply_definedsuppress"        args << "-Wl,-multiply_defined,suppress" -    when '-undefineddynamic_lookup' +    when "-undefineddynamic_lookup"        args << "-Wl,-undefined,dynamic_lookup"      when /^-isysroot/, /^--sysroot/        # We set the sysroot        enum.next -    when '-dylib' +    when "-dylib"        args << "-Wl,#{arg}"      when /^-I(.+)?/        # Support both "-Ifoo" (one argument) and "-I foo" (two arguments) @@ -180,7 +180,7 @@ class Cmd      args    end -  def keep? path +  def keep?(path)      path.start_with?(prefix, cellar, tmpdir) || !path.start_with?("/opt", "/sw", "/usr/X11")    end @@ -189,8 +189,8 @@ class Cmd      return args unless refurbish_args? || configure? -    args << '-pipe' -    args << '-w' unless configure? +    args << "-pipe" +    args << "-w" unless configure?      args << "-#{ENV["HOMEBREW_OPTIMIZATION_LEVEL"]}"      args.concat(optflags)      args.concat(archflags) @@ -234,12 +234,12 @@ class Cmd    end    def system_library_paths -    %W{#{sysroot}/usr/lib /usr/local/lib} +    %W[#{sysroot}/usr/lib /usr/local/lib]    end    def configure?      # configure scripts generated with autoconf 2.61 or later export as_nl -    ENV.key? 'as_nl' +    ENV.key? "as_nl"    end    def refurbish_args? @@ -300,11 +300,11 @@ end  if __FILE__ == $PROGRAM_NAME    ##################################################################### sanity -  abort "The build-tool has reset ENV. --env=std required." unless ENV['HOMEBREW_BREW_FILE'] +  abort "The build-tool has reset ENV. --env=std required." unless ENV["HOMEBREW_BREW_FILE"]    if (cc = ENV["HOMEBREW_CC"]).nil? || cc.empty? || cc == "cc"      # those values are not allowed -    ENV['HOMEBREW_CC'] = 'clang' +    ENV["HOMEBREW_CC"] = "clang"    end    ####################################################################### main @@ -312,7 +312,8 @@ if __FILE__ == $PROGRAM_NAME    dirname, basename = File.split($0)    cmd = Cmd.new(basename, ARGV) -  tool, args = cmd.tool, cmd.args +  tool = cmd.tool +  args = cmd.args    log(basename, ARGV, tool, args) diff --git a/Library/ENV/scm/git b/Library/ENV/scm/git index 4316436e6..06a04b7f1 100755 --- a/Library/ENV/scm/git +++ b/Library/ENV/scm/git @@ -5,7 +5,7 @@  F = File.basename(__FILE__).freeze  D = File.expand_path(File.dirname(__FILE__)).freeze -def exec *args +def exec(*args)    # prevent fork-bombs    arg0 = args.first    return if arg0 =~ /^#{F}/i || File.expand_path(arg0) == File.expand_path(__FILE__) @@ -13,9 +13,9 @@ def exec *args  end  case F.downcase -  when 'git' then %W{HOMEBREW_GIT GIT} -  when 'svn' then %W{HOMEBREW_SVN} -  else [] +when "git" then %W[HOMEBREW_GIT GIT] +when "svn" then %W[HOMEBREW_SVN] +else []  end.each do |key|    exec ENV[key], *ARGV if ENV[key] and File.executable? ENV[key]  end diff --git a/Library/Homebrew/blacklist.rb b/Library/Homebrew/blacklist.rb index cbbe976df..3d88535fb 100644 --- a/Library/Homebrew/blacklist.rb +++ b/Library/Homebrew/blacklist.rb @@ -1,29 +1,29 @@ -def blacklisted? name +def blacklisted?(name)    case name.downcase -  when 'gem', /^rubygems?$/ then <<-EOS.undent +  when "gem", /^rubygems?$/ then <<-EOS.undent      Homebrew provides gem via: `brew install ruby`.      EOS -  when 'tex', 'tex-live', 'texlive', 'latex' then <<-EOS.undent +  when "tex", "tex-live", "texlive", "latex" then <<-EOS.undent      Installing TeX from source is weird and gross, requires a lot of patches,      and only builds 32-bit (and thus can't use Homebrew deps on Snow Leopard.)      We recommend using a MacTeX distribution: https://www.tug.org/mactex/      EOS -  when 'pip' then <<-EOS.undent +  when "pip" then <<-EOS.undent      Homebrew provides pip via: `brew install python`. However you will then      have two Pythons installed on your Mac, so alternatively you can:          sudo easy_install pip      EOS -  when 'pil' then <<-EOS.undent +  when "pil" then <<-EOS.undent      Instead of PIL, consider `pip install pillow` or `brew install Homebrew/python/pillow`.      EOS -  when 'macruby' then <<-EOS.undent +  when "macruby" then <<-EOS.undent      MacRuby works better when you install their package:        http://www.macruby.org/      EOS    when /(lib)?lzma/      "lzma is now part of the xz formula." -  when 'xcode' +  when "xcode"      if MacOS.version >= :lion        <<-EOS.undent        Xcode can be installed from the App Store. @@ -33,22 +33,22 @@ def blacklisted? name        Xcode can be installed from https://developer.apple.com/xcode/downloads/        EOS      end -  when 'gtest', 'googletest', 'google-test' then <<-EOS.undent +  when "gtest", "googletest", "google-test" then <<-EOS.undent      Installing gtest system-wide is not recommended; it should be vendored      in your projects that use it.      EOS -  when 'gmock', 'googlemock', 'google-mock' then <<-EOS.undent +  when "gmock", "googlemock", "google-mock" then <<-EOS.undent      Installing gmock system-wide is not recommended; it should be vendored      in your projects that use it.      EOS -  when 'sshpass' then <<-EOS.undent +  when "sshpass" then <<-EOS.undent      We won't add sshpass because it makes it too easy for novice SSH users to      ruin SSH's security.      EOS -  when 'gsutil' then <<-EOS.undent +  when "gsutil" then <<-EOS.undent      Install gsutil with `pip install gsutil`      EOS -  when 'clojure' then <<-EOS.undent +  when "clojure" then <<-EOS.undent      Clojure isn't really a program but a library managed as part of a      project and Leiningen is the user interface to that library. @@ -57,15 +57,15 @@ def blacklisted? name      and then follow the tutorial:        https://github.com/technomancy/leiningen/blob/stable/doc/TUTORIAL.md      EOS -  when 'osmium' then <<-EOS.undent +  when "osmium" then <<-EOS.undent      The creator of Osmium requests that it not be packaged and that people      use the GitHub master branch instead.      EOS -  when 'gfortran' then <<-EOS.undent +  when "gfortran" then <<-EOS.undent      GNU Fortran is now provided as part of GCC, and can be installed with:        brew install gcc      EOS -  when 'play' then <<-EOS.undent +  when "play" then <<-EOS.undent      Play 2.3 replaces the play command with activator:        brew install typesafe-activator @@ -73,7 +73,7 @@ def blacklisted? name        https://www.playframework.com/documentation/2.3.x/Migration23        https://www.playframework.com/documentation/2.3.x/Highlights23      EOS -  when 'haskell-platform' then <<-EOS.undent +  when "haskell-platform" then <<-EOS.undent      We no longer package haskell-platform. Consider installing ghc      and cabal-install instead:        brew install ghc cabal-install diff --git a/Library/Homebrew/bottles.rb b/Library/Homebrew/bottles.rb index fda54d591..5b0073d3b 100644 --- a/Library/Homebrew/bottles.rb +++ b/Library/Homebrew/bottles.rb @@ -1,14 +1,14 @@ -require 'tab' -require 'os/mac' -require 'extend/ARGV' +require "tab" +require "os/mac" +require "extend/ARGV" -def built_as_bottle? f +def built_as_bottle?(f)    return false unless f.installed?    tab = Tab.for_keg(f.installed_prefix)    tab.built_as_bottle  end -def bottle_file_outdated? f, file +def bottle_file_outdated?(f, file)    filename = file.basename.to_s    return unless f.bottle && filename.match(Pathname::BOTTLE_EXTNAME_RX) @@ -38,11 +38,11 @@ def bottle_tag    end  end -def bottle_receipt_path bottle_file +def bottle_receipt_path(bottle_file)    Utils.popen_read("tar", "-tzf", bottle_file, "*/*/INSTALL_RECEIPT.json").chomp  end -def bottle_resolve_formula_names bottle_file +def bottle_resolve_formula_names(bottle_file)    receipt_file_path = bottle_receipt_path bottle_file    receipt_file = Utils.popen_read("tar", "-xOzf", bottle_file, receipt_file_path)    name = receipt_file_path.split("/").first @@ -57,7 +57,7 @@ def bottle_resolve_formula_names bottle_file    [name, full_name]  end -def bottle_resolve_version bottle_file +def bottle_resolve_version(bottle_file)    PkgVersion.parse bottle_receipt_path(bottle_file).split("/")[1]  end @@ -66,7 +66,7 @@ class Bintray      formula_name.to_s.gsub "+", "x"    end -  def self.repository(tap=nil) +  def self.repository(tap = nil)      return "bottles" if tap.nil? || tap == "Homebrew/homebrew"      "bottles-#{tap.sub(/^homebrew\/(homebrew-)?/i, "")}"    end diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index 42c3e16f4..8442801a7 100644 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -81,7 +81,7 @@ class Build      if superenv?        ENV.keg_only_deps = keg_only_deps        ENV.deps = deps.map(&:to_formula) -      ENV.x11 = reqs.any? { |rq| rq.kind_of?(X11Requirement) } +      ENV.x11 = reqs.any? { |rq| rq.is_a?(X11Requirement) }        ENV.setup_build_environment(formula)        post_superenv_hacks        reqs.each(&:modify_build_environment) @@ -148,12 +148,12 @@ class Build      keg.detect_cxx_stdlibs(:skip_executables => true)    end -  def fixopt f -    path = if f.linked_keg.directory? and f.linked_keg.symlink? +  def fixopt(f) +    path = if f.linked_keg.directory? && f.linked_keg.symlink?        f.linked_keg.resolved_path      elsif f.prefix.directory?        f.prefix -    elsif (kids = f.rack.children).size == 1 and kids.first.directory? +    elsif (kids = f.rack.children).size == 1 && kids.first.directory?        kids.first      else        raise diff --git a/Library/Homebrew/build_environment.rb b/Library/Homebrew/build_environment.rb index 86a7fef50..701cd414e 100644 --- a/Library/Homebrew/build_environment.rb +++ b/Library/Homebrew/build_environment.rb @@ -1,4 +1,4 @@ -require 'set' +require "set"  class BuildEnvironment    def initialize(*settings) diff --git a/Library/Homebrew/build_options.rb b/Library/Homebrew/build_options.rb index 64ca93173..05f8507de 100644 --- a/Library/Homebrew/build_options.rb +++ b/Library/Homebrew/build_options.rb @@ -4,24 +4,24 @@ class BuildOptions      @options = options    end -  def include? name +  def include?(name)      @args.include?("--#{name}")    end -  def with? val +  def with?(val)      name = val.respond_to?(:option_name) ? val.option_name : val      if option_defined? "with-#{name}"        include? "with-#{name}"      elsif option_defined? "without-#{name}" -      not include? "without-#{name}" +      !include? "without-#{name}"      else        false      end    end -  def without? name -    not with? name +  def without?(name) +    !with? name    end    def bottle? @@ -37,7 +37,7 @@ class BuildOptions    end    def stable? -    not (head? or devel?) +    !(head? || devel?)    end    # True if the user requested a universal build. @@ -67,7 +67,7 @@ class BuildOptions    private -  def option_defined? name +  def option_defined?(name)      @options.include? name    end  end diff --git a/Library/Homebrew/caveats.rb b/Library/Homebrew/caveats.rb index 53cdd155c..59e15ebbc 100644 --- a/Library/Homebrew/caveats.rb +++ b/Library/Homebrew/caveats.rb @@ -36,8 +36,8 @@ class Caveats      return unless f.keg_only?      s = "This formula is keg-only, which means it was not symlinked into #{HOMEBREW_PREFIX}." -    s << "\n\n#{f.keg_only_reason.to_s}" -    if f.lib.directory? or f.include.directory? +    s << "\n\n#{f.keg_only_reason}" +    if f.lib.directory? || f.include.directory?        s <<          <<-EOS.undent_________________________________________________________72 @@ -54,7 +54,7 @@ class Caveats    end    def bash_completion_caveats -    if keg and keg.completion_installed? :bash then <<-EOS.undent +    if keg && keg.completion_installed?(:bash) then <<-EOS.undent        Bash completion has been installed to:          #{HOMEBREW_PREFIX}/etc/bash_completion.d        EOS @@ -62,7 +62,7 @@ class Caveats    end    def zsh_completion_caveats -    if keg and keg.completion_installed? :zsh then <<-EOS.undent +    if keg && keg.completion_installed?(:zsh) then <<-EOS.undent        zsh completion has been installed to:          #{HOMEBREW_PREFIX}/share/zsh/site-functions        EOS @@ -70,7 +70,7 @@ class Caveats    end    def fish_completion_caveats -    if keg and keg.completion_installed? :fish and which("fish") then <<-EOS.undent +    if keg && keg.completion_installed?(:fish) && which("fish") then <<-EOS.undent        fish completion has been installed to:          #{HOMEBREW_PREFIX}/share/fish/vendor_completions.d        EOS @@ -125,7 +125,7 @@ class Caveats    end    def app_caveats -    if keg and keg.app_installed? +    if keg && keg.app_installed?        <<-EOS.undent          .app bundles were installed.          Run `brew linkapps #{keg.name}` to symlink these to /Applications. @@ -148,9 +148,9 @@ class Caveats    def plist_caveats      s = [] -    if f.plist or (keg and keg.plist_installed?) -      destination = f.plist_startup ? '/Library/LaunchDaemons' \ -                                    : '~/Library/LaunchAgents' +    if f.plist || (keg && keg.plist_installed?) +      destination = f.plist_startup ? "/Library/LaunchDaemons" \ +                                    : "~/Library/LaunchAgents"        plist_filename = if f.plist          f.plist_path.basename @@ -158,7 +158,7 @@ class Caveats          File.basename Dir["#{keg}/*.plist"].first        end        plist_link = "#{destination}/#{plist_filename}" -      plist_domain = f.plist_path.basename('.plist') +      plist_domain = f.plist_path.basename(".plist")        destination_path = Pathname.new File.expand_path destination        plist_path = destination_path/plist_filename diff --git a/Library/Homebrew/cleaner.rb b/Library/Homebrew/cleaner.rb index 02ff9c5cd..dae9dbc6c 100644 --- a/Library/Homebrew/cleaner.rb +++ b/Library/Homebrew/cleaner.rb @@ -5,9 +5,8 @@  # * sets permissions on executables  # * removes unresolved symlinks  class Cleaner -    # Create a cleaner for the given formula -  def initialize f +  def initialize(f)      @f = f    end @@ -17,13 +16,13 @@ class Cleaner      # Many formulae include 'lib/charset.alias', but it is not strictly needed      # and will conflict if more than one formula provides it -    observe_file_removal @f.lib/'charset.alias' +    observe_file_removal @f.lib/"charset.alias" -    [@f.bin, @f.sbin, @f.lib].select{ |d| d.exist? }.each{ |d| clean_dir d } +    [@f.bin, @f.sbin, @f.lib].select(&:exist?).each { |d| clean_dir d }      # Get rid of any info 'dir' files, so they don't conflict at the link stage -    info_dir_file = @f.info + 'dir' -    if info_dir_file.file? and not @f.skip_clean? info_dir_file +    info_dir_file = @f.info + "dir" +    if info_dir_file.file? and !@f.skip_clean? info_dir_file        observe_file_removal info_dir_file      end @@ -32,7 +31,7 @@ class Cleaner    private -  def observe_file_removal path +  def observe_file_removal(path)      path.extend(ObserverPathnameExtension).unlink if path.exist?    end @@ -43,7 +42,7 @@ class Cleaner      dirs = []      symlinks = []      @f.prefix.find do |path| -      if path == @f.libexec or @f.skip_clean?(path) +      if path == @f.libexec || @f.skip_clean?(path)          Find.prune        elsif path.symlink?          symlinks << path @@ -76,23 +75,23 @@ class Cleaner    #    # lib may have a large directory tree (see Erlang for instance), and    # clean_dir applies cleaning rules to the entire tree -  def clean_dir d +  def clean_dir(d)      d.find do |path|        path.extend(ObserverPathnameExtension)        Find.prune if @f.skip_clean? path -      if path.symlink? or path.directory? +      if path.symlink? || path.directory?          next -      elsif path.extname == '.la' +      elsif path.extname == ".la"          path.unlink        else          # Set permissions for executables and non-executables          perms = if path.mach_o_executable? || path.text_executable? -                  0555 -                else -                  0444 -                end +          0555 +        else +          0444 +        end          if ARGV.debug?            old_perms = path.stat.mode & 0777            if perms != old_perms @@ -103,5 +102,4 @@ class Cleaner        end      end    end -  end diff --git a/Library/Homebrew/cmd/--env.rb b/Library/Homebrew/cmd/--env.rb index fb6163d81..eba497253 100644 --- a/Library/Homebrew/cmd/--env.rb +++ b/Library/Homebrew/cmd/--env.rb @@ -16,7 +16,7 @@ module Homebrew      end    end -  def build_env_keys env +  def build_env_keys(env)      %w[        CC CXX LD OBJC OBJCXX        HOMEBREW_CC HOMEBREW_CXX @@ -30,7 +30,7 @@ module Homebrew        ACLOCAL_PATH PATH CPATH].select { |key| env.key?(key) }    end -  def dump_build_env env, f=$stdout +  def dump_build_env(env, f = $stdout)      keys = build_env_keys(env)      keys -= %w[CC CXX OBJC OBJCXX] if env["CC"] == env["HOMEBREW_CC"] diff --git a/Library/Homebrew/cmd/--prefix.rb b/Library/Homebrew/cmd/--prefix.rb index 535a7b422..a822f2646 100644 --- a/Library/Homebrew/cmd/--prefix.rb +++ b/Library/Homebrew/cmd/--prefix.rb @@ -3,7 +3,7 @@ module Homebrew      if ARGV.named.empty?        puts HOMEBREW_PREFIX      else -      puts ARGV.resolved_formulae.map{ |f| f.opt_prefix.exist? ? f.opt_prefix : f.installed_prefix } +      puts ARGV.resolved_formulae.map { |f| f.opt_prefix.exist? ? f.opt_prefix : f.installed_prefix }      end    end  end diff --git a/Library/Homebrew/cmd/aspell-dictionaries.rb b/Library/Homebrew/cmd/aspell-dictionaries.rb index 8e9197bda..f610ecfbd 100644 --- a/Library/Homebrew/cmd/aspell-dictionaries.rb +++ b/Library/Homebrew/cmd/aspell-dictionaries.rb @@ -1,6 +1,6 @@ -require 'open-uri' -require 'resource' -require 'formula' +require "open-uri" +require "resource" +require "formula"  module Homebrew    def aspell_dictionaries @@ -14,7 +14,8 @@ module Homebrew          next unless /^<tr><td><a/ === line          fields = line.split('"') -        lang, path = fields[1], fields[3] +        lang = fields[1] +        path = fields[3]          lang.gsub!("-", "_")          languages[lang] = path        end diff --git a/Library/Homebrew/cmd/audit.rb b/Library/Homebrew/cmd/audit.rb index 9e70b73d4..c9db7f93c 100644 --- a/Library/Homebrew/cmd/audit.rb +++ b/Library/Homebrew/cmd/audit.rb @@ -41,7 +41,7 @@ module Homebrew        end        $times = {} -      at_exit { puts $times.sort_by{ |k, v| v }.map{ |k, v| "#{k}: #{v}" } } +      at_exit { puts $times.sort_by { |_k, v| v }.map { |k, v| "#{k}: #{v}" } }      end      ff = if ARGV.named.empty? @@ -78,7 +78,7 @@ module Homebrew  end  class FormulaText -  def initialize path +  def initialize(path)      @text = path.open("rb", &:read)      @lines = @text.lines.to_a    end @@ -99,11 +99,11 @@ class FormulaText      /\Z\n/ =~ @text    end -  def =~ regex +  def =~(regex)      regex =~ @text    end -  def line_number regex +  def line_number(regex)      index = @lines.index { |line| line =~ regex }      index ? index + 1 : nil    end @@ -131,13 +131,13 @@ class FormulaAuditor    FILEUTILS_METHODS = FileUtils.singleton_methods(false).join "|" -  def initialize(formula, options={}) +  def initialize(formula, options = {})      @formula = formula      @strict = !!options[:strict]      @online = !!options[:online]      @problems = []      @text = FormulaText.new(formula.path) -    @specs = %w{stable devel head}.map { |s| formula.send(s) }.compact +    @specs = %w[stable devel head].map { |s| formula.send(s) }.compact    end    def audit_file @@ -145,11 +145,11 @@ class FormulaAuditor        problem "Incorrect file permissions: chmod 644 #{formula.path}"      end -    if text.has_DATA? and not text.has_END? +    if text.has_DATA? && !text.has_END?        problem "'DATA' was found, but no '__END__'"      end -    if text.has_END? and not text.has_DATA? +    if text.has_END? && !text.has_DATA?        problem "'__END__' was found, but 'DATA' is not used"      end @@ -160,22 +160,22 @@ class FormulaAuditor      return unless @strict      component_list = [ -      [/^  desc ["'][\S\ ]+["']/,          "desc"          ], -      [/^  homepage ["'][\S\ ]+["']/,      "homepage"      ], -      [/^  url ["'][\S\ ]+["']/,           "url"           ], -      [/^  mirror ["'][\S\ ]+["']/,        "mirror"        ], -      [/^  version ["'][\S\ ]+["']/,       "version"       ], -      [/^  (sha1|sha256) ["'][\S\ ]+["']/, "checksum"      ], -      [/^  head ["'][\S\ ]+["']/,          "head"          ], -      [/^  stable do/,                     "stable block"  ], -      [/^  bottle do/,                     "bottle block"  ], -      [/^  devel do/,                      "devel block"   ], -      [/^  head do/,                       "head block"    ], -      [/^  option/,                        "option"        ], -      [/^  depends_on/,                    "depends_on"    ], +      [/^  desc ["'][\S\ ]+["']/,          "desc"], +      [/^  homepage ["'][\S\ ]+["']/,      "homepage"], +      [/^  url ["'][\S\ ]+["']/,           "url"], +      [/^  mirror ["'][\S\ ]+["']/,        "mirror"], +      [/^  version ["'][\S\ ]+["']/,       "version"], +      [/^  (sha1|sha256) ["'][\S\ ]+["']/, "checksum"], +      [/^  head ["'][\S\ ]+["']/,          "head"], +      [/^  stable do/,                     "stable block"], +      [/^  bottle do/,                     "bottle block"], +      [/^  devel do/,                      "devel block"], +      [/^  head do/,                       "head block"], +      [/^  option/,                        "option"], +      [/^  depends_on/,                    "depends_on"],        [/^  def install/,                   "install method"],        [/^  def caveats/,                   "caveats method"], -      [/^  test do/,                       "test block"    ], +      [/^  test do/,                       "test block"]      ]      component_list.map do |regex, name| @@ -289,7 +289,7 @@ class FormulaAuditor          case dep.name          when *BUILD_TIME_DEPS -          next if dep.build? or dep.run? +          next if dep.build? || dep.run?            problem <<-EOS.undent              #{dep} dependency should be                depends_on "#{dep}" => :build @@ -346,7 +346,7 @@ class FormulaAuditor      desc = formula.desc -    unless desc and desc.length > 0 +    unless desc && desc.length > 0        problem "Formula should have a desc (Description)."        return      end @@ -360,11 +360,11 @@ class FormulaAuditor        EOS      end -    if desc =~ %r[[Cc]ommandline] +    if desc =~ /[Cc]ommandline/        problem "It should be \"command-line\", not \"commandline\"."      end -    if desc =~ %r[[Cc]ommand line] +    if desc =~ /[Cc]ommand line/        problem "It should be \"command-line\", not \"command line\"."      end    end @@ -372,19 +372,19 @@ class FormulaAuditor    def audit_homepage      homepage = formula.homepage -    unless homepage =~ %r[^https?://] +    unless homepage =~ %r{^https?://}        problem "The homepage should start with http or https (URL is #{homepage})."      end      # Check for http:// GitHub homepage urls, https:// is preferred.      # Note: only check homepages that are repo pages, not *.github.com hosts -    if homepage =~ %r[^http://github\.com/] +    if homepage =~ %r{^http://github\.com/}        problem "Please use https:// for #{homepage}"      end      # Savannah has full SSL/TLS support but no auto-redirect.      # Doesn't apply to the download URLs, only the homepage. -    if homepage =~ %r[^http://savannah\.nongnu\.org/] +    if homepage =~ %r{^http://savannah\.nongnu\.org/}        problem "Please use https:// for #{homepage}"      end @@ -392,7 +392,7 @@ class FormulaAuditor      # To enable https Freedesktop change the URL from http://project.freedesktop.org/wiki to      # https://wiki.freedesktop.org/project_name.      # "Software" is redirected to https://wiki.freedesktop.org/www/Software/project_name -    if homepage =~ %r[^http://((?:www|nice|libopenraw|liboil|telepathy|xorg)\.)?freedesktop\.org/(?:wiki/)?] +    if homepage =~ %r{^http://((?:www|nice|libopenraw|liboil|telepathy|xorg)\.)?freedesktop\.org/(?:wiki/)?}        if homepage =~ /Software/          problem "#{homepage} should be styled `https://wiki.freedesktop.org/www/Software/project_name`"        else @@ -401,34 +401,34 @@ class FormulaAuditor      end      # Google Code homepages should end in a slash -    if homepage =~ %r[^https?://code\.google\.com/p/[^/]+[^/]$] +    if homepage =~ %r{^https?://code\.google\.com/p/[^/]+[^/]$}        problem "#{homepage} should end with a slash"      end      # People will run into mixed content sometimes, but we should enforce and then add      # exemptions as they are discovered. Treat mixed content on homepages as a bug.      # Justify each exemptions with a code comment so we can keep track here. -    if homepage =~ %r[^http://[^/]*github\.io/] +    if homepage =~ %r{^http://[^/]*github\.io/}        problem "Please use https:// for #{homepage}"      end      # There's an auto-redirect here, but this mistake is incredibly common too.      # Only applies to the homepage and subdomains for now, not the FTP URLs. -    if homepage =~ %r[^http://((?:build|cloud|developer|download|extensions|git|glade|help|library|live|nagios|news|people|projects|rt|static|wiki|www)\.)?gnome\.org] +    if homepage =~ %r{^http://((?:build|cloud|developer|download|extensions|git|glade|help|library|live|nagios|news|people|projects|rt|static|wiki|www)\.)?gnome\.org}        problem "Please use https:// for #{homepage}"      end      # Compact the above into this list as we're able to remove detailed notations, etc over time.      case homepage -    when %r[^http://[^/]*\.apache\.org], -         %r[^http://packages\.debian\.org], -         %r[^http://wiki\.freedesktop\.org/], -         %r[^http://((?:www)\.)?gnupg.org/], -         %r[^http://ietf\.org], -         %r[^http://[^/.]+\.ietf\.org], -         %r[^http://[^/.]+\.tools\.ietf\.org], -         %r[^http://www\.gnu\.org/], -         %r[^http://code\.google\.com/] +    when %r{^http://[^/]*\.apache\.org}, +         %r{^http://packages\.debian\.org}, +         %r{^http://wiki\.freedesktop\.org/}, +         %r{^http://((?:www)\.)?gnupg.org/}, +         %r{^http://ietf\.org}, +         %r{^http://[^/.]+\.ietf\.org}, +         %r{^http://[^/.]+\.tools\.ietf\.org}, +         %r{^http://www\.gnu\.org/}, +         %r{^http://code\.google\.com/}        problem "Please use https:// for #{homepage}"      end @@ -462,7 +462,7 @@ class FormulaAuditor        problem "GitHub repository not notable enough (<10 forks, <10 watchers and <20 stars)"      end -    if (Date.parse(metadata["created_at"]) > (Date.today - 30)) +    if Date.parse(metadata["created_at"]) > (Date.today - 30)        problem "GitHub repository too new (<30 days old)"      end    end @@ -530,16 +530,16 @@ class FormulaAuditor    def audit_patch(patch)      case patch.url -    when %r[raw\.github\.com], %r[gist\.github\.com/raw], %r[gist\.github\.com/.+/raw], -      %r[gist\.githubusercontent\.com/.+/raw] +    when /raw\.github\.com/, %r{gist\.github\.com/raw}, %r{gist\.github\.com/.+/raw}, +      %r{gist\.githubusercontent\.com/.+/raw}        unless patch.url =~ /[a-fA-F0-9]{40}/          problem "GitHub/Gist patches should specify a revision:\n#{patch.url}"        end -    when %r[macports/trunk] +    when %r{macports/trunk}        problem "MacPorts patches should specify a revision instead of trunk:\n#{patch.url}" -    when %r[^http://trac\.macports\.org] +    when %r{^http://trac\.macports\.org}        problem "Patches from MacPorts Trac should be https://, not http:\n#{patch.url}" -    when %r[^http://bugs\.debian\.org] +    when %r{^http://bugs\.debian\.org}        problem "Patches from Debian should be https://, not http:\n#{patch.url}"      end    end @@ -550,11 +550,11 @@ class FormulaAuditor      end      if text =~ /system\s+['"]xcodebuild/ -      problem %{use "xcodebuild *args" instead of "system 'xcodebuild', *args"} +      problem %(use "xcodebuild *args" instead of "system 'xcodebuild', *args")      end      if text =~ /xcodebuild[ (]["'*]/ && text !~ /SYMROOT=/ -      problem %{xcodebuild should be passed an explicit "SYMROOT"} +      problem %(xcodebuild should be passed an explicit "SYMROOT")      end      if text =~ /Formula\.factory\(/ @@ -635,7 +635,7 @@ class FormulaAuditor        problem "\"(#{$1}...#{$2})\" should be \"(#{$3.downcase}+...)\""      end -    if line =~ %r[((man)\s*\+\s*(['"])(man[1-8])(['"]))] +    if line =~ /((man)\s*\+\s*(['"])(man[1-8])(['"]))/        problem "\"#{$1}\" should be \"#{$4}\""      end @@ -656,7 +656,7 @@ class FormulaAuditor        problem "\"#{$1}\" should be \"\#{#{$2}}\""      end -    if line =~ %r[depends_on :(automake|autoconf|libtool)] +    if line =~ /depends_on :(automake|autoconf|libtool)/        problem ":#{$1} is deprecated. Usage should be \"#{$1}\""      end @@ -751,13 +751,13 @@ class FormulaAuditor        problem "Use MacOS.version instead of MACOS_VERSION"      end -    cats = %w{leopard snow_leopard lion mountain_lion}.join("|") +    cats = %w[leopard snow_leopard lion mountain_lion].join("|")      if line =~ /MacOS\.(?:#{cats})\?/        problem "\"#{$&}\" is deprecated, use a comparison to MacOS.version instead"      end      if line =~ /skip_clean\s+:all/ -      problem "`skip_clean :all` is deprecated; brew no longer strips symbols\n" + +      problem "`skip_clean :all` is deprecated; brew no longer strips symbols\n" \                "\tPass explicit paths to prevent Homebrew from removing empty folders."      end @@ -827,7 +827,7 @@ class FormulaAuditor      return unless @strict      return unless formula.core_formula? -    if TAP_MIGRATIONS.has_key?(formula.name) +    if TAP_MIGRATIONS.key?(formula.name)        problem <<-EOS.undent         #{formula.name} seems to be listed in tap_migrations.rb!         Please remove #{formula.name} from present tap & tap_migrations.rb @@ -860,9 +860,9 @@ class FormulaAuditor      case condition      when /if build\.include\? ['"]with-#{dep}['"]$/, /if build\.with\? ['"]#{dep}['"]$/ -      problem %{Replace #{line.inspect} with "depends_on #{quoted_dep} => :optional"} +      problem %(Replace #{line.inspect} with "depends_on #{quoted_dep} => :optional")      when /unless build\.include\? ['"]without-#{dep}['"]$/, /unless build\.without\? ['"]#{dep}['"]$/ -      problem %{Replace #{line.inspect} with "depends_on #{quoted_dep} => :recommended"} +      problem %(Replace #{line.inspect} with "depends_on #{quoted_dep} => :recommended")      end    end @@ -896,7 +896,7 @@ class FormulaAuditor    private -  def problem p +  def problem(p)      @problems << p    end @@ -937,7 +937,7 @@ class ResourceAuditor        problem "missing version"      elsif version.to_s.empty?        problem "version is set to an empty string" -    elsif not version.detected_from_url? +    elsif !version.detected_from_url?        version_text = version        version_url = Version.detect(url, specs)        if version_url.to_s == version_text.to_s && version.instance_of?(Version) @@ -977,7 +977,7 @@ class ResourceAuditor    end    def audit_download_strategy -    if url =~ %r[^(cvs|bzr|hg|fossil)://] || url =~ %r[^(svn)\+http://] +    if url =~ %r{^(cvs|bzr|hg|fossil)://} || url =~ %r{^(svn)\+http://}        problem "Use of the #{$&} scheme is deprecated, pass `:using => :#{$1}` instead"      end @@ -992,10 +992,10 @@ class ResourceAuditor      return unless using      if using == :ssl3 || \ -      (Object.const_defined?("CurlSSL3DownloadStrategy") && using == CurlSSL3DownloadStrategy) +       (Object.const_defined?("CurlSSL3DownloadStrategy") && using == CurlSSL3DownloadStrategy)        problem "The SSL3 download strategy is deprecated, please choose a different URL"      elsif (Object.const_defined?("CurlUnsafeDownloadStrategy") && using == CurlUnsafeDownloadStrategy) || \ -      (Object.const_defined?("UnsafeSubversionDownloadStrategy") && using == UnsafeSubversionDownloadStrategy) +          (Object.const_defined?("UnsafeSubversionDownloadStrategy") && using == UnsafeSubversionDownloadStrategy)        problem "#{using.name} is deprecated, please choose a different URL"      end @@ -1006,7 +1006,7 @@ class ResourceAuditor          problem "Redundant :module value in URL"        end -      if url =~ %r[:[^/]+$] +      if url =~ %r{:[^/]+$}          mod = url.split(":").last          if mod == name @@ -1017,7 +1017,7 @@ class ResourceAuditor        end      end -    using_strategy = DownloadStrategyDetector.detect('', using) +    using_strategy = DownloadStrategyDetector.detect("", using)      if url_strategy == using_strategy        problem "Redundant :using value in URL" @@ -1026,12 +1026,12 @@ class ResourceAuditor    def audit_urls      # Check GNU urls; doesn't apply to mirrors -    if url =~ %r[^(?:https?|ftp)://(?!alpha).+/gnu/] +    if url =~ %r{^(?:https?|ftp)://(?!alpha).+/gnu/}        problem "Please use \"http://ftpmirror.gnu.org\" instead of #{url}."      end      # GNU's ftpmirror does NOT support SSL/TLS. -    if url =~ %r[^https://ftpmirror\.gnu\.org/] +    if url =~ %r{^https://ftpmirror\.gnu\.org/}        problem "Please use http:// for #{url}"      end @@ -1045,17 +1045,17 @@ class ResourceAuditor      # or are overly common errors that need to be reduced & fixed over time.      urls.each do |p|        case p -      when %r[^http://ftp\.gnu\.org/], -           %r[^http://[^/]*\.apache\.org/], -           %r[^http://code\.google\.com/], -           %r[^http://fossies\.org/], -           %r[^http://mirrors\.kernel\.org/], -           %r[^http://([^/]*\.|)bintray\.com/], -           %r[^http://tools\.ietf\.org/] +      when %r{^http://ftp\.gnu\.org/}, +           %r{^http://[^/]*\.apache\.org/}, +           %r{^http://code\.google\.com/}, +           %r{^http://fossies\.org/}, +           %r{^http://mirrors\.kernel\.org/}, +           %r{^http://([^/]*\.|)bintray\.com/}, +           %r{^http://tools\.ietf\.org/}          problem "Please use https:// for #{p}" -      when %r[^http://search\.mcpan\.org/CPAN/(.*)]i +      when %r{^http://search\.mcpan\.org/CPAN/(.*)}i          problem "#{p} should be `https://cpan.metacpan.org/#{$1}`" -      when %r[^(http|ftp)://ftp\.gnome\.org/pub/gnome/(.*)]i +      when %r{^(http|ftp)://ftp\.gnome\.org/pub/gnome/(.*)}i          problem "#{p} should be `https://download.gnome.org/#{$2}`"        end      end @@ -1063,11 +1063,11 @@ class ResourceAuditor      # Check SourceForge urls      urls.each do |p|        # Skip if the URL looks like a SVN repo -      next if p =~ %r[/svnroot/] -      next if p =~ %r[svn\.sourceforge] +      next if p =~ %r{/svnroot/} +      next if p =~ /svn\.sourceforge/        # Is it a sourceforge http(s) URL? -      next unless p =~ %r[^https?://.*\b(sourceforge|sf)\.(com|net)] +      next unless p =~ %r{^https?://.*\b(sourceforge|sf)\.(com|net)}        if p =~ /(\?|&)use_mirror=/          problem "Don't use #{$1}use_mirror in SourceForge urls (url is #{p})." @@ -1077,16 +1077,16 @@ class ResourceAuditor          problem "Don't use /download in SourceForge urls (url is #{p})."        end -      if p =~ %r[^https?://sourceforge\.] +      if p =~ %r{^https?://sourceforge\.}          problem "Use https://downloads.sourceforge.net to get geolocation (url is #{p})."        end -      if p =~ %r[^https?://prdownloads\.] -        problem "Don't use prdownloads in SourceForge urls (url is #{p}).\n" + +      if p =~ %r{^https?://prdownloads\.} +        problem "Don't use prdownloads in SourceForge urls (url is #{p}).\n" \                  "\tSee: http://librelist.com/browser/homebrew/2011/1/12/prdownloads-is-bad/"        end -      if p =~ %r[^http://\w+\.dl\.] +      if p =~ %r{^http://\w+\.dl\.}          problem "Don't use specific dl mirrors in SourceForge urls (url is #{p})."        end @@ -1098,42 +1098,42 @@ class ResourceAuditor      # Check for Google Code download urls, https:// is preferred      # Intentionally not extending this to SVN repositories due to certificate      # issues. -    urls.grep(%r[^http://.*\.googlecode\.com/files.*]) do |u| +    urls.grep(%r{^http://.*\.googlecode\.com/files.*}) do |u|        problem "Please use https:// for #{u}"      end      # Check for new-url Google Code download urls, https:// is preferred -    urls.grep(%r[^http://code\.google\.com/]) do |u| +    urls.grep(%r{^http://code\.google\.com/}) do |u|        problem "Please use https:// for #{u}"      end      # Check for git:// GitHub repo urls, https:// is preferred. -    urls.grep(%r[^git://[^/]*github\.com/]) do |u| +    urls.grep(%r{^git://[^/]*github\.com/}) do |u|        problem "Please use https:// for #{u}"      end      # Check for git:// Gitorious repo urls, https:// is preferred. -    urls.grep(%r[^git://[^/]*gitorious\.org/]) do |u| +    urls.grep(%r{^git://[^/]*gitorious\.org/}) do |u|        problem "Please use https:// for #{u}"      end      # Check for http:// GitHub repo urls, https:// is preferred. -    urls.grep(%r[^http://github\.com/.*\.git$]) do |u| +    urls.grep(%r{^http://github\.com/.*\.git$}) do |u|        problem "Please use https:// for #{u}"      end      # Use new-style archive downloads -    urls.select { |u| u =~ %r[https://.*github.*/(?:tar|zip)ball/] && u !~ %r[\.git$] }.each do |u| +    urls.select { |u| u =~ %r{https://.*github.*/(?:tar|zip)ball/} && u !~ /\.git$/ }.each do |u|        problem "Use /archive/ URLs for GitHub tarballs (url is #{u})."      end      # Don't use GitHub .zip files -    urls.select { |u| u =~ %r[https://.*github.*/(archive|releases)/.*\.zip$] && u !~ %r[releases/download] }.each do |u| +    urls.select { |u| u =~ %r{https://.*github.*/(archive|releases)/.*\.zip$} && u !~ %r{releases/download} }.each do |u|        problem "Use GitHub tarballs rather than zipballs (url is #{u})."      end    end -  def problem text +  def problem(text)      @problems << text    end  end diff --git a/Library/Homebrew/cmd/bottle.rb b/Library/Homebrew/cmd/bottle.rb index 537e896fd..73b071552 100644 --- a/Library/Homebrew/cmd/bottle.rb +++ b/Library/Homebrew/cmd/bottle.rb @@ -1,11 +1,11 @@ -require 'formula' -require 'bottles' -require 'tab' -require 'keg' -require 'formula_versions' -require 'utils/inreplace' -require 'erb' -require 'extend/pathname' +require "formula" +require "bottles" +require "tab" +require "keg" +require "formula_versions" +require "utils/inreplace" +require "erb" +require "extend/pathname"  BOTTLE_ERB = <<-EOS    bottle do @@ -33,10 +33,10 @@ BOTTLE_ERB = <<-EOS  EOS  module Homebrew -  def keg_contains string, keg, ignores +  def keg_contains(string, keg, ignores)      @put_string_exists_header, @put_filenames = nil -    def print_filename string, filename +    def print_filename(string, filename)        unless @put_string_exists_header          opoo "String '#{string}' still exists in these files:"          @put_string_exists_header = true @@ -57,7 +57,7 @@ module Homebrew        # Check dynamic library linkage. Importantly, do not run otool on static        # libraries, which will falsely report "linkage" to themselves. -      if file.mach_o_executable? or file.dylib? or file.mach_o_bundle? +      if file.mach_o_executable? || file.dylib? || file.mach_o_bundle?          linked_libraries = file.dynamically_linked_libraries          linked_libraries = linked_libraries.select { |lib| lib.include? string }          result ||= linked_libraries.any? @@ -77,7 +77,7 @@ module Homebrew          until io.eof?            str = io.readline.chomp -          next if ignores.any? {|i| i =~ str } +          next if ignores.any? { |i| i =~ str }            next unless str.include? string @@ -110,12 +110,12 @@ module Homebrew      result    end -  def bottle_output bottle +  def bottle_output(bottle)      erb = ERB.new BOTTLE_ERB -    erb.result(bottle.instance_eval { binding }).gsub(/^\s*$\n/, '') +    erb.result(bottle.instance_eval { binding }).gsub(/^\s*$\n/, "")    end -  def bottle_formula f +  def bottle_formula(f)      unless f.installed?        return ofail "Formula not installed or up-to-date: #{f.full_name}"      end @@ -128,7 +128,7 @@ module Homebrew        return ofail "Formula has no stable version: #{f.full_name}"      end -    if ARGV.include? '--no-revision' +    if ARGV.include? "--no-revision"        bottle_revision = 0      else        ohai "Determining #{f.full_name} bottle revision..." @@ -158,14 +158,14 @@ module Homebrew          cd cellar do            # Use gzip, faster to compress than bzip2, faster to uncompress than bzip2            # or an uncompressed tarball (and more bandwidth friendly). -          safe_system 'tar', 'czf', bottle_path, "#{f.name}/#{f.pkg_version}" +          safe_system "tar", "czf", bottle_path, "#{f.name}/#{f.pkg_version}"          end          if bottle_path.size > 1*1024*1024            ohai "Detecting if #{filename} is relocatable..."          end -        if prefix == '/usr/local' +        if prefix == "/usr/local"            prefix_check = File.join(prefix, "opt")          else            prefix_check = prefix @@ -206,7 +206,7 @@ module Homebrew      puts "./#{filename}"      puts output -    if ARGV.include? '--rb' +    if ARGV.include? "--rb"        File.open("#{filename.prefix}.bottle.rb", "w") do |file|          file.write("\# #{f.full_name}\n")          file.write(output) @@ -224,7 +224,7 @@ module Homebrew      merge_hash = {}      ARGV.named.each do |argument|        bottle_block = IO.read(argument) -      formula_name = bottle_block.lines.first.sub(/^# /,"").chomp +      formula_name = bottle_block.lines.first.sub(/^# /, "").chomp        merge_hash[formula_name] ||= []        merge_hash[formula_name] << bottle_block      end @@ -238,18 +238,18 @@ module Homebrew        output = bottle_output bottle        puts output -      if ARGV.include? '--write' +      if ARGV.include? "--write"          f = Formulary.factory(formula_name)          update_or_add = nil          Utils::Inreplace.inreplace(f.path) do |s| -          if s.include? 'bottle do' -            update_or_add = 'update' +          if s.include? "bottle do" +            update_or_add = "update"              string = s.sub!(/  bottle do.+?end\n/m, output) -            odie 'Bottle block update failed!' unless string +            odie "Bottle block update failed!" unless string            else -            update_or_add = 'add' -            if s.include? 'stable do' +            update_or_add = "add" +            if s.include? "stable do"                indent = s.slice(/^ +stable do/).length - "stable do".length                string = s.sub!(/^ {#{indent}}stable do(.|\n)+?^ {#{indent}}end\n/m, '\0' + output + "\n")              else @@ -267,7 +267,7 @@ module Homebrew                   )+                 /mx, '\0' + output + "\n")              end -            odie 'Bottle block addition failed!' unless string +            odie "Bottle block addition failed!" unless string            end          end @@ -282,7 +282,7 @@ module Homebrew    end    def bottle -    merge if ARGV.include? '--merge' +    merge if ARGV.include? "--merge"      ARGV.resolved_formulae.each do |f|        bottle_formula f diff --git a/Library/Homebrew/cmd/cleanup.rb b/Library/Homebrew/cmd/cleanup.rb index 45761be88..157b40891 100644 --- a/Library/Homebrew/cmd/cleanup.rb +++ b/Library/Homebrew/cmd/cleanup.rb @@ -1,6 +1,6 @@ -require 'formula' -require 'keg' -require 'bottles' +require "formula" +require "keg" +require "bottles"  module Homebrew    def cleanup @@ -39,7 +39,7 @@ module Homebrew      end    end -  def cleanup_formula f +  def cleanup_formula(f)      if f.installed?        eligible_kegs = f.rack.subdirs.map { |d| Keg.new(d) }.select { |k| f.pkg_version > k.version }        if eligible_kegs.any? && eligible_for_cleanup?(f) @@ -54,7 +54,7 @@ module Homebrew      end    end -  def cleanup_keg keg +  def cleanup_keg(keg)      if keg.linked?        opoo "Skipping (old) #{keg} due to it being linked"      else @@ -84,12 +84,12 @@ module Homebrew        end        file_is_stale = if PkgVersion === version -                        f.pkg_version > version -                      else -                        f.version > version -                      end +        f.pkg_version > version +      else +        f.version > version +      end -      if file_is_stale || ARGV.switch?('s') && !f.installed? || bottle_file_outdated?(f, file) +      if file_is_stale || ARGV.switch?("s") && !f.installed? || bottle_file_outdated?(f, file)          cleanup_path(file) { file.unlink }        end      end @@ -107,15 +107,15 @@ module Homebrew    def cleanup_lockfiles      return unless HOMEBREW_CACHE_FORMULA.directory?      candidates = HOMEBREW_CACHE_FORMULA.children -    lockfiles  = candidates.select { |f| f.file? && f.extname == '.brewing' } +    lockfiles  = candidates.select { |f| f.file? && f.extname == ".brewing" }      lockfiles.select(&:readable?).each do |file| -      file.open.flock(File::LOCK_EX | File::LOCK_NB) and file.unlink +      file.open.flock(File::LOCK_EX | File::LOCK_NB) && file.unlink      end    end    def rm_DS_Store      paths = %w[Cellar Frameworks Library bin etc include lib opt sbin share var]. -      map { |p| HOMEBREW_PREFIX/p }.select(&:exist?) +            map { |p| HOMEBREW_PREFIX/p }.select(&:exist?)      args = paths.map(&:to_s) + %w[-name .DS_Store -delete]      quiet_system "find", *args    end @@ -126,7 +126,7 @@ module Homebrew      # introduced the opt symlink, and built against that instead. So provided      # no brew exists that was built against an old-style keg-only keg, we can      # remove it. -    if not formula.keg_only? or ARGV.force? +    if !formula.keg_only? || ARGV.force?        true      elsif formula.opt_prefix.directory?        # SHA records were added to INSTALL_RECEIPTS the same day as opt symlinks diff --git a/Library/Homebrew/cmd/command.rb b/Library/Homebrew/cmd/command.rb index c2ea96dab..6dce00e32 100644 --- a/Library/Homebrew/cmd/command.rb +++ b/Library/Homebrew/cmd/command.rb @@ -3,7 +3,7 @@ module Homebrew      cmd = ARGV.first      cmd = HOMEBREW_INTERNAL_COMMAND_ALIASES.fetch(cmd, cmd) -    if (path = HOMEBREW_LIBRARY_PATH/"cmd/#{cmd}.rb"; path.file?) +    if (path = HOMEBREW_LIBRARY_PATH/"cmd/#{cmd}.rb" && path.file?)        puts path      elsif (path = which("brew-#{cmd}") || which("brew-#{cmd}.rb"))        puts path diff --git a/Library/Homebrew/cmd/commands.rb b/Library/Homebrew/cmd/commands.rb index a41099982..1d4022f8d 100644 --- a/Library/Homebrew/cmd/commands.rb +++ b/Library/Homebrew/cmd/commands.rb @@ -21,13 +21,13 @@ module Homebrew    def internal_commands      with_directory = false      (HOMEBREW_REPOSITORY/"Library/Homebrew/cmd"). -       children(with_directory). -       map {|f| File.basename(f, '.rb')} +      children(with_directory). +      map { |f| File.basename(f, ".rb") }    end    def external_commands -    paths.map{ |p| Dir["#{p}/brew-*"] }.flatten. -      map{ |f| File.basename(f, '.rb')[5..-1] }. -      reject{ |f| f =~ /\./ } +    paths.map { |p| Dir["#{p}/brew-*"] }.flatten. +      map { |f| File.basename(f, ".rb")[5..-1] }. +      reject { |f| f =~ /\./ }    end  end diff --git a/Library/Homebrew/cmd/config.rb b/Library/Homebrew/cmd/config.rb index d3f00555c..7627d6e97 100644 --- a/Library/Homebrew/cmd/config.rb +++ b/Library/Homebrew/cmd/config.rb @@ -1,4 +1,4 @@ -require 'hardware' +require "hardware"  require "software_spec"  module Homebrew @@ -59,7 +59,7 @@ module Homebrew      if origin.empty? then "(none)" else origin end    end -  def describe_path path +  def describe_path(path)      return "N/A" if path.nil?      realpath = path.realpath      if realpath == path then path else "#{path} => #{realpath}" end @@ -67,16 +67,16 @@ module Homebrew    def describe_x11      return "N/A" unless MacOS::XQuartz.installed? -    return "#{MacOS::XQuartz.version} => #{describe_path(MacOS::XQuartz.prefix)}" +    "#{MacOS::XQuartz.version} => #{describe_path(MacOS::XQuartz.prefix)}"    end    def describe_perl -    describe_path(which 'perl') +    describe_path(which "perl")    end    def describe_python -    python = which 'python' -    if %r{/shims/python$} =~ python && which('pyenv') +    python = which "python" +    if %r{/shims/python$} =~ python && which("pyenv")        "#{python} => #{Pathname.new(`pyenv which python`.strip).realpath}" rescue describe_path(python)      else        describe_path(python) @@ -84,8 +84,8 @@ module Homebrew    end    def describe_ruby -    ruby = which 'ruby' -    if %r{/shims/ruby$} =~ ruby && which('rbenv') +    ruby = which "ruby" +    if %r{/shims/ruby$} =~ ruby && which("rbenv")        "#{ruby} => #{Pathname.new(`rbenv which ruby`.strip).realpath}" rescue describe_path(ruby)      else        describe_path(ruby) @@ -114,7 +114,7 @@ module Homebrew        s << RUBY_VERSION      end -    if RUBY_PATH.to_s !~ %r[^/System/Library/Frameworks/Ruby.framework/Versions/[12]\.[089]/usr/bin/ruby] +    if RUBY_PATH.to_s !~ %r{^/System/Library/Frameworks/Ruby.framework/Versions/[12]\.[089]/usr/bin/ruby}        s << " => #{RUBY_PATH}"      end      s @@ -131,7 +131,7 @@ module Homebrew      end    end -  def dump_verbose_config(f=$stdout) +  def dump_verbose_config(f = $stdout)      f.puts "HOMEBREW_VERSION: #{HOMEBREW_VERSION}"      f.puts "ORIGIN: #{origin}"      f.puts "HEAD: #{head}" diff --git a/Library/Homebrew/cmd/create.rb b/Library/Homebrew/cmd/create.rb index eaa1dca5c..88b8c0df3 100644 --- a/Library/Homebrew/cmd/create.rb +++ b/Library/Homebrew/cmd/create.rb @@ -1,17 +1,15 @@ -require 'formula' -require 'blacklist' -require 'digest' -require 'erb' +require "formula" +require "blacklist" +require "digest" +require "erb"  module Homebrew -    # Create a formula from a tarball URL    def create -      # Allow searching MacPorts or Fink. -    if ARGV.include? '--macports' +    if ARGV.include? "--macports"        exec_browser "https://www.macports.org/ports.php?by=name&substr=#{ARGV.next}" -    elsif ARGV.include? '--fink' +    elsif ARGV.include? "--fink"        exec_browser "http://pdb.finkproject.org/pdb/browse.php?summary=#{ARGV.next}"      end @@ -22,17 +20,17 @@ module Homebrew      url = ARGV.named.first # Pull the first (and only) url from ARGV -    version = ARGV.next if ARGV.include? '--set-version' -    name = ARGV.next if ARGV.include? '--set-name' +    version = ARGV.next if ARGV.include? "--set-version" +    name = ARGV.next if ARGV.include? "--set-name"      fc = FormulaCreator.new      fc.name = name      fc.version = version      fc.url = url -    fc.mode = if ARGV.include? '--cmake' +    fc.mode = if ARGV.include? "--cmake"        :cmake -    elsif ARGV.include? '--autotools' +    elsif ARGV.include? "--autotools"        :autotools      end @@ -76,7 +74,7 @@ class FormulaCreator    attr_reader :url, :sha256    attr_accessor :name, :version, :path, :mode -  def url= url +  def url=(url)      @url = url      path = Pathname.new(url)      if @name.nil? @@ -115,7 +113,7 @@ class FormulaCreator        @sha256 = r.fetch.sha256 if r.download_strategy == CurlDownloadStrategy      end -    path.write ERB.new(template, nil, '>').result(binding) +    path.write ERB.new(template, nil, ">").result(binding)    end    def template; <<-EOS.undent diff --git a/Library/Homebrew/cmd/deps.rb b/Library/Homebrew/cmd/deps.rb index 180ad3de3..f69d1be93 100644 --- a/Library/Homebrew/cmd/deps.rb +++ b/Library/Homebrew/cmd/deps.rb @@ -1,15 +1,15 @@  # encoding: UTF-8 -require 'formula' -require 'ostruct' +require "formula" +require "ostruct"  module Homebrew    def deps      mode = OpenStruct.new( -      :installed?  => ARGV.include?('--installed'), -      :tree?       => ARGV.include?('--tree'), -      :all?        => ARGV.include?('--all'), -      :topo_order? => ARGV.include?('-n'), -      :union?      => ARGV.include?('--union') +      :installed?  => ARGV.include?("--installed"), +      :tree?       => ARGV.include?("--tree"), +      :all?        => ARGV.include?("--all"), +      :topo_order? => ARGV.include?("-n"), +      :union?      => ARGV.include?("--union")      )      if mode.installed? && mode.tree? @@ -30,7 +30,7 @@ module Homebrew      end    end -  def deps_for_formula(f, recursive=false) +  def deps_for_formula(f, recursive = false)      ignores = []      ignores << "build?" if ARGV.include? "--skip-build"      ignores << "optional?" if ARGV.include? "--skip-optional" @@ -54,8 +54,8 @@ module Homebrew      deps + reqs.select(&:default_formula?).map(&:to_dependency)    end -  def deps_for_formulae(formulae, recursive=false, &block) -    formulae.map {|f| deps_for_formula(f, recursive) }.inject(&block) +  def deps_for_formulae(formulae, recursive = false, &block) +    formulae.map { |f| deps_for_formula(f, recursive) }.inject(&block)    end    def puts_deps(formulae) @@ -70,7 +70,7 @@ module Homebrew      end    end -  def recursive_deps_tree f, prefix +  def recursive_deps_tree(f, prefix)      reqs = f.requirements.select(&:default_formula?)      max = reqs.length - 1      reqs.each_with_index do |req, i| diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index df27e27ed..7c184587f 100644 --- a/Library/Homebrew/cmd/doctor.rb +++ b/Library/Homebrew/cmd/doctor.rb @@ -9,7 +9,7 @@ class Volumes      @volumes = get_mounts    end -  def which path +  def which(path)      vols = get_mounts path      # no volume found @@ -22,10 +22,10 @@ class Volumes      if vol_index.nil?        return -1      end -    return vol_index +    vol_index    end -  def get_mounts path=nil +  def get_mounts(path = nil)      vols = []      # get the volume of path, if path is nil returns all volumes @@ -41,20 +41,18 @@ class Volumes          end        end      end -    return vols +    vols    end  end -  class Checks - -############# HELPERS +  ############# HELPERS    # Finds files in HOMEBREW_PREFIX *and* /usr/local.    # Specify paths relative to a prefix eg. "include/foo.h".    # Sets @found for your convenience. -  def find_relative_paths *relative_paths +  def find_relative_paths(*relative_paths)      @found = %W[#{HOMEBREW_PREFIX} /usr/local].uniq.inject([]) do |found, prefix| -      found + relative_paths.map{|f| File.join(prefix, f) }.select{|f| File.exist? f } +      found + relative_paths.map { |f| File.join(prefix, f) }.select { |f| File.exist? f }      end    end @@ -69,159 +67,159 @@ class Checks      return @git if instance_variable_defined?(:@git)      @git = system "git --version >/dev/null 2>&1"    end -############# END HELPERS +  ############# END HELPERS -# Sorry for the lack of an indent here, the diff would have been unreadable. -# See https://github.com/Homebrew/homebrew/pull/9986 -def check_path_for_trailing_slashes -  bad_paths = ENV['PATH'].split(File::PATH_SEPARATOR).select { |p| p[-1..-1] == '/' } -  return if bad_paths.empty? -  s = <<-EOS.undent +  # Sorry for the lack of an indent here, the diff would have been unreadable. +  # See https://github.com/Homebrew/homebrew/pull/9986 +  def check_path_for_trailing_slashes +    bad_paths = ENV["PATH"].split(File::PATH_SEPARATOR).select { |p| p[-1..-1] == "/" } +    return if bad_paths.empty? +    s = <<-EOS.undent      Some directories in your path end in a slash.      Directories in your path should not end in a slash. This can break other      doctor checks. The following directories should be edited:    EOS -  bad_paths.each{|p| s << "    #{p}"} -  s -end +    bad_paths.each { |p| s << "    #{p}" } +    s +  end -# Installing MacGPG2 interferes with Homebrew in a big way -# https://github.com/GPGTools/MacGPG2 -def check_for_macgpg2 -  return if File.exist? '/usr/local/MacGPG2/share/gnupg/VERSION' +  # Installing MacGPG2 interferes with Homebrew in a big way +  # https://github.com/GPGTools/MacGPG2 +  def check_for_macgpg2 +    return if File.exist? "/usr/local/MacGPG2/share/gnupg/VERSION" -  suspects = %w{ -    /Applications/start-gpg-agent.app -    /Library/Receipts/libiconv1.pkg -    /usr/local/MacGPG2 -  } +    suspects = %w[ +      /Applications/start-gpg-agent.app +      /Library/Receipts/libiconv1.pkg +      /usr/local/MacGPG2 +    ] -  if suspects.any? { |f| File.exist? f } then <<-EOS.undent +    if suspects.any? { |f| File.exist? f } then <<-EOS.undent        You may have installed MacGPG2 via the package installer.        Several other checks in this script will turn up problems, such as stray        dylibs in /usr/local and permissions issues with share and man in /usr/local/.      EOS +    end    end -end -def __check_stray_files(dir, pattern, white_list, message) -  return unless File.directory?(dir) +  def __check_stray_files(dir, pattern, white_list, message) +    return unless File.directory?(dir) -  files = Dir.chdir(dir) { -    Dir[pattern].select { |f| File.file?(f) && !File.symlink?(f) } - Dir.glob(white_list) -  }.map { |file| File.join(dir, file) } +    files = Dir.chdir(dir) do +      Dir[pattern].select { |f| File.file?(f) && !File.symlink?(f) } - Dir.glob(white_list) +    end.map { |file| File.join(dir, file) } -  inject_file_list(files, message) unless files.empty? -end +    inject_file_list(files, message) unless files.empty? +  end -def check_for_stray_dylibs -  # Dylibs which are generally OK should be added to this list, -  # with a short description of the software they come with. -  white_list = [ -    "libfuse.2.dylib", # MacFuse -    "libfuse_ino64.2.dylib", # MacFuse -    "libmacfuse_i32.2.dylib", # OSXFuse MacFuse compatibility layer -    "libmacfuse_i64.2.dylib", # OSXFuse MacFuse compatibility layer -    "libosxfuse_i32.2.dylib", # OSXFuse -    "libosxfuse_i64.2.dylib", # OSXFuse -    "libTrAPI.dylib", # TrAPI / Endpoint Security VPN -    "libntfs-3g.*.dylib", # NTFS-3G -    "libntfs.*.dylib", # NTFS-3G -    "libublio.*.dylib", # NTFS-3G -  ] - -  __check_stray_files "/usr/local/lib", "*.dylib", white_list, <<-EOS.undent +  def check_for_stray_dylibs +    # Dylibs which are generally OK should be added to this list, +    # with a short description of the software they come with. +    white_list = [ +      "libfuse.2.dylib", # MacFuse +      "libfuse_ino64.2.dylib", # MacFuse +      "libmacfuse_i32.2.dylib", # OSXFuse MacFuse compatibility layer +      "libmacfuse_i64.2.dylib", # OSXFuse MacFuse compatibility layer +      "libosxfuse_i32.2.dylib", # OSXFuse +      "libosxfuse_i64.2.dylib", # OSXFuse +      "libTrAPI.dylib", # TrAPI / Endpoint Security VPN +      "libntfs-3g.*.dylib", # NTFS-3G +      "libntfs.*.dylib", # NTFS-3G +      "libublio.*.dylib", # NTFS-3G +    ] + +    __check_stray_files "/usr/local/lib", "*.dylib", white_list, <<-EOS.undent      Unbrewed dylibs were found in /usr/local/lib.      If you didn't put them there on purpose they could cause problems when      building Homebrew formulae, and may need to be deleted.      Unexpected dylibs:    EOS -end +  end + +  def check_for_stray_static_libs +    # Static libs which are generally OK should be added to this list, +    # with a short description of the software they come with. +    white_list = [ +      "libsecurity_agent_client.a", # OS X 10.8.2 Supplemental Update +      "libsecurity_agent_server.a", # OS X 10.8.2 Supplemental Update +      "libntfs-3g.a", # NTFS-3G +      "libntfs.a", # NTFS-3G +      "libublio.a", # NTFS-3G +    ] -def check_for_stray_static_libs -  # Static libs which are generally OK should be added to this list, -  # with a short description of the software they come with. -  white_list = [ -    "libsecurity_agent_client.a", # OS X 10.8.2 Supplemental Update -    "libsecurity_agent_server.a", # OS X 10.8.2 Supplemental Update -    "libntfs-3g.a", # NTFS-3G -    "libntfs.a", # NTFS-3G -    "libublio.a", # NTFS-3G -  ] - -  __check_stray_files "/usr/local/lib", "*.a", white_list, <<-EOS.undent +    __check_stray_files "/usr/local/lib", "*.a", white_list, <<-EOS.undent      Unbrewed static libraries were found in /usr/local/lib.      If you didn't put them there on purpose they could cause problems when      building Homebrew formulae, and may need to be deleted.      Unexpected static libraries:    EOS -end +  end + +  def check_for_stray_pcs +    # Package-config files which are generally OK should be added to this list, +    # with a short description of the software they come with. +    white_list = [ +      "fuse.pc", # OSXFuse/MacFuse +      "macfuse.pc", # OSXFuse MacFuse compatibility layer +      "osxfuse.pc", # OSXFuse +      "libntfs-3g.pc", # NTFS-3G +      "libublio.pc", # NTFS-3G +    ] -def check_for_stray_pcs -  # Package-config files which are generally OK should be added to this list, -  # with a short description of the software they come with. -  white_list = [ -    "fuse.pc", # OSXFuse/MacFuse -    "macfuse.pc", # OSXFuse MacFuse compatibility layer -    "osxfuse.pc", # OSXFuse -    "libntfs-3g.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.undent      Unbrewed .pc files were found in /usr/local/lib/pkgconfig.      If you didn't put them there on purpose they could cause problems when      building Homebrew formulae, and may need to be deleted.      Unexpected .pc files:    EOS -end +  end -def check_for_stray_las -  white_list = [ -    "libfuse.la", # MacFuse -    "libfuse_ino64.la", # MacFuse -    "libosxfuse_i32.la", # OSXFuse -    "libosxfuse_i64.la", # OSXFuse -    "libntfs-3g.la", # NTFS-3G -    "libntfs.la", # NTFS-3G -    "libublio.la", # NTFS-3G -  ] - -  __check_stray_files "/usr/local/lib", "*.la", white_list, <<-EOS.undent +  def check_for_stray_las +    white_list = [ +      "libfuse.la", # MacFuse +      "libfuse_ino64.la", # MacFuse +      "libosxfuse_i32.la", # OSXFuse +      "libosxfuse_i64.la", # OSXFuse +      "libntfs-3g.la", # NTFS-3G +      "libntfs.la", # NTFS-3G +      "libublio.la", # NTFS-3G +    ] + +    __check_stray_files "/usr/local/lib", "*.la", white_list, <<-EOS.undent      Unbrewed .la files were found in /usr/local/lib.      If you didn't put them there on purpose they could cause problems when      building Homebrew formulae, and may need to be deleted.      Unexpected .la files:    EOS -end +  end + +  def check_for_stray_headers +    white_list = [ +      "fuse.h", # MacFuse +      "fuse/**/*.h", # MacFuse +      "macfuse/**/*.h", # OSXFuse MacFuse compatibility layer +      "osxfuse/**/*.h", # OSXFuse +      "ntfs/**/*.h", # NTFS-3G +      "ntfs-3g/**/*.h", # NTFS-3G +    ] -def check_for_stray_headers -  white_list = [ -    "fuse.h", # MacFuse -    "fuse/**/*.h", # MacFuse -    "macfuse/**/*.h", # OSXFuse MacFuse compatibility layer -    "osxfuse/**/*.h", # OSXFuse -    "ntfs/**/*.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.undent      Unbrewed header files were found in /usr/local/include.      If you didn't put them there on purpose they could cause problems when      building Homebrew formulae, and may need to be deleted.      Unexpected header files:    EOS -end +  end -def check_for_other_package_managers -  ponk = MacOS.macports_or_fink -  unless ponk.empty? -    <<-EOS.undent +  def check_for_other_package_managers +    ponk = MacOS.macports_or_fink +    unless ponk.empty? +      <<-EOS.undent        You have MacPorts or Fink installed:          #{ponk.join(", ")} @@ -230,196 +228,196 @@ def check_for_other_package_managers          sudo mv /opt/local ~/macports      EOS +    end    end -end -def check_for_broken_symlinks -  broken_symlinks = [] +  def check_for_broken_symlinks +    broken_symlinks = [] -  Keg::PRUNEABLE_DIRECTORIES.select(&:directory?).each do |d| -    d.find do |path| -      if path.symlink? && !path.resolved_path_exists? -        broken_symlinks << path +    Keg::PRUNEABLE_DIRECTORIES.select(&:directory?).each do |d| +      d.find do |path| +        if path.symlink? && !path.resolved_path_exists? +          broken_symlinks << path +        end        end      end -  end -  unless broken_symlinks.empty? then <<-EOS.undent +    unless broken_symlinks.empty? then <<-EOS.undent      Broken symlinks were found. Remove them with `brew prune`:        #{broken_symlinks * "\n      "}      EOS +    end    end -end -def check_for_unsupported_osx -  if MacOS.version >= "10.11" then <<-EOS.undent +  def check_for_unsupported_osx +    if MacOS.version >= "10.11" then <<-EOS.undent      You are using OS X #{MacOS.version}.      We do not provide support for this pre-release version.      You may encounter build failures or other breakage.      EOS +    end    end -end -if MacOS.version >= "10.9" -  def check_for_installed_developer_tools -    unless MacOS::Xcode.installed? || MacOS::CLT.installed? then <<-EOS.undent +  if MacOS.version >= "10.9" +    def check_for_installed_developer_tools +      unless MacOS::Xcode.installed? || MacOS::CLT.installed? then <<-EOS.undent        No developer tools installed.        Install the Command Line Tools:          xcode-select --install        EOS +      end      end -  end -  # TODO: remove when 10.11 is released -  if MacOS.version >= "10.11" -    def check_xcode_up_to_date -      if MacOS::Xcode.installed? && MacOS::Xcode.outdated? -        <<-EOS.undent +    # TODO: remove when 10.11 is released +    if MacOS.version >= "10.11" +      def check_xcode_up_to_date +        if MacOS::Xcode.installed? && MacOS::Xcode.outdated? +          <<-EOS.undent          Your Xcode (#{MacOS::Xcode.version}) is outdated          Please update to Xcode #{MacOS::Xcode.latest_version}.          Xcode can be updated from            https://developer.apple.com/xcode/downloads/          EOS +        end        end -    end -  else -    def check_xcode_up_to_date -      if MacOS::Xcode.installed? && MacOS::Xcode.outdated? -        <<-EOS.undent +    else +      def check_xcode_up_to_date +        if MacOS::Xcode.installed? && MacOS::Xcode.outdated? +          <<-EOS.undent          Your Xcode (#{MacOS::Xcode.version}) is outdated          Please update to Xcode #{MacOS::Xcode.latest_version}.          Xcode can be updated from the App Store.          EOS +        end        end      end -  end -  def check_clt_up_to_date -    if MacOS::CLT.installed? && MacOS::CLT.outdated? then <<-EOS.undent +    def check_clt_up_to_date +      if MacOS::CLT.installed? && MacOS::CLT.outdated? then <<-EOS.undent        A newer Command Line Tools release is available.        Update them from Software Update in the App Store.        EOS +      end      end -  end -elsif MacOS.version == "10.8" || MacOS.version == "10.7" -  def check_for_installed_developer_tools -    unless MacOS::Xcode.installed? || MacOS::CLT.installed? then <<-EOS.undent +  elsif MacOS.version == "10.8" || MacOS.version == "10.7" +    def check_for_installed_developer_tools +      unless MacOS::Xcode.installed? || MacOS::CLT.installed? then <<-EOS.undent        No developer tools installed.        You should install the Command Line Tools.        The standalone package can be obtained from          https://developer.apple.com/downloads        or it can be installed via Xcode's preferences.        EOS +      end      end -  end -  def check_xcode_up_to_date -    if MacOS::Xcode.installed? && MacOS::Xcode.outdated? then <<-EOS.undent +    def check_xcode_up_to_date +      if MacOS::Xcode.installed? && MacOS::Xcode.outdated? then <<-EOS.undent        Your Xcode (#{MacOS::Xcode.version}) is outdated        Please update to Xcode #{MacOS::Xcode.latest_version}.        Xcode can be updated from          https://developer.apple.com/xcode/downloads/        EOS +      end      end -  end -  def check_clt_up_to_date -    if MacOS::CLT.installed? && MacOS::CLT.outdated? then <<-EOS.undent +    def check_clt_up_to_date +      if MacOS::CLT.installed? && MacOS::CLT.outdated? then <<-EOS.undent        A newer Command Line Tools release is available.        The standalone package can be obtained from          https://developer.apple.com/downloads        or it can be installed via Xcode's preferences.        EOS +      end      end -  end -else -  def check_for_installed_developer_tools -    unless MacOS::Xcode.installed? then <<-EOS.undent +  else +    def check_for_installed_developer_tools +      unless MacOS::Xcode.installed? then <<-EOS.undent        Xcode is not installed. Most formulae need Xcode to build.        It can be installed from          https://developer.apple.com/xcode/downloads/        EOS +      end      end -  end -  def check_xcode_up_to_date -    if MacOS::Xcode.installed? && MacOS::Xcode.outdated? then <<-EOS.undent +    def check_xcode_up_to_date +      if MacOS::Xcode.installed? && MacOS::Xcode.outdated? then <<-EOS.undent        Your Xcode (#{MacOS::Xcode.version}) is outdated        Please update to Xcode #{MacOS::Xcode.latest_version}.        Xcode can be updated from          https://developer.apple.com/xcode/downloads/        EOS +      end      end    end -end -def check_for_osx_gcc_installer -  if (MacOS.version < "10.7" || MacOS::Xcode.version > "4.1") && \ -      MacOS.clang_version == "2.1" -    message = <<-EOS.undent +  def check_for_osx_gcc_installer +    if (MacOS.version < "10.7" || MacOS::Xcode.version > "4.1") && \ +       MacOS.clang_version == "2.1" +      message = <<-EOS.undent      You seem to have osx-gcc-installer installed.      Homebrew doesn't support osx-gcc-installer. It causes many builds to fail and      is an unlicensed distribution of really old Xcode files.      EOS -    if MacOS.version >= :mavericks -      message += <<-EOS.undent -        Please run `xcode-select --install` to install the CLT. -      EOS -    elsif MacOS.version >= :lion -      message += <<-EOS.undent +      if MacOS.version >= :mavericks +        message += <<-EOS.undent +          Please run `xcode-select --install` to install the CLT. +        EOS +      elsif MacOS.version >= :lion +        message += <<-EOS.undent          Please install the CLT or Xcode #{MacOS::Xcode.latest_version}.        EOS -    else -      message += <<-EOS.undent +      else +        message += <<-EOS.undent          Please install Xcode #{MacOS::Xcode.latest_version}.        EOS +      end      end    end -end -def check_for_stray_developer_directory -  # if the uninstaller script isn't there, it's a good guess neither are -  # any troublesome leftover Xcode files -  uninstaller = Pathname.new("/Developer/Library/uninstall-developer-folder") -  if MacOS::Xcode.version >= "4.3" && uninstaller.exist? then <<-EOS.undent +  def check_for_stray_developer_directory +    # if the uninstaller script isn't there, it's a good guess neither are +    # any troublesome leftover Xcode files +    uninstaller = Pathname.new("/Developer/Library/uninstall-developer-folder") +    if MacOS::Xcode.version >= "4.3" && uninstaller.exist? then <<-EOS.undent      You have leftover files from an older version of Xcode.      You should delete them using:        #{uninstaller}      EOS +    end    end -end -def check_for_bad_install_name_tool -  return if MacOS.version < "10.9" +  def check_for_bad_install_name_tool +    return if MacOS.version < "10.9" -  libs = Pathname.new("/usr/bin/install_name_tool").dynamically_linked_libraries +    libs = Pathname.new("/usr/bin/install_name_tool").dynamically_linked_libraries -  # otool may not work, for example if the Xcode license hasn't been accepted yet -  return if libs.empty? +    # otool may not work, for example if the Xcode license hasn't been accepted yet +    return if libs.empty? -  unless libs.include? "/usr/lib/libxcselect.dylib" then <<-EOS.undent +    unless libs.include? "/usr/lib/libxcselect.dylib" then <<-EOS.undent      You have an outdated version of /usr/bin/install_name_tool installed.      This will cause binary package installations to fail.      This can happen if you install osx-gcc-installer or RailsInstaller.      To restore it, you must reinstall OS X or restore the binary from      the OS packages.      EOS +    end    end -end -def __check_subdir_access base -  target = HOMEBREW_PREFIX+base -  return unless target.exist? +  def __check_subdir_access(base) +    target = HOMEBREW_PREFIX+base +    return unless target.exist? -  cant_read = [] +    cant_read = [] -  target.find do |d| -    next unless d.directory? -    cant_read << d unless d.writable_real? -  end +    target.find do |d| +      next unless d.directory? +      cant_read << d unless d.writable_real? +    end -  cant_read.sort! -  if cant_read.length > 0 then -    s = <<-EOS.undent +    cant_read.sort! +    if cant_read.length > 0 +      s = <<-EOS.undent      Some directories in #{target} aren't writable.      This can happen if you "sudo make install" software that isn't managed      by Homebrew. If a brew tries to add locale information to one of these @@ -427,23 +425,23 @@ def __check_subdir_access base      You should probably `chown` them:      EOS -    cant_read.each{ |f| s << "    #{f}\n" } -    s +      cant_read.each { |f| s << "    #{f}\n" } +      s +    end    end -end -def check_access_share_locale -  __check_subdir_access 'share/locale' -end +  def check_access_share_locale +    __check_subdir_access "share/locale" +  end -def check_access_share_man -  __check_subdir_access 'share/man' -end +  def check_access_share_man +    __check_subdir_access "share/man" +  end -def check_access_usr_local -  return unless HOMEBREW_PREFIX.to_s == '/usr/local' +  def check_access_usr_local +    return unless HOMEBREW_PREFIX.to_s == "/usr/local" -  unless File.writable_real?("/usr/local") then <<-EOS.undent +    unless File.writable_real?("/usr/local") then <<-EOS.undent      The /usr/local directory is not writable.      Even if this directory was writable when you installed Homebrew, other      software may change permissions on this directory. Some versions of the @@ -452,23 +450,22 @@ def check_access_usr_local      You should probably change the ownership and permissions of /usr/local      back to your user account.      EOS +    end    end -end -def check_tmpdir_sticky_bit -  world_writable = HOMEBREW_TEMP.stat.mode & 0777 == 0777 -  if world_writable && !HOMEBREW_TEMP.sticky? then <<-EOS.undent +  def check_tmpdir_sticky_bit +    world_writable = HOMEBREW_TEMP.stat.mode & 0777 == 0777 +    if world_writable && !HOMEBREW_TEMP.sticky? then <<-EOS.undent      #{HOMEBREW_TEMP} is world-writable but does not have the sticky bit set.      Please run "Repair Disk Permissions" in Disk Utility.    EOS +    end    end -end - -(Keg::TOP_LEVEL_DIRECTORIES + ["lib/pkgconfig"]).each do |d| -  define_method("check_access_#{d.sub("/", "_")}") do -    dir = HOMEBREW_PREFIX.join(d) -    if dir.exist? && !dir.writable_real? then <<-EOS.undent +  (Keg::TOP_LEVEL_DIRECTORIES + ["lib/pkgconfig"]).each do |d| +    define_method("check_access_#{d.sub("/", "_")}") do +      dir = HOMEBREW_PREFIX.join(d) +      if dir.exist? && !dir.writable_real? then <<-EOS.undent        #{dir} isn't writable.        This can happen if you "sudo make install" software that isn't managed by @@ -477,13 +474,13 @@ end        You should probably `chown` #{dir}        EOS +      end      end    end -end -def check_access_site_packages -  if Language::Python.homebrew_site_packages.exist? && !Language::Python.homebrew_site_packages.writable_real? -    <<-EOS.undent +  def check_access_site_packages +    if Language::Python.homebrew_site_packages.exist? && !Language::Python.homebrew_site_packages.writable_real? +      <<-EOS.undent        #{Language::Python.homebrew_site_packages} isn't writable.        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 @@ -491,123 +488,123 @@ def check_access_site_packages        You should probably `chown` #{Language::Python.homebrew_site_packages}      EOS +    end    end -end -def check_access_logs -  if HOMEBREW_LOGS.exist? and not HOMEBREW_LOGS.writable_real? -    <<-EOS.undent +  def check_access_logs +    if HOMEBREW_LOGS.exist? && !HOMEBREW_LOGS.writable_real? +      <<-EOS.undent        #{HOMEBREW_LOGS} isn't writable.        Homebrew writes debugging logs to this location.        You should probably `chown` #{HOMEBREW_LOGS}      EOS +    end    end -end -def check_access_cache -  if HOMEBREW_CACHE.exist? && !HOMEBREW_CACHE.writable_real? -    <<-EOS.undent +  def check_access_cache +    if HOMEBREW_CACHE.exist? && !HOMEBREW_CACHE.writable_real? +      <<-EOS.undent        #{HOMEBREW_CACHE} isn't writable.        This can happen if you run `brew install` or `brew fetch` as another user.        Homebrew caches downloaded files to this location.        You should probably `chown` #{HOMEBREW_CACHE}      EOS +    end    end -end -def check_access_cellar -  if HOMEBREW_CELLAR.exist? && !HOMEBREW_CELLAR.writable_real? -    <<-EOS.undent +  def check_access_cellar +    if HOMEBREW_CELLAR.exist? && !HOMEBREW_CELLAR.writable_real? +      <<-EOS.undent        #{HOMEBREW_CELLAR} isn't writable.        You should `chown` #{HOMEBREW_CELLAR}      EOS +    end    end -end -def check_access_prefix_opt -  opt = HOMEBREW_PREFIX.join("opt") -  if opt.exist? && !opt.writable_real? -    <<-EOS.undent +  def check_access_prefix_opt +    opt = HOMEBREW_PREFIX.join("opt") +    if opt.exist? && !opt.writable_real? +      <<-EOS.undent        #{opt} isn't writable.        You should `chown` #{opt}      EOS +    end    end -end -def check_ruby_version -  ruby_version = MacOS.version >= "10.9" ? "2.0" : "1.8" -  if RUBY_VERSION[/\d\.\d/] != ruby_version then <<-EOS.undent +  def check_ruby_version +    ruby_version = MacOS.version >= "10.9" ? "2.0" : "1.8" +    if RUBY_VERSION[/\d\.\d/] != ruby_version then <<-EOS.undent      Ruby version #{RUBY_VERSION} is unsupported on #{MacOS.version}. Homebrew      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 supported Rubies.      EOS +    end    end -end -def check_homebrew_prefix -  unless HOMEBREW_PREFIX.to_s == '/usr/local' -    <<-EOS.undent +  def check_homebrew_prefix +    unless HOMEBREW_PREFIX.to_s == "/usr/local" +      <<-EOS.undent        Your Homebrew is not installed to /usr/local        You can install Homebrew anywhere you want, but some brews may only build        correctly if you install in /usr/local. Sorry!      EOS +    end    end -end -def check_xcode_prefix -  prefix = MacOS::Xcode.prefix -  return if prefix.nil? -  if prefix.to_s.match(' ') -    <<-EOS.undent +  def check_xcode_prefix +    prefix = MacOS::Xcode.prefix +    return if prefix.nil? +    if prefix.to_s.match(" ") +      <<-EOS.undent        Xcode is installed to a directory with a space in the name.        This will cause some formulae to fail to build.      EOS +    end    end -end -def check_xcode_prefix_exists -  prefix = MacOS::Xcode.prefix -  return if prefix.nil? -  unless prefix.exist? -    <<-EOS.undent +  def check_xcode_prefix_exists +    prefix = MacOS::Xcode.prefix +    return if prefix.nil? +    unless prefix.exist? +      <<-EOS.undent        The directory Xcode is reportedly installed to doesn't exist:          #{prefix}        You may need to `xcode-select` the proper path if you have moved Xcode.      EOS +    end    end -end -def check_xcode_select_path -  if not MacOS::CLT.installed? and not File.file? "#{MacOS.active_developer_dir}/usr/bin/xcodebuild" -    path = MacOS::Xcode.bundle_path -    path = '/Developer' if path.nil? or not path.directory? -    <<-EOS.undent +  def check_xcode_select_path +    if !MacOS::CLT.installed? and !File.file? "#{MacOS.active_developer_dir}/usr/bin/xcodebuild" +      path = MacOS::Xcode.bundle_path +      path = "/Developer" if path.nil? || !path.directory? +      <<-EOS.undent        Your Xcode is configured with an invalid path.        You should change it to the correct path:          sudo xcode-select -switch #{path}      EOS +    end    end -end -def check_user_path_1 -  $seen_prefix_bin = false -  $seen_prefix_sbin = false +  def check_user_path_1 +    $seen_prefix_bin = false +    $seen_prefix_sbin = false -  out = nil +    out = nil -  paths.each do |p| -    case p -    when '/usr/bin' -      unless $seen_prefix_bin -        # only show the doctor message if there are any conflicts -        # rationale: a default install should not trigger any brew doctor messages -        conflicts = Dir["#{HOMEBREW_PREFIX}/bin/*"]. -            map{ |fn| File.basename fn }. -            select{ |bn| File.exist? "/usr/bin/#{bn}" } +    paths.each do |p| +      case p +      when "/usr/bin" +        unless $seen_prefix_bin +          # only show the doctor message if there are any conflicts +          # rationale: a default install should not trigger any brew doctor messages +          conflicts = Dir["#{HOMEBREW_PREFIX}/bin/*"]. +                      map { |fn| File.basename fn }. +                      select { |bn| File.exist? "/usr/bin/#{bn}" } -        if conflicts.size > 0 -          out = <<-EOS.undent +          if conflicts.size > 0 +            out = <<-EOS.undent              /usr/bin occurs before #{HOMEBREW_PREFIX}/bin              This means that system-provided programs will be used instead of those              provided by Homebrew. The following tools exist at both paths: @@ -618,59 +615,59 @@ def check_user_path_1              occurs before /usr/bin. Here is a one-liner:                  echo 'export PATH="#{HOMEBREW_PREFIX}/bin:$PATH"' >> #{shell_profile}            EOS +          end          end +      when "#{HOMEBREW_PREFIX}/bin" +        $seen_prefix_bin = true +      when "#{HOMEBREW_PREFIX}/sbin" +        $seen_prefix_sbin = true        end -    when "#{HOMEBREW_PREFIX}/bin" -      $seen_prefix_bin = true -    when "#{HOMEBREW_PREFIX}/sbin" -      $seen_prefix_sbin = true      end +    out    end -  out -end -def check_user_path_2 -  unless $seen_prefix_bin -    <<-EOS.undent +  def check_user_path_2 +    unless $seen_prefix_bin +      <<-EOS.undent        Homebrew's bin was not found in your PATH.        Consider setting the PATH for example like so            echo 'export PATH="#{HOMEBREW_PREFIX}/bin:$PATH"' >> #{shell_profile}      EOS +    end    end -end -def check_user_path_3 -  # Don't complain about sbin not being in the path if it doesn't exist -  sbin = (HOMEBREW_PREFIX+'sbin') -  if sbin.directory? and sbin.children.length > 0 -    unless $seen_prefix_sbin -      <<-EOS.undent +  def check_user_path_3 +    # Don't complain about sbin not being in the path if it doesn't exist +    sbin = (HOMEBREW_PREFIX+"sbin") +    if sbin.directory? && sbin.children.length > 0 +      unless $seen_prefix_sbin +        <<-EOS.undent          Homebrew's sbin was not found in your PATH but you have installed          formulae that put executables in #{HOMEBREW_PREFIX}/sbin.          Consider setting the PATH for example like so              echo 'export PATH="#{HOMEBREW_PREFIX}/sbin:$PATH"' >> #{shell_profile}        EOS +      end      end    end -end -def check_user_curlrc -  if %w[CURL_HOME HOME].any?{|key| ENV[key] and File.exist? "#{ENV[key]}/.curlrc" } then <<-EOS.undent +  def check_user_curlrc +    if %w[CURL_HOME HOME].any? { |key| ENV[key] && File.exist?("#{ENV[key]}/.curlrc") } then <<-EOS.undent      You have a curlrc file      If you have trouble downloading packages with Homebrew, then maybe this      is the problem? If the following command doesn't work, then try removing      your curlrc:        curl http://github.com      EOS +    end    end -end -def check_which_pkg_config -  binary = which 'pkg-config' -  return if binary.nil? +  def check_which_pkg_config +    binary = which "pkg-config" +    return if binary.nil? -  mono_config = Pathname.new("/usr/bin/pkg-config") -  if mono_config.exist? && mono_config.realpath.to_s.include?("Mono.framework") then <<-EOS.undent +    mono_config = Pathname.new("/usr/bin/pkg-config") +    if mono_config.exist? && mono_config.realpath.to_s.include?("Mono.framework") then <<-EOS.undent      You have a non-Homebrew 'pkg-config' in your PATH:        /usr/bin/pkg-config => #{mono_config.realpath} @@ -680,49 +677,47 @@ def check_which_pkg_config      Mono no longer installs this file as of 3.0.4. You should      `sudo rm /usr/bin/pkg-config` and upgrade to the latest version of Mono.      EOS -  elsif binary.to_s != "#{HOMEBREW_PREFIX}/bin/pkg-config" then <<-EOS.undent +    elsif binary.to_s != "#{HOMEBREW_PREFIX}/bin/pkg-config" then <<-EOS.undent      You have a non-Homebrew 'pkg-config' in your PATH:        #{binary}      `./configure` may have problems finding brew-installed packages using      this other pkg-config.      EOS +    end    end -end -def check_for_gettext -  find_relative_paths("lib/libgettextlib.dylib", -                      "lib/libintl.dylib", -                      "include/libintl.h") +  def check_for_gettext +    find_relative_paths("lib/libgettextlib.dylib", +                        "lib/libintl.dylib", +                        "include/libintl.h") -  return if @found.empty? +    return if @found.empty? -  # Our gettext formula will be caught by check_linked_keg_only_brews -  f = Formulary.factory("gettext") rescue nil -  return if f and f.linked_keg.directory? and @found.all? do |path| -    Pathname.new(path).realpath.to_s.start_with? "#{HOMEBREW_CELLAR}/gettext" -  end +    # Our gettext formula will be caught by check_linked_keg_only_brews +    f = Formulary.factory("gettext") rescue nil +    return if f && f.linked_keg.directory? && @found.all? do |path| +      Pathname.new(path).realpath.to_s.start_with? "#{HOMEBREW_CELLAR}/gettext" +    end -  s = <<-EOS.undent_________________________________________________________72 +    s = <<-EOS.undent_________________________________________________________72        gettext files detected at a system prefix        These files can cause compilation and link failures, especially if they        are compiled with improper architectures. Consider removing these files:        EOS -  inject_file_list(@found, s) -end +    inject_file_list(@found, s) +  end -def check_for_iconv -  unless find_relative_paths("lib/libiconv.dylib", "include/iconv.h").empty? -    if (f = Formulary.factory("libiconv") rescue nil) and f.linked_keg.directory? -      if not f.keg_only? then <<-EOS.undent +  def check_for_iconv +    unless find_relative_paths("lib/libiconv.dylib", "include/iconv.h").empty? +      if (f = Formulary.factory("libiconv") rescue nil) && f.linked_keg.directory? +        unless f.keg_only? then <<-EOS.undent          A libiconv formula is installed and linked          This will break stuff. For serious. Unlink it.          EOS +        end        else -        # NOOP because: check_for_linked_keg_only_brews -      end -    else -      s = <<-EOS.undent_________________________________________________________72 +        s = <<-EOS.undent_________________________________________________________72            libiconv files detected at a system prefix other than /usr            Homebrew doesn't provide a libiconv formula, and expects to link against            the system version in /usr. libiconv in other prefixes can cause @@ -732,36 +727,36 @@ def check_for_iconv            tl;dr: delete these files:            EOS -      inject_file_list(@found, s) +        inject_file_list(@found, s) +      end      end    end -end -def check_for_config_scripts -  return unless HOMEBREW_CELLAR.exist? -  real_cellar = HOMEBREW_CELLAR.realpath +  def check_for_config_scripts +    return unless HOMEBREW_CELLAR.exist? +    real_cellar = HOMEBREW_CELLAR.realpath -  scripts = [] +    scripts = [] -  whitelist = %W[ -    /usr/bin /usr/sbin -    /usr/X11/bin /usr/X11R6/bin /opt/X11/bin -    #{HOMEBREW_PREFIX}/bin #{HOMEBREW_PREFIX}/sbin -    /Applications/Server.app/Contents/ServerRoot/usr/bin -    /Applications/Server.app/Contents/ServerRoot/usr/sbin -  ].map(&:downcase) +    whitelist = %W[ +      /usr/bin /usr/sbin +      /usr/X11/bin /usr/X11R6/bin /opt/X11/bin +      #{HOMEBREW_PREFIX}/bin #{HOMEBREW_PREFIX}/sbin +      /Applications/Server.app/Contents/ServerRoot/usr/bin +      /Applications/Server.app/Contents/ServerRoot/usr/sbin +    ].map(&:downcase) -  paths.each do |p| -    next if whitelist.include?(p.downcase) || !File.directory?(p) +    paths.each do |p| +      next if whitelist.include?(p.downcase) || !File.directory?(p) -    realpath = Pathname.new(p).realpath.to_s -    next if realpath.start_with?(real_cellar.to_s, HOMEBREW_CELLAR.to_s) +      realpath = Pathname.new(p).realpath.to_s +      next if realpath.start_with?(real_cellar.to_s, HOMEBREW_CELLAR.to_s) -    scripts += Dir.chdir(p) { Dir["*-config"] }.map { |c| File.join(p, c) } -  end +      scripts += Dir.chdir(p) { Dir["*-config"] }.map { |c| File.join(p, c) } +    end -  unless scripts.empty? -    s = <<-EOS.undent +    unless scripts.empty? +      s = <<-EOS.undent        "config" scripts exist outside your system or Homebrew directories.        `./configure` scripts often look for *-config scripts to determine if        software packages are installed, and what additional flags to use when @@ -773,34 +768,34 @@ def check_for_config_scripts      EOS -    s << scripts.map { |f| "  #{f}" }.join("\n") +      s << scripts.map { |f| "  #{f}" }.join("\n") +    end    end -end -def check_DYLD_vars -  found = ENV.keys.grep(/^DYLD_/) -  unless found.empty? -    s = <<-EOS.undent +  def check_DYLD_vars +    found = ENV.keys.grep(/^DYLD_/) +    unless found.empty? +      s = <<-EOS.undent      Setting DYLD_* vars can break dynamic linking.      Set variables:      EOS -    s << found.map { |e| "    #{e}: #{ENV.fetch(e)}\n" }.join -    if found.include? 'DYLD_INSERT_LIBRARIES' -      s += <<-EOS.undent +      s << found.map { |e| "    #{e}: #{ENV.fetch(e)}\n" }.join +      if found.include? "DYLD_INSERT_LIBRARIES" +        s += <<-EOS.undent        Setting DYLD_INSERT_LIBRARIES can cause Go builds to fail.        Having this set is common if you use this software:          http://asepsis.binaryage.com/        EOS +      end +      s      end -    s    end -end -def check_for_symlinked_cellar -  return unless HOMEBREW_CELLAR.exist? -  if HOMEBREW_CELLAR.symlink? -    <<-EOS.undent +  def check_for_symlinked_cellar +    return unless HOMEBREW_CELLAR.exist? +    if HOMEBREW_CELLAR.symlink? +      <<-EOS.undent        Symlinked Cellars can cause problems.        Your Homebrew Cellar is a symlink: #{HOMEBREW_CELLAR}                        which resolves to: #{HOMEBREW_CELLAR.realpath} @@ -813,25 +808,25 @@ def check_for_symlinked_cellar        cause problems when two formula install to locations that are mapped on top of each        other during the linking step.      EOS +    end    end -end -def check_for_multiple_volumes -  return unless HOMEBREW_CELLAR.exist? -  volumes = Volumes.new +  def check_for_multiple_volumes +    return unless HOMEBREW_CELLAR.exist? +    volumes = Volumes.new -  # Find the volumes for the TMP folder & HOMEBREW_CELLAR -  real_cellar = HOMEBREW_CELLAR.realpath +    # Find the volumes for the TMP folder & HOMEBREW_CELLAR +    real_cellar = HOMEBREW_CELLAR.realpath -  tmp = Pathname.new(Dir.mktmpdir("doctor", HOMEBREW_TEMP)) -  real_temp = tmp.realpath.parent +    tmp = Pathname.new(Dir.mktmpdir("doctor", HOMEBREW_TEMP)) +    real_temp = tmp.realpath.parent -  where_cellar = volumes.which real_cellar -  where_temp = volumes.which real_temp +    where_cellar = volumes.which real_cellar +    where_temp = volumes.which real_temp -  Dir.delete tmp +    Dir.delete tmp -  unless where_cellar == where_temp then <<-EOS.undent +    unless where_cellar == where_temp then <<-EOS.undent      Your Cellar and TEMP directories are on different volumes.      OS X won't move relative symlinks across volumes unless the target file already      exists. Brews known to be affected by this are Git and Narwhal. @@ -839,60 +834,60 @@ def check_for_multiple_volumes      You should set the "HOMEBREW_TEMP" environmental variable to a suitable      directory on the same volume as your Cellar.      EOS +    end    end -end -def check_filesystem_case_sensitive -  volumes = Volumes.new -  case_sensitive_vols = [HOMEBREW_PREFIX, HOMEBREW_REPOSITORY, HOMEBREW_CELLAR, HOMEBREW_TEMP].select do |dir| -    # We select the dir as being case-sensitive if either the UPCASED or the -    # downcased variant is missing. -    # Of course, on a case-insensitive fs, both exist because the os reports so. -    # In the rare situation when the user has indeed a downcased and an upcased -    # dir (e.g. /TMP and /tmp) this check falsely thinks it is case-insensitive -    # but we don't care beacuse: 1. there is more than one dir checked, 2. the -    # check is not vital and 3. we would have to touch files otherwise. -    upcased = Pathname.new(dir.to_s.upcase) -    downcased = Pathname.new(dir.to_s.downcase) -    dir.exist? && !(upcased.exist? && downcased.exist?) -  end.map { |case_sensitive_dir| volumes.get_mounts(case_sensitive_dir) }.uniq -  return if case_sensitive_vols.empty? -  <<-EOS.undent +  def check_filesystem_case_sensitive +    volumes = Volumes.new +    case_sensitive_vols = [HOMEBREW_PREFIX, HOMEBREW_REPOSITORY, HOMEBREW_CELLAR, HOMEBREW_TEMP].select do |dir| +      # We select the dir as being case-sensitive if either the UPCASED or the +      # downcased variant is missing. +      # Of course, on a case-insensitive fs, both exist because the os reports so. +      # In the rare situation when the user has indeed a downcased and an upcased +      # dir (e.g. /TMP and /tmp) this check falsely thinks it is case-insensitive +      # but we don't care beacuse: 1. there is more than one dir checked, 2. the +      # check is not vital and 3. we would have to touch files otherwise. +      upcased = Pathname.new(dir.to_s.upcase) +      downcased = Pathname.new(dir.to_s.downcase) +      dir.exist? && !(upcased.exist? && downcased.exist?) +    end.map { |case_sensitive_dir| volumes.get_mounts(case_sensitive_dir) }.uniq +    return if case_sensitive_vols.empty? +    <<-EOS.undent      The filesystem on #{case_sensitive_vols.join(",")} appears to be case-sensitive.      The default OS X filesystem is case-insensitive. Please report any apparent problems.    EOS -end +  end -def __check_git_version -  # https://help.github.com/articles/https-cloning-errors -  `git --version`.chomp =~ /git version ((?:\d+\.?)+)/ +  def __check_git_version +    # https://help.github.com/articles/https-cloning-errors +    `git --version`.chomp =~ /git version ((?:\d+\.?)+)/ -  if $1 and Version.new($1) < Version.new("1.7.10") then <<-EOS.undent +    if $1 && Version.new($1) < Version.new("1.7.10") then <<-EOS.undent      An outdated version of Git was detected in your PATH.      Git 1.7.10 or newer is required to perform checkouts over HTTPS from GitHub.      Please upgrade: brew upgrade git      EOS +    end    end -end -def check_for_git -  if git? -    __check_git_version -  else <<-EOS.undent +  def check_for_git +    if git? +      __check_git_version +    else <<-EOS.undent      Git could not be found in your PATH.      Homebrew uses Git for several internal functions, and some formulae use Git      checkouts instead of stable tarballs. You may want to install Git:        brew install git      EOS +    end    end -end -def check_git_newline_settings -  return unless git? +  def check_git_newline_settings +    return unless git? -  autocrlf = `git config --get core.autocrlf`.chomp +    autocrlf = `git config --get core.autocrlf`.chomp -  if autocrlf == 'true' then <<-EOS.undent +    if autocrlf == "true" then <<-EOS.undent      Suspicious Git newline settings found.      The detected Git newline settings will cause checkout problems: @@ -902,16 +897,16 @@ def check_git_newline_settings      consider removing these by running:      `git config --global core.autocrlf input`      EOS +    end    end -end -def check_git_origin -  return unless git? && (HOMEBREW_REPOSITORY/'.git').exist? +  def check_git_origin +    return unless git? && (HOMEBREW_REPOSITORY/".git").exist? -  HOMEBREW_REPOSITORY.cd do -    origin = `git config --get remote.origin.url`.strip +    HOMEBREW_REPOSITORY.cd do +      origin = `git config --get remote.origin.url`.strip -    if origin.empty? then <<-EOS.undent +      if origin.empty? then <<-EOS.undent        Missing git origin remote.        Without a correctly configured origin, Homebrew won't update @@ -919,7 +914,7 @@ def check_git_origin          cd #{HOMEBREW_REPOSITORY}          git remote add origin https://github.com/Homebrew/homebrew.git        EOS -    elsif origin !~ /(mxcl|Homebrew)\/homebrew(\.git)?$/ then <<-EOS.undent +      elsif origin !~ /(mxcl|Homebrew)\/homebrew(\.git)?$/ then <<-EOS.undent        Suspicious git origin remote found.        With a non-standard origin, Homebrew won't pull updates from @@ -930,45 +925,45 @@ def check_git_origin        origin remote to point at the main repository, located at:          https://github.com/Homebrew/homebrew.git        EOS +      end      end    end -end -def check_for_autoconf -  return unless MacOS::Xcode.provides_autotools? +  def check_for_autoconf +    return unless MacOS::Xcode.provides_autotools? -  autoconf = which('autoconf') -  safe_autoconfs = %w[/usr/bin/autoconf /Developer/usr/bin/autoconf] -  unless autoconf.nil? or safe_autoconfs.include? autoconf.to_s then <<-EOS.undent +    autoconf = which("autoconf") +    safe_autoconfs = %w[/usr/bin/autoconf /Developer/usr/bin/autoconf] +    unless autoconf.nil? || safe_autoconfs.include?(autoconf.to_s) then <<-EOS.undent      An "autoconf" in your path blocks the Xcode-provided version at:        #{autoconf}      This custom autoconf may cause some Homebrew formulae to fail to compile.      EOS +    end    end -end -def __check_linked_brew f -  f.rack.subdirs.each do |prefix| -    prefix.find do |src| -      next if src == prefix -      dst = HOMEBREW_PREFIX + src.relative_path_from(prefix) -      return true if dst.symlink? && src == dst.resolved_path +  def __check_linked_brew(f) +    f.rack.subdirs.each do |prefix| +      prefix.find do |src| +        next if src == prefix +        dst = HOMEBREW_PREFIX + src.relative_path_from(prefix) +        return true if dst.symlink? && src == dst.resolved_path +      end      end -  end -  false -end +    false +  end -def check_for_linked_keg_only_brews -  return unless HOMEBREW_CELLAR.exist? +  def check_for_linked_keg_only_brews +    return unless HOMEBREW_CELLAR.exist? -  linked = Formula.installed.select { |f| -    f.keg_only? && __check_linked_brew(f) -  } +    linked = Formula.installed.select do |f| +      f.keg_only? && __check_linked_brew(f) +    end -  unless linked.empty? -    s = <<-EOS.undent +    unless linked.empty? +      s = <<-EOS.undent      Some keg-only formula are linked into the Cellar.      Linking a keg-only formula, such as gettext, into the cellar with      `brew link <formula>` will cause other formulae to detect them during @@ -981,37 +976,38 @@ def check_for_linked_keg_only_brews      You may wish to `brew unlink` these brews:      EOS -    linked.each { |f| s << "    #{f.full_name}\n" } -    s +      linked.each { |f| s << "    #{f.full_name}\n" } +      s +    end    end -end -def check_for_other_frameworks -  # Other frameworks that are known to cause problems when present -  %w{expat.framework libexpat.framework libcurl.framework}. -    map{ |frmwrk| "/Library/Frameworks/#{frmwrk}" }. -    select{ |frmwrk| File.exist? frmwrk }. -    map do |frmwrk| <<-EOS.undent +  def check_for_other_frameworks +    # Other frameworks that are known to cause problems when present +    %w[expat.framework libexpat.framework libcurl.framework]. +      map { |frmwrk| "/Library/Frameworks/#{frmwrk}" }. +      select { |frmwrk| File.exist? frmwrk }. +      map do |frmwrk| +        <<-EOS.undent        #{frmwrk} detected        This can be picked up by CMake's build system and likely cause the build to        fail. You may need to move this file out of the way to compile CMake.        EOS -    end.join -end - -def check_tmpdir -  tmpdir = ENV['TMPDIR'] -  "TMPDIR #{tmpdir.inspect} doesn't exist." unless tmpdir.nil? or File.directory? tmpdir -end +      end.join +  end -def check_missing_deps -  return unless HOMEBREW_CELLAR.exist? -  missing = Set.new -  Homebrew.missing_deps(Formula.installed).each_value do |deps| -    missing.merge(deps) +  def check_tmpdir +    tmpdir = ENV["TMPDIR"] +    "TMPDIR #{tmpdir.inspect} doesn't exist." unless tmpdir.nil? || File.directory?(tmpdir)    end -  if missing.any? then <<-EOS.undent +  def check_missing_deps +    return unless HOMEBREW_CELLAR.exist? +    missing = Set.new +    Homebrew.missing_deps(Formula.installed).each_value do |deps| +      missing.merge(deps) +    end + +    if missing.any? then <<-EOS.undent      Some installed formula are missing dependencies.      You should `brew install` the missing dependencies: @@ -1019,54 +1015,54 @@ def check_missing_deps      Run `brew missing` for more details.      EOS +    end    end -end -def check_git_status -  return unless git? -  HOMEBREW_REPOSITORY.cd do -    unless `git status --untracked-files=all --porcelain -- Library/Homebrew/ 2>/dev/null`.chomp.empty? -      <<-EOS.undent_________________________________________________________72 +  def check_git_status +    return unless git? +    HOMEBREW_REPOSITORY.cd do +      unless `git status --untracked-files=all --porcelain -- Library/Homebrew/ 2>/dev/null`.chomp.empty? +        <<-EOS.undent_________________________________________________________72        You have uncommitted modifications to Homebrew        If this a surprise to you, then you should stash these modifications.        Stashing returns Homebrew to a pristine state but can be undone        should you later need to do so for some reason.            cd #{HOMEBREW_LIBRARY} && git stash && git clean -d -f        EOS +      end      end    end -end -def check_for_enthought_python -  if which "enpkg" then <<-EOS.undent +  def check_for_enthought_python +    if which "enpkg" then <<-EOS.undent      Enthought Python was found in your PATH.      This can cause build problems, as this software installs its own      copies of iconv and libxml2 into directories that are picked up by      other build systems.      EOS +    end    end -end -def check_for_library_python -  if File.exist?("/Library/Frameworks/Python.framework") then <<-EOS.undent +  def check_for_library_python +    if File.exist?("/Library/Frameworks/Python.framework") then <<-EOS.undent      Python is installed at /Library/Frameworks/Python.framework      Homebrew only supports building against the System-provided Python or a      brewed Python. In particular, Pythons installed to /Library can interfere      with other software installs.      EOS +    end    end -end -def check_for_old_homebrew_share_python_in_path -  s = '' -  ['', '3'].map do |suffix| -    if paths.include?((HOMEBREW_PREFIX/"share/python#{suffix}").to_s) -      s += "#{HOMEBREW_PREFIX}/share/python#{suffix} is not needed in PATH.\n" +  def check_for_old_homebrew_share_python_in_path +    s = "" +    ["", "3"].map do |suffix| +      if paths.include?((HOMEBREW_PREFIX/"share/python#{suffix}").to_s) +        s += "#{HOMEBREW_PREFIX}/share/python#{suffix} is not needed in PATH.\n" +      end      end -  end -  unless s.empty? -    s += <<-EOS.undent +    unless s.empty? +      s += <<-EOS.undent        Formerly homebrew put Python scripts you installed via `pip` or `pip3`        (or `easy_install`) into that directory above but now it can be removed        from your PATH variable. @@ -1075,103 +1071,103 @@ def check_for_old_homebrew_share_python_in_path        (and #{HOMEBREW_PREFIX}/share/python3) dir and install affected Python packages        anew with `pip install --upgrade`.      EOS +    end    end -end -def check_for_bad_python_symlink -  return unless which "python" -  `python -V 2>&1` =~ /Python (\d+)\./ -  # This won't be the right warning if we matched nothing at all -  return if $1.nil? -  unless $1 == "2" then <<-EOS.undent -    python is symlinked to python#$1 +  def check_for_bad_python_symlink +    return unless which "python" +    `python -V 2>&1` =~ /Python (\d+)\./ +    # This won't be the right warning if we matched nothing at all +    return if $1.nil? +    unless $1 == "2" then <<-EOS.undent +    python is symlinked to python#{$1}      This will confuse build scripts and in general lead to subtle breakage.      EOS +    end    end -end -def check_for_non_prefixed_coreutils -  gnubin = "#{Formulary.factory('coreutils').prefix}/libexec/gnubin" -  if paths.include? gnubin then <<-EOS.undent -    Putting non-prefixed coreutils in your path can cause gmp builds to fail. -    EOS +  def check_for_non_prefixed_coreutils +    gnubin = "#{Formulary.factory("coreutils").prefix}/libexec/gnubin" +    if paths.include? gnubin then <<-EOS.undent +      Putting non-prefixed coreutils in your path can cause gmp builds to fail. +      EOS +    end    end -end -def check_for_non_prefixed_findutils -  default_names = Tab.for_name('findutils').with? "default-names" -  if default_names then <<-EOS.undent -    Putting non-prefixed findutils in your path can cause python builds to fail. -    EOS +  def check_for_non_prefixed_findutils +    default_names = Tab.for_name("findutils").with? "default-names" +    if default_names then <<-EOS.undent +      Putting non-prefixed findutils in your path can cause python builds to fail. +      EOS +    end    end -end -def check_for_pydistutils_cfg_in_home -  if File.exist? "#{ENV['HOME']}/.pydistutils.cfg" then <<-EOS.undent +  def check_for_pydistutils_cfg_in_home +    if File.exist? "#{ENV["HOME"]}/.pydistutils.cfg" then <<-EOS.undent      A .pydistutils.cfg file was found in $HOME, which may cause Python      builds to fail. See:        https://bugs.python.org/issue6138        https://bugs.python.org/issue4655      EOS +    end    end -end -def check_for_outdated_homebrew -  return unless git? -  HOMEBREW_REPOSITORY.cd do -    if File.directory? ".git" -      local = `git rev-parse -q --verify refs/remotes/origin/master`.chomp -      remote = /^([a-f0-9]{40})/.match(`git ls-remote origin refs/heads/master 2>/dev/null`) -      if remote.nil? || local == remote[0] -        return +  def check_for_outdated_homebrew +    return unless git? +    HOMEBREW_REPOSITORY.cd do +      if File.directory? ".git" +        local = `git rev-parse -q --verify refs/remotes/origin/master`.chomp +        remote = /^([a-f0-9]{40})/.match(`git ls-remote origin refs/heads/master 2>/dev/null`) +        if remote.nil? || local == remote[0] +          return +        end        end -    end -    timestamp = if File.directory? ".git" -      `git log -1 --format="%ct" HEAD`.to_i -    else -      HOMEBREW_LIBRARY.mtime.to_i -    end +      timestamp = if File.directory? ".git" +        `git log -1 --format="%ct" HEAD`.to_i +      else +        HOMEBREW_LIBRARY.mtime.to_i +      end -    if Time.now.to_i - timestamp > 60 * 60 * 24 then <<-EOS.undent +      if Time.now.to_i - timestamp > 60 * 60 * 24 then <<-EOS.undent        Your Homebrew is outdated.        You haven't updated for at least 24 hours. This is a long time in brewland!        To update Homebrew, run `brew update`.        EOS +      end      end    end -end -def check_for_unlinked_but_not_keg_only -  return unless HOMEBREW_CELLAR.exist? -  unlinked = HOMEBREW_CELLAR.children.reject do |rack| -    if not rack.directory? -      true -    elsif not (HOMEBREW_REPOSITORY/"Library/LinkedKegs"/rack.basename).directory? -      begin -        Formulary.from_rack(rack).keg_only? -      rescue FormulaUnavailableError, TapFormulaAmbiguityError -        false +  def check_for_unlinked_but_not_keg_only +    return unless HOMEBREW_CELLAR.exist? +    unlinked = HOMEBREW_CELLAR.children.reject do |rack| +      if !rack.directory? +        true +      elsif !(HOMEBREW_REPOSITORY/"Library/LinkedKegs"/rack.basename).directory? +        begin +          Formulary.from_rack(rack).keg_only? +        rescue FormulaUnavailableError, TapFormulaAmbiguityError +          false +        end +      else +        true        end -    else -      true -    end -  end.map{ |pn| pn.basename } +    end.map(&:basename) -  if not unlinked.empty? then <<-EOS.undent +    unless unlinked.empty? then <<-EOS.undent      You have unlinked kegs in your Cellar      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:          #{unlinked * "\n        "}      EOS +    end    end -end    def check_xcode_license_approved      # If the user installs Xcode-only, they have to approve the      # license or no "xc*" tool will work. -    if `/usr/bin/xcrun clang 2>&1` =~ /license/ and not $?.success? then <<-EOS.undent +    if `/usr/bin/xcrun clang 2>&1` =~ /license/ && !$?.success? then <<-EOS.undent        You have not agreed to the Xcode license.        Builds will fail! Agree to the license by opening Xcode.app or running:            sudo xcodebuild -license @@ -1232,7 +1228,7 @@ end        cmd_map[cmd_name] ||= []        cmd_map[cmd_name] << cmd      end -    cmd_map.reject! { |cmd_name, cmd_paths| cmd_paths.size == 1 } +    cmd_map.reject! { |_cmd_name, cmd_paths| cmd_paths.size == 1 }      return if cmd_map.empty?      s = "You have external commands with conflicting names."      cmd_map.each do |cmd_name, cmd_paths| @@ -1251,12 +1247,12 @@ module Homebrew    def doctor      checks = Checks.new -    if ARGV.include? '--list-checks' +    if ARGV.include? "--list-checks"        puts checks.all.sort        exit      end -    inject_dump_stats(checks) if ARGV.switch? 'D' +    inject_dump_stats(checks) if ARGV.switch? "D"      if ARGV.named.empty?        methods = checks.all.sort @@ -1275,7 +1271,7 @@ module Homebrew          puts "No check available by the name: #{method}"          next        end -      unless out.nil? or out.empty? +      unless out.nil? || out.empty?          if first_warning            puts <<-EOS.undent              #{Tty.white}Please note that these warnings are just used to help the Homebrew maintainers @@ -1294,7 +1290,7 @@ module Homebrew      puts "Your system is ready to brew." unless Homebrew.failed?    end -  def inject_dump_stats checks +  def inject_dump_stats(checks)      checks.extend Module.new {        def send(method, *)          time = Time.now @@ -1304,8 +1300,8 @@ module Homebrew        end      }      $times = {} -    at_exit { -      puts $times.sort_by{|k, v| v }.map{|k, v| "#{k}: #{v}"} -    } +    at_exit do +      puts $times.sort_by { |_k, v| v }.map { |k, v| "#{k}: #{v}" } +    end    end  end diff --git a/Library/Homebrew/cmd/edit.rb b/Library/Homebrew/cmd/edit.rb index 534fcba33..c683de0dc 100644 --- a/Library/Homebrew/cmd/edit.rb +++ b/Library/Homebrew/cmd/edit.rb @@ -1,8 +1,8 @@ -require 'formula' +require "formula"  module Homebrew    def edit -    unless (HOMEBREW_REPOSITORY/'.git').directory? +    unless (HOMEBREW_REPOSITORY/".git").directory?        raise <<-EOS.undent          Changes will be lost!          The first time you `brew update', all local changes will be lost, you should @@ -13,11 +13,11 @@ module Homebrew      # If no brews are listed, open the project root in an editor.      if ARGV.named.empty?        editor = File.basename which_editor -      if editor == "mate" or editor == "subl" +      if editor == "mate" || editor == "subl"          # If the user is using TextMate or Sublime Text,          # give a nice project view instead.          exec_editor HOMEBREW_REPOSITORY+"bin/brew", -                    HOMEBREW_REPOSITORY+'README.md', +                    HOMEBREW_REPOSITORY+"README.md",                      HOMEBREW_REPOSITORY+".gitignore",                      *library_folders        else @@ -38,7 +38,7 @@ module Homebrew    def library_folders      Dir["#{HOMEBREW_LIBRARY}/*"].reject do |d| -      case File.basename(d) when 'LinkedKegs', 'Aliases' then true end +      case File.basename(d) when "LinkedKegs", "Aliases" then true end      end    end  end diff --git a/Library/Homebrew/cmd/fetch.rb b/Library/Homebrew/cmd/fetch.rb index 3a7a5147c..edf9c7f76 100644 --- a/Library/Homebrew/cmd/fetch.rb +++ b/Library/Homebrew/cmd/fetch.rb @@ -1,10 +1,10 @@ -require 'formula' +require "formula"  module Homebrew    def fetch      raise FormulaUnspecifiedError if ARGV.named.empty? -    if ARGV.include? '--deps' +    if ARGV.include? "--deps"        bucket = []        ARGV.formulae.each do |f|          bucket << f @@ -15,7 +15,7 @@ module Homebrew        bucket = ARGV.formulae      end -    puts "Fetching: #{bucket * ', '}" if bucket.size > 1 +    puts "Fetching: #{bucket * ", "}" if bucket.size > 1      bucket.each do |f|        f.print_tap_action :verb => "Fetching" @@ -29,7 +29,7 @@ module Homebrew      end    end -  def fetch_bottle? f +  def fetch_bottle?(f)      return true if ARGV.force_bottle? && f.bottle      return false unless f.bottle && f.pour_bottle?      return false if ARGV.build_from_source? || ARGV.build_bottle? @@ -41,10 +41,10 @@ module Homebrew        return false      end      return false unless f.bottle.compatible_cellar? -    return true +    true    end -  def fetch_resource r +  def fetch_resource(r)      puts "Resource: #{r.name}"      fetch_fetchable r    rescue ChecksumMismatchError => e @@ -52,14 +52,14 @@ module Homebrew      opoo "Resource #{r.name} reports different #{e.hash_type}: #{e.expected}"    end -  def fetch_formula f +  def fetch_formula(f)      fetch_fetchable f    rescue ChecksumMismatchError => e      retry if retry_fetch? f      opoo "Formula reports different #{e.hash_type}: #{e.expected}"    end -  def fetch_patch p +  def fetch_patch(p)      fetch_fetchable p    rescue ChecksumMismatchError => e      Homebrew.failed = true @@ -68,7 +68,7 @@ module Homebrew    private -  def retry_fetch? f +  def retry_fetch?(f)      @fetch_failed ||= Set.new      if ARGV.include?("--retry") && @fetch_failed.add?(f)        ohai "Retrying download" @@ -80,7 +80,7 @@ module Homebrew      end    end -  def fetch_fetchable f +  def fetch_fetchable(f)      f.clear_cache if ARGV.force?      already_fetched = f.cached_download.exist? diff --git a/Library/Homebrew/cmd/gist-logs.rb b/Library/Homebrew/cmd/gist-logs.rb index ffd02ab52..db89f8e2e 100644 --- a/Library/Homebrew/cmd/gist-logs.rb +++ b/Library/Homebrew/cmd/gist-logs.rb @@ -1,11 +1,11 @@ -require 'formula' -require 'cmd/config' -require 'net/http' -require 'net/https' -require 'stringio' +require "formula" +require "cmd/config" +require "net/http" +require "net/https" +require "stringio"  module Homebrew -  def gistify_logs f +  def gistify_logs(f)      files = load_logs(f.logs)      s = StringIO.new @@ -23,12 +23,12 @@ module Homebrew      url = create_gist(files) -    if ARGV.include?('--new-issue') || ARGV.switch?('n') +    if ARGV.include?("--new-issue") || ARGV.switch?("n")        auth = :AUTH_TOKEN        unless HOMEBREW_GITHUB_API_TOKEN -        puts 'You can create a personal access token: https://github.com/settings/tokens' -        puts 'and then set HOMEBREW_GITHUB_API_TOKEN as authentication method.' +        puts "You can create a personal access token: https://github.com/settings/tokens" +        puts "and then set HOMEBREW_GITHUB_API_TOKEN as authentication method."          puts          auth = :AUTH_BASIC @@ -40,19 +40,19 @@ module Homebrew      puts url if url    end -  #Hack for ruby < 1.9.3 +  # Hack for ruby < 1.9.3    def noecho_gets -    system 'stty -echo' +    system "stty -echo"      result = $stdin.gets -    system 'stty echo' +    system "stty echo"      puts      result    end -  def login request -    print 'GitHub User: ' +  def login(request) +    print "GitHub User: "      user = $stdin.gets.chomp -    print 'Password: ' +    print "Password: "      password = noecho_gets.chomp      puts      request.basic_auth(user, password) @@ -64,23 +64,23 @@ module Homebrew        contents = file.size? ? file.read : "empty log"        logs[file.basename.to_s] = { :content => contents }      end if dir.exist? -    raise 'No logs.' if logs.empty? +    raise "No logs." if logs.empty?      logs    end -  def create_gist files -    post("/gists", { "public" => true, "files" => files })["html_url"] +  def create_gist(files) +    post("/gists", "public" => true, "files" => files)["html_url"]    end -  def new_issue repo, title, body, auth +  def new_issue(repo, title, body, auth)      post("/repos/#{repo}/issues", { "title" => title, "body" => body }, auth)["html_url"]    end    def http      @http ||= begin -      uri = URI.parse('https://api.github.com') -      p = ENV['http_proxy'] ? URI.parse(ENV['http_proxy']) : nil -      if p.class == URI::HTTP or p.class == URI::HTTPS +      uri = URI.parse("https://api.github.com") +      p = ENV["http_proxy"] ? URI.parse(ENV["http_proxy"]) : nil +      if p.class == URI::HTTP || p.class == URI::HTTPS          @http = Net::HTTP.new(uri.host, uri.port, p.host, p.port, p.user, p.password)        else          @http = Net::HTTP.new(uri.host, uri.port) @@ -94,10 +94,10 @@ module Homebrew      headers = {        "User-Agent"   => HOMEBREW_USER_AGENT,        "Accept"       => "application/vnd.github.v3+json", -      "Content-Type" => "application/json", +      "Content-Type" => "application/json"      } -    if auth == :AUTH_TOKEN || (auth == nil && HOMEBREW_GITHUB_API_TOKEN) +    if auth == :AUTH_TOKEN || (auth.nil? && HOMEBREW_GITHUB_API_TOKEN)        headers["Authorization"] = "token #{HOMEBREW_GITHUB_API_TOKEN}"      end diff --git a/Library/Homebrew/cmd/help.rb b/Library/Homebrew/cmd/help.rb index 858ccaf85..474bda0d6 100644 --- a/Library/Homebrew/cmd/help.rb +++ b/Library/Homebrew/cmd/help.rb @@ -35,6 +35,7 @@ module Homebrew    def help      puts HOMEBREW_HELP    end +    def help_s      HOMEBREW_HELP    end diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb index 332168ee7..3117ebf2c 100644 --- a/Library/Homebrew/cmd/info.rb +++ b/Library/Homebrew/cmd/info.rb @@ -12,7 +12,7 @@ module Homebrew      # awhile around for compatibility      if ARGV.json == "v1"        print_json -    elsif ARGV.flag? '--github' +    elsif ARGV.flag? "--github"        exec_browser(*ARGV.formulae.map { |f| github_info(f) })      else        print_info @@ -26,7 +26,7 @@ module Homebrew          puts "#{count} keg#{plural(count)}, #{HOMEBREW_CELLAR.abv}"        end      else -      ARGV.named.each_with_index do |f,i| +      ARGV.named.each_with_index do |f, i|          puts unless i == 0          begin            info_formula Formulary.factory(f) @@ -44,13 +44,13 @@ module Homebrew    def print_json      ff = if ARGV.include? "--all" -           Formula -         elsif ARGV.include? "--installed" -           Formula.installed -         else -           ARGV.formulae -         end -    json = ff.map {|f| f.to_hash} +      Formula +    elsif ARGV.include? "--installed" +      Formula.installed +    else +      ARGV.formulae +    end +    json = ff.map(&:to_hash)      puts Utils::JSON.dump(json)    end @@ -62,7 +62,7 @@ module Homebrew      end    end -  def github_info f +  def github_info(f)      if f.tap?        user, repo = f.tap.split("/", 2)        path = f.path.relative_path_from(HOMEBREW_LIBRARY.join("Taps", f.tap)) @@ -76,7 +76,7 @@ module Homebrew      end    end -  def info_formula f +  def info_formula(f)      specs = []      if stable = f.stable @@ -93,7 +93,7 @@ module Homebrew      specs << "HEAD" if f.head -    puts "#{f.full_name}: #{specs*', '}#{' (pinned)' if f.pinned?}" +    puts "#{f.full_name}: #{specs*", "}#{" (pinned)" if f.pinned?}"      puts f.desc if f.desc @@ -107,12 +107,12 @@ module Homebrew      end      conflicts = f.conflicts.map(&:name).sort! -    puts "Conflicts with: #{conflicts*', '}" unless conflicts.empty? +    puts "Conflicts with: #{conflicts*", "}" unless conflicts.empty?      if f.rack.directory?        kegs = f.rack.subdirs.map { |keg| Keg.new(keg) }.sort_by(&:version)        kegs.each do |keg| -        puts "#{keg} (#{keg.abv})#{' *' if keg.linked?}" +        puts "#{keg} (#{keg.abv})#{" *" if keg.linked?}"          tab = Tab.for_keg(keg).to_s          puts "  #{tab}" unless tab.empty?        end @@ -125,7 +125,7 @@ module Homebrew      unless f.deps.empty?        ohai "Dependencies" -      %w{build required recommended optional}.map do |type| +      %w[build required recommended optional].map do |type|          deps = f.deps.send(type).uniq          puts "#{type.capitalize}: #{decorate_dependencies deps}" unless deps.empty?        end @@ -137,10 +137,10 @@ module Homebrew      end      c = Caveats.new(f) -    ohai 'Caveats', c.caveats unless c.empty? +    ohai "Caveats", c.caveats unless c.empty?    end -  def decorate_dependencies dependencies +  def decorate_dependencies(dependencies)      # necessary for 1.8.7 unicode handling since many installs are on 1.8.7      tick = ["2714".hex].pack("U*")      cross = ["2718".hex].pack("U*") @@ -153,7 +153,7 @@ module Homebrew          color = Tty.red          symbol = cross        end -      if ENV['HOMEBREW_NO_EMOJI'] +      if ENV["HOMEBREW_NO_EMOJI"]          colored_dep = "#{color}#{dep}"        else          colored_dep = "#{dep} #{color}#{symbol}" diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index 124fa0527..7091b9bfc 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -9,7 +9,7 @@ module Homebrew    def install      raise FormulaUnspecifiedError if ARGV.named.empty? -    if ARGV.include? '--head' +    if ARGV.include? "--head"        raise "Specify `--HEAD` in uppercase to build from trunk."      end @@ -40,7 +40,7 @@ module Homebrew        ARGV.formulae.each do |f|          # head-only without --HEAD is an error -        if not ARGV.build_head? and f.stable.nil? and f.devel.nil? +        if !ARGV.build_head? && f.stable.nil? && f.devel.nil?            raise <<-EOS.undent            #{f.full_name} is a head-only formula            Install with `brew install --HEAD #{f.full_name}` @@ -48,30 +48,30 @@ module Homebrew          end          # devel-only without --devel is an error -        if not ARGV.build_devel? and f.stable.nil? and f.head.nil? +        if !ARGV.build_devel? && f.stable.nil? && f.head.nil?            raise <<-EOS.undent            #{f.full_name} is a devel-only formula            Install with `brew install --devel #{f.full_name}`            EOS          end -        if ARGV.build_stable? and f.stable.nil? +        if ARGV.build_stable? && f.stable.nil?            raise "#{f.full_name} has no stable download, please choose --devel or --HEAD"          end          # --HEAD, fail with no head defined -        if ARGV.build_head? and f.head.nil? +        if ARGV.build_head? && f.head.nil?            raise "No head is defined for #{f.full_name}"          end          # --devel, fail with no devel defined -        if ARGV.build_devel? and f.devel.nil? +        if ARGV.build_devel? && f.devel.nil?            raise "No devel block is defined for #{f.full_name}"          end          if f.installed?            msg = "#{f.full_name}-#{f.installed_version} already installed" -          msg << ", it's just not linked" unless f.linked_keg.symlink? or f.keg_only? +          msg << ", it's just not linked" unless f.linked_keg.symlink? || f.keg_only?            opoo msg          else            formulae << f @@ -107,17 +107,18 @@ module Homebrew    end    def check_ppc -    case Hardware::CPU.type when :ppc, :dunno +    case Hardware::CPU.type +    when :ppc, :dunno        abort <<-EOS.undent          Sorry, Homebrew does not support your computer's CPU architecture.          For PPC support, see: https://github.com/mistydemeo/tigerbrew -        EOS +      EOS      end    end    def check_writable_install_location -    raise "Cannot write to #{HOMEBREW_CELLAR}" if HOMEBREW_CELLAR.exist? and not HOMEBREW_CELLAR.writable_real? -    raise "Cannot write to #{HOMEBREW_PREFIX}" unless HOMEBREW_PREFIX.writable_real? or HOMEBREW_PREFIX.to_s == '/usr/local' +    raise "Cannot write to #{HOMEBREW_CELLAR}" if HOMEBREW_CELLAR.exist? && !HOMEBREW_CELLAR.writable_real? +    raise "Cannot write to #{HOMEBREW_PREFIX}" unless HOMEBREW_PREFIX.writable_real? || HOMEBREW_PREFIX.to_s == "/usr/local"    end    def check_xcode @@ -143,7 +144,7 @@ module Homebrew    end    def check_cellar -    FileUtils.mkdir_p HOMEBREW_CELLAR if not File.exist? HOMEBREW_CELLAR +    FileUtils.mkdir_p HOMEBREW_CELLAR unless File.exist? HOMEBREW_CELLAR    rescue      raise <<-EOS.undent        Could not create #{HOMEBREW_CELLAR} @@ -158,7 +159,7 @@ module Homebrew      check_cellar    end -  def install_formula f +  def install_formula(f)      f.print_tap_action      fi = FormulaInstaller.new(f) diff --git a/Library/Homebrew/cmd/irb.rb b/Library/Homebrew/cmd/irb.rb index 3e6102dd2..1a272a684 100644 --- a/Library/Homebrew/cmd/irb.rb +++ b/Library/Homebrew/cmd/irb.rb @@ -1,6 +1,6 @@ -require 'formula' -require 'keg' -require 'irb' +require "formula" +require "keg" +require "irb"  class Symbol    def f(*args) diff --git a/Library/Homebrew/cmd/leaves.rb b/Library/Homebrew/cmd/leaves.rb index 335872309..48be4b70c 100644 --- a/Library/Homebrew/cmd/leaves.rb +++ b/Library/Homebrew/cmd/leaves.rb @@ -1,6 +1,6 @@ -require 'formula' -require 'tab' -require 'set' +require "formula" +require "tab" +require "set"  module Homebrew    def leaves diff --git a/Library/Homebrew/cmd/link.rb b/Library/Homebrew/cmd/link.rb index 98b10cb0f..9ff449e7f 100644 --- a/Library/Homebrew/cmd/link.rb +++ b/Library/Homebrew/cmd/link.rb @@ -1,4 +1,4 @@ -require 'ostruct' +require "ostruct"  module Homebrew    def link @@ -6,7 +6,7 @@ module Homebrew      mode = OpenStruct.new -    mode.overwrite = true if ARGV.include? '--overwrite' +    mode.overwrite = true if ARGV.include? "--overwrite"      mode.dry_run = true if ARGV.dry_run?      ARGV.kegs.each do |keg| diff --git a/Library/Homebrew/cmd/linkapps.rb b/Library/Homebrew/cmd/linkapps.rb index b21cbcd1f..f484d9850 100644 --- a/Library/Homebrew/cmd/linkapps.rb +++ b/Library/Homebrew/cmd/linkapps.rb @@ -1,5 +1,5 @@  # Links any Applications (.app) found in installed prefixes to /Applications -require 'keg' +require "keg"  module Homebrew    def linkapps @@ -16,7 +16,7 @@ module Homebrew        kegs = racks.map do |rack|          keg = rack.subdirs.map { |d| Keg.new(d) }          next if keg.empty? -        keg.detect(&:linked?) || keg.max {|a,b| a.version <=> b.version} +        keg.detect(&:linked?) || keg.max { |a, b| a.version <=> b.version }        end      else        kegs = ARGV.kegs diff --git a/Library/Homebrew/cmd/list.rb b/Library/Homebrew/cmd/list.rb index 81a5caf4d..53985d113 100644 --- a/Library/Homebrew/cmd/list.rb +++ b/Library/Homebrew/cmd/list.rb @@ -3,9 +3,8 @@ require "formula"  module Homebrew    def list -      # Use of exec means we don't explicitly exit -    list_unbrewed if ARGV.flag? '--unbrewed' +    list_unbrewed if ARGV.flag? "--unbrewed"      # Unbrewed uses the PREFIX, which will exist      # Things below use the CELLAR, which doesn't until the first formula is installed. @@ -14,7 +13,7 @@ module Homebrew        return      end -    if ARGV.include? '--pinned' or ARGV.include? '--versions' +    if ARGV.include?("--pinned") || ARGV.include?("--versions")        filtered_list      elsif ARGV.named.empty?        if ARGV.include? "--full-name" @@ -29,13 +28,13 @@ module Homebrew          end          puts_columns full_names        else -        ENV['CLICOLOR'] = nil -        exec 'ls', *ARGV.options_only << HOMEBREW_CELLAR +        ENV["CLICOLOR"] = nil +        exec "ls", *ARGV.options_only << HOMEBREW_CELLAR        end -    elsif ARGV.verbose? or not $stdout.tty? +    elsif ARGV.verbose? || !$stdout.tty?        exec "find", *ARGV.kegs.map(&:to_s) + %w[-not -type d -print]      else -      ARGV.kegs.each{ |keg| PrettyListing.new keg } +      ARGV.kegs.each { |keg| PrettyListing.new keg }      end    end @@ -65,8 +64,8 @@ module Homebrew      # Exclude the repository and cache, if they are located under the prefix      dirs.delete HOMEBREW_CACHE.relative_path_from(HOMEBREW_PREFIX).to_s      dirs.delete HOMEBREW_REPOSITORY.relative_path_from(HOMEBREW_PREFIX).to_s -    dirs.delete 'etc' -    dirs.delete 'var' +    dirs.delete "etc" +    dirs.delete "var"      args = dirs + %w[-type f (]      args.concat UNBREWED_EXCLUDE_FILES.map { |f| %W[! -name #{f}] }.flatten @@ -74,46 +73,46 @@ module Homebrew      args.concat %w[)]      cd HOMEBREW_PREFIX -    exec 'find', *args +    exec "find", *args    end    def filtered_list      names = if ARGV.named.empty?        HOMEBREW_CELLAR.subdirs      else -      ARGV.named.map{ |n| HOMEBREW_CELLAR+n }.select{ |pn| pn.exist? } +      ARGV.named.map { |n| HOMEBREW_CELLAR+n }.select(&:exist?)      end -    if ARGV.include? '--pinned' +    if ARGV.include? "--pinned"        pinned_versions = {}        names.each do |d|          keg_pin = (HOMEBREW_LIBRARY/"PinnedKegs"/d.basename.to_s) -        if keg_pin.exist? or keg_pin.symlink? +        if keg_pin.exist? || keg_pin.symlink?            pinned_versions[d] = keg_pin.readlink.basename.to_s          end        end        pinned_versions.each do |d, version| -        puts "#{d.basename}".concat(ARGV.include?('--versions') ? " #{version}" : '') +        puts "#{d.basename}".concat(ARGV.include?("--versions") ? " #{version}" : "")        end      else # --versions without --pinned        names.each do |d|          versions = d.subdirs.map { |pn| pn.basename.to_s } -        next if ARGV.include?('--multiple') && versions.count < 2 -        puts "#{d.basename} #{versions*' '}" +        next if ARGV.include?("--multiple") && versions.count < 2 +        puts "#{d.basename} #{versions*" "}"        end      end    end  end  class PrettyListing -  def initialize path +  def initialize(path)      Pathname.new(path).children.sort_by { |p| p.to_s.downcase }.each do |pn|        case pn.basename.to_s -      when 'bin', 'sbin' +      when "bin", "sbin"          pn.find { |pnn| puts pnn unless pnn.directory? } -      when 'lib' +      when "lib"          print_dir pn do |pnn|            # dylibs have multiple symlinks and we don't care about them -          (pnn.extname == '.dylib' or pnn.extname == '.pc') and not pnn.symlink? +          (pnn.extname == ".dylib" || pnn.extname == ".pc") && !pnn.symlink?          end        else          if pn.directory? @@ -129,19 +128,19 @@ class PrettyListing      end    end -  def print_dir root +  def print_dir(root)      dirs = []      remaining_root_files = [] -    other = '' +    other = ""      root.children.sort.each do |pn|        if pn.directory?          dirs << pn        elsif block_given? and yield pn          puts pn -        other = 'other ' +        other = "other "        else -        remaining_root_files << pn unless pn.basename.to_s == '.DS_Store' +        remaining_root_files << pn unless pn.basename.to_s == ".DS_Store"        end      end @@ -154,7 +153,7 @@ class PrettyListing      print_remaining_files remaining_root_files, root, other    end -  def print_remaining_files files, root, other = '' +  def print_remaining_files(files, root, other = "")      case files.length      when 0        # noop diff --git a/Library/Homebrew/cmd/man.rb b/Library/Homebrew/cmd/man.rb index bba81efa5..5c4abbe39 100644 --- a/Library/Homebrew/cmd/man.rb +++ b/Library/Homebrew/cmd/man.rb @@ -1,4 +1,4 @@ -require 'formula' +require "formula"  module Homebrew    SOURCE_PATH=HOMEBREW_REPOSITORY/"Library/Homebrew/manpages" diff --git a/Library/Homebrew/cmd/missing.rb b/Library/Homebrew/cmd/missing.rb index 9c675b8fe..14d76f54e 100644 --- a/Library/Homebrew/cmd/missing.rb +++ b/Library/Homebrew/cmd/missing.rb @@ -1,8 +1,8 @@ -require 'formula' -require 'tab' +require "formula" +require "tab"  module Homebrew -  def missing_deps ff +  def missing_deps(ff)      missing = {}      ff.each do |f|        missing_deps = f.recursive_dependencies do |dependent, dep| @@ -36,7 +36,7 @@ module Homebrew      missing_deps(ff) do |name, missing|        print "#{name}: " if ff.size > 1 -      puts "#{missing * ' '}" +      puts "#{missing * " "}"      end    end  end diff --git a/Library/Homebrew/cmd/options.rb b/Library/Homebrew/cmd/options.rb index 4e7fe0a42..9db4f2f9c 100644 --- a/Library/Homebrew/cmd/options.rb +++ b/Library/Homebrew/cmd/options.rb @@ -1,10 +1,10 @@ -require 'formula' +require "formula"  module Homebrew    def options -    if ARGV.include? '--all' +    if ARGV.include? "--all"        puts_options Formula.to_a -    elsif ARGV.include? '--installed' +    elsif ARGV.include? "--installed"        puts_options Formula.installed      else        raise FormulaUnspecifiedError if ARGV.named.empty? @@ -15,7 +15,7 @@ module Homebrew    def puts_options(formulae)      formulae.each do |f|        next if f.options.empty? -      if ARGV.include? '--compact' +      if ARGV.include? "--compact"          puts f.options.as_flags.sort * " "        else          puts f.full_name if formulae.length > 1 @@ -25,7 +25,7 @@ module Homebrew      end    end -  def dump_options_for_formula f +  def dump_options_for_formula(f)      f.options.sort_by(&:flag).each do |opt|        puts "#{opt.flag}\n\t#{opt.description}"      end diff --git a/Library/Homebrew/cmd/outdated.rb b/Library/Homebrew/cmd/outdated.rb index caf4b2cf7..673ea966c 100644 --- a/Library/Homebrew/cmd/outdated.rb +++ b/Library/Homebrew/cmd/outdated.rb @@ -1,5 +1,5 @@ -require 'formula' -require 'keg' +require "formula" +require "keg"  module Homebrew    def outdated @@ -40,7 +40,7 @@ module Homebrew      outdated_brews(formulae) do |f, versions|        if verbose -        puts "#{f.full_name} (#{versions*', '} < #{f.pkg_version})" +        puts "#{f.full_name} (#{versions*", "} < #{f.pkg_version})"        else          puts f.full_name        end @@ -50,9 +50,9 @@ module Homebrew    def print_outdated_json(formulae)      json = []      outdated = outdated_brews(formulae) do |f, versions| -      json << {:name => f.full_name, -               :installed_versions => versions.collect(&:to_s), -               :current_version => f.pkg_version.to_s} +      json << { :name => f.full_name, +                :installed_versions => versions.collect(&:to_s), +                :current_version => f.pkg_version.to_s }      end      puts Utils::JSON.dump(json) diff --git a/Library/Homebrew/cmd/pin.rb b/Library/Homebrew/cmd/pin.rb index bc8fcad5d..0b6dfa30b 100644 --- a/Library/Homebrew/cmd/pin.rb +++ b/Library/Homebrew/cmd/pin.rb @@ -1,4 +1,4 @@ -require 'formula' +require "formula"  module Homebrew    def pin diff --git a/Library/Homebrew/cmd/prune.rb b/Library/Homebrew/cmd/prune.rb index 6fa47c11c..d6ece8305 100644 --- a/Library/Homebrew/cmd/prune.rb +++ b/Library/Homebrew/cmd/prune.rb @@ -1,5 +1,5 @@ -require 'keg' -require 'cmd/tap' +require "keg" +require "cmd/tap"  module Homebrew    def prune @@ -44,7 +44,7 @@ module Homebrew        n, d = ObserverPathnameExtension.counts        print "Pruned #{n} symbolic links "        print "and #{d} directories " if d > 0 -      puts  "from #{HOMEBREW_PREFIX}" +      puts "from #{HOMEBREW_PREFIX}"      end unless ARGV.dry_run?    end  end diff --git a/Library/Homebrew/cmd/pull.rb b/Library/Homebrew/cmd/pull.rb index 983278ab2..809e4b5a4 100644 --- a/Library/Homebrew/cmd/pull.rb +++ b/Library/Homebrew/cmd/pull.rb @@ -1,33 +1,33 @@  # Gets a patch from a GitHub commit or pull request and applies it to Homebrew.  # Optionally, installs it too. -require 'utils' -require 'formula' -require 'cmd/tap' +require "utils" +require "formula" +require "cmd/tap"  module Homebrew    HOMEBREW_PULL_API_REGEX = %r{https://api\.github\.com/repos/([\w-]+)/homebrew(-[\w-]+)?/pulls/(\d+)} -  def tap arg -    match = arg.match(%r[homebrew-([\w-]+)/]) +  def tap(arg) +    match = arg.match(%r{homebrew-([\w-]+)/})      match[1].downcase if match    end -  def pull_url url +  def pull_url(url)      # GitHub provides commits/pull-requests raw patches using this URL. -    url += '.patch' +    url += ".patch"      patchpath = HOMEBREW_CACHE + File.basename(url) -    curl url, '-o', patchpath +    curl url, "-o", patchpath -    ohai 'Applying patch' +    ohai "Applying patch"      patch_args = []      # Normally we don't want whitespace errors, but squashing them can break      # patches so an option is provided to skip this step. -    if ARGV.include? '--ignore-whitespace' or ARGV.include? '--clean' -      patch_args << '--whitespace=nowarn' +    if ARGV.include?("--ignore-whitespace") || ARGV.include?("--clean") +      patch_args << "--whitespace=nowarn"      else -      patch_args << '--whitespace=fix' +      patch_args << "--whitespace=fix"      end      # Fall back to three-way merge if patch does not apply cleanly @@ -35,13 +35,13 @@ module Homebrew      patch_args << patchpath      begin -      safe_system 'git', 'am', *patch_args +      safe_system "git", "am", *patch_args      rescue ErrorDuringExecution        if ARGV.include? "--resolve"          odie "Patch failed to apply: try to resolve it."        else -        system 'git', 'am', '--abort' -        odie 'Patch failed to apply: aborted.' +        system "git", "am", "--abort" +        odie "Patch failed to apply: aborted."        end      ensure        patchpath.unlink @@ -50,11 +50,11 @@ module Homebrew    def pull      if ARGV.empty? -      odie 'This command requires at least one argument containing a URL or pull request number' +      odie "This command requires at least one argument containing a URL or pull request number"      end -    if ARGV[0] == '--rebase' -      odie 'You meant `git pull --rebase`.' +    if ARGV[0] == "--rebase" +      odie "You meant `git pull --rebase`."      end      ARGV.named.each do |arg| @@ -64,7 +64,7 @@ module Homebrew        elsif (testing_match = arg.match %r{brew.sh/job/Homebrew%20Testing/(\d+)/})          _, testing_job = *testing_match          url = "https://github.com/Homebrew/homebrew/compare/master...BrewTestBot:testing-#{testing_job}" -        odie "Testing URLs require `--bottle`!" unless ARGV.include?('--bottle') +        odie "Testing URLs require `--bottle`!" unless ARGV.include?("--bottle")        else          if (api_match = arg.match HOMEBREW_PULL_API_REGEX)            _, user, tap, pull = *api_match @@ -126,19 +126,19 @@ module Homebrew          end        end -      unless ARGV.include? '--bottle' +      unless ARGV.include? "--bottle"          changed_formulae.each do |f|            next unless f.bottle            opoo "#{f.full_name} has a bottle: do you need to update it with --bottle?"          end        end -      if issue && !ARGV.include?('--clean') +      if issue && !ARGV.include?("--clean")          ohai "Patch closes issue ##{issue}"          message = `git log HEAD^.. --format=%B` -        if ARGV.include? '--bump' -          odie 'Can only bump one changed formula' unless changed_formulae.length == 1 +        if ARGV.include? "--bump" +          odie "Can only bump one changed formula" unless changed_formulae.length == 1            formula = changed_formulae.first            subject = "#{formula.name} #{formula.version}"            ohai "New bump commit subject: #{subject}" @@ -149,7 +149,7 @@ module Homebrew          # If this is a pull request, append a close message.          unless message.include? "Closes ##{issue}."            message += "\nCloses ##{issue}." -          safe_system 'git', 'commit', '--amend', '--signoff', '--allow-empty', '-q', '-m', message +          safe_system "git", "commit", "--amend", "--signoff", "--allow-empty", "-q", "-m", message          end        end @@ -202,14 +202,14 @@ module Homebrew          end        end -      ohai 'Patch changed:' +      ohai "Patch changed:"        safe_system "git", "diff-tree", "-r", "--stat", revision, "HEAD" -      if ARGV.include? '--install' +      if ARGV.include? "--install"          changed_formulae.each do |f|            ohai "Installing #{f.full_name}" -          install = f.installed? ? 'upgrade' : 'install' -          safe_system 'brew', install, '--debug', f.full_name +          install = f.installed? ? "upgrade" : "install" +          safe_system "brew", install, "--debug", f.full_name          end        end      end diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb index 1bdaf373f..bf49282ae 100644 --- a/Library/Homebrew/cmd/reinstall.rb +++ b/Library/Homebrew/cmd/reinstall.rb @@ -5,7 +5,7 @@ module Homebrew      ARGV.resolved_formulae.each { |f| reinstall_formula(f) }    end -  def reinstall_formula f +  def reinstall_formula(f)      tab = Tab.for_formula(f)      options = tab.used_options | f.build.used_options @@ -38,12 +38,12 @@ module Homebrew      backup_path(keg).rmtree if backup_path(keg).exist?    end -  def backup keg +  def backup(keg)      keg.unlink      keg.rename backup_path(keg)    end -  def restore_backup keg, formula +  def restore_backup(keg, formula)      path = backup_path(keg)      if path.directory?        path.rename keg @@ -51,7 +51,7 @@ module Homebrew      end    end -  def backup_path path +  def backup_path(path)      Pathname.new "#{path}.reinstall"    end  end diff --git a/Library/Homebrew/cmd/search.rb b/Library/Homebrew/cmd/search.rb index 8812d093b..c3d1597c3 100644 --- a/Library/Homebrew/cmd/search.rb +++ b/Library/Homebrew/cmd/search.rb @@ -1,27 +1,26 @@ -require 'formula' -require 'blacklist' -require 'utils' -require 'thread' +require "formula" +require "blacklist" +require "utils" +require "thread"  require "official_taps"  module Homebrew -    SEARCH_ERROR_QUEUE = Queue.new    def search -    if ARGV.include? '--macports' +    if ARGV.include? "--macports"        exec_browser "https://www.macports.org/ports.php?by=name&substr=#{ARGV.next}" -    elsif ARGV.include? '--fink' +    elsif ARGV.include? "--fink"        exec_browser "http://pdb.finkproject.org/pdb/browse.php?summary=#{ARGV.next}" -    elsif ARGV.include? '--debian' +    elsif ARGV.include? "--debian"        exec_browser "https://packages.debian.org/search?keywords=#{ARGV.next}&searchon=names&suite=all§ion=all" -    elsif ARGV.include? '--opensuse' +    elsif ARGV.include? "--opensuse"        exec_browser "https://software.opensuse.org/search?q=#{ARGV.next}" -    elsif ARGV.include? '--fedora' +    elsif ARGV.include? "--fedora"        exec_browser "https://admin.fedoraproject.org/pkgdb/packages/%2A#{ARGV.next}%2A/" -    elsif ARGV.include? '--ubuntu' +    elsif ARGV.include? "--ubuntu"        exec_browser "http://packages.ubuntu.com/search?keywords=#{ARGV.next}&searchon=names&suite=all§ion=all" -    elsif ARGV.include? '--desc' +    elsif ARGV.include? "--desc"        query = ARGV.next        rx = query_regexp(query)        Formula.each do |formula| @@ -48,7 +47,7 @@ module Homebrew        local_results = search_formulae(rx)        puts_columns(local_results) -      if not query.empty? and $stdout.tty? and msg = blacklisted?(query) +      if !query.empty? && $stdout.tty? && msg = blacklisted?(query)          unless local_results.empty?            puts            puts "If you meant #{query.inspect} precisely:" @@ -61,7 +60,7 @@ module Homebrew        puts_columns(tap_results)        count = local_results.length + tap_results.length -      if count == 0 and not blacklisted? query +      if count == 0 and !blacklisted? query          puts "No formula found for #{query.inspect}."          begin            GitHub.print_pull_requests_matching(query) @@ -73,7 +72,7 @@ module Homebrew      metacharacters = %w[\\ | ( ) [ ] { } ^ $ * + ? .]      bad_regex = metacharacters.any? do |char|        ARGV.any? do |arg| -        arg.include?(char) && !arg.start_with?('/') +        arg.include?(char) && !arg.start_with?("/")        end      end      if ARGV.any? && bad_regex @@ -84,7 +83,7 @@ module Homebrew    end    SEARCHABLE_TAPS = OFFICIAL_TAPS.map { |tap| ["Homebrew", tap] } + [ -    %w{Caskroom cask}, +    %w[Caskroom cask]    ]    def query_regexp(query) @@ -102,7 +101,7 @@ module Homebrew      end    end -  def search_tap user, repo, rx +  def search_tap(user, repo, rx)      if (HOMEBREW_LIBRARY/"Taps/#{user.downcase}/homebrew-#{repo.downcase}").directory? && \         "#{user}/#{repo}" != "Caskroom/cask"        return [] @@ -140,7 +139,7 @@ module Homebrew      []    end -  def search_formulae rx +  def search_formulae(rx)      aliases = Formula.aliases      results = (Formula.full_names+aliases).grep(rx).sort diff --git a/Library/Homebrew/cmd/sh.rb b/Library/Homebrew/cmd/sh.rb index e48313a77..bc09d4850 100644 --- a/Library/Homebrew/cmd/sh.rb +++ b/Library/Homebrew/cmd/sh.rb @@ -1,5 +1,5 @@ -require 'extend/ENV' -require 'formula' +require "extend/ENV" +require "formula"  module Homebrew    def sh @@ -12,10 +12,10 @@ module Homebrew      ENV.setup_build_environment      if superenv?        # superenv stopped adding brew's bin but generally user's will want it -      ENV['PATH'] = ENV['PATH'].split(File::PATH_SEPARATOR).insert(1, "#{HOMEBREW_PREFIX}/bin").join(File::PATH_SEPARATOR) +      ENV["PATH"] = ENV["PATH"].split(File::PATH_SEPARATOR).insert(1, "#{HOMEBREW_PREFIX}/bin").join(File::PATH_SEPARATOR)      end -    ENV['PS1'] = 'brew \[\033[1;32m\]\w\[\033[0m\]$ ' -    ENV['VERBOSE'] = '1' +    ENV["PS1"] = 'brew \[\033[1;32m\]\w\[\033[0m\]$ ' +    ENV["VERBOSE"] = "1"      puts <<-EOS.undent_________________________________________________________72           Your shell has been configured to use Homebrew's build environment:           this should help you build stuff. Notably though, the system versions of @@ -24,6 +24,6 @@ module Homebrew           ignore our configuration.           When done, type `exit'.           EOS -    exec ENV['SHELL'] +    exec ENV["SHELL"]    end  end diff --git a/Library/Homebrew/cmd/switch.rb b/Library/Homebrew/cmd/switch.rb index 8c058fdd1..5efebd7e5 100644 --- a/Library/Homebrew/cmd/switch.rb +++ b/Library/Homebrew/cmd/switch.rb @@ -25,7 +25,7 @@ module Homebrew        onoe "#{name} does not have a version \"#{version}\" in the Cellar."        versions = rack.subdirs.map { |d| Keg.new(d).version } -      puts "Versions available: #{versions.join(', ')}" +      puts "Versions available: #{versions.join(", ")}"        exit 3      end diff --git a/Library/Homebrew/cmd/tap-readme.rb b/Library/Homebrew/cmd/tap-readme.rb index 3ec901bee..c6c5b262f 100644 --- a/Library/Homebrew/cmd/tap-readme.rb +++ b/Library/Homebrew/cmd/tap-readme.rb @@ -25,7 +25,7 @@ module Homebrew      EOS      puts template if ARGV.verbose? -    path = Pathname.new('./README.md') +    path = Pathname.new("./README.md")      raise "#{path} already exists" if path.exist?      path.write template    end diff --git a/Library/Homebrew/cmd/tap.rb b/Library/Homebrew/cmd/tap.rb index 43e47711e..c7fb0733e 100644 --- a/Library/Homebrew/cmd/tap.rb +++ b/Library/Homebrew/cmd/tap.rb @@ -13,7 +13,7 @@ module Homebrew      end    end -  def install_tap user, repo, clone_target=nil +  def install_tap(user, repo, clone_target = nil)      tap = Tap.new user, repo      return false if tap.installed?      ohai "Tapping #{tap}" @@ -23,7 +23,7 @@ module Homebrew      safe_system "git", *args      formula_count = tap.formula_files.size -    puts "Tapped #{formula_count} formula#{plural(formula_count, 'e')} (#{tap.path.abv})" +    puts "Tapped #{formula_count} formula#{plural(formula_count, "e")} (#{tap.path.abv})"      if !clone_target && tap.private?        puts <<-EOS.undent @@ -40,7 +40,7 @@ module Homebrew    end    # Migrate tapped formulae from symlink-based to directory-based structure. -  def migrate_taps(options={}) +  def migrate_taps(options = {})      ignore = HOMEBREW_LIBRARY/"Formula/.gitignore"      return unless ignore.exist? || options.fetch(:force, false)      (HOMEBREW_LIBRARY/"Formula").children.select(&:symlink?).each(&:unlink) @@ -49,7 +49,7 @@ module Homebrew    private -  def tap_args(tap_name=ARGV.named.first) +  def tap_args(tap_name = ARGV.named.first)      tap_name =~ HOMEBREW_TAP_ARGS_REGEX      raise "Invalid tap name" unless $1 && $3      [$1, $3] diff --git a/Library/Homebrew/cmd/test-bot.rb b/Library/Homebrew/cmd/test-bot.rb index 6a14c3d05..0336796ca 100644 --- a/Library/Homebrew/cmd/test-bot.rb +++ b/Library/Homebrew/cmd/test-bot.rb @@ -23,19 +23,19 @@  # --ci-upload:           Homebrew CI bottle upload.  # --ci-reset-and-update: Homebrew CI repository and tap reset and update. -require 'formula' -require 'utils' -require 'date' -require 'rexml/document' -require 'rexml/xmldecl' -require 'rexml/cdata' -require 'cmd/tap' +require "formula" +require "utils" +require "date" +require "rexml/document" +require "rexml/xmldecl" +require "rexml/cdata" +require "cmd/tap"  module Homebrew    EMAIL_SUBJECT_FILE = "brew-test-bot.#{MacOS.cat}.email.txt"    BYTES_IN_1_MEGABYTE = 1024*1024 -  def homebrew_git_repo tap=nil +  def homebrew_git_repo(tap = nil)      if tap        user, repo = tap.split "/"        HOMEBREW_LIBRARY/"Taps/#{user}/homebrew-#{repo}" @@ -47,7 +47,7 @@ module Homebrew    class Step      attr_reader :command, :name, :status, :output, :time -    def initialize test, command, options={} +    def initialize(test, command, options = {})        @test = test        @category = test.category        @command = command @@ -92,7 +92,7 @@ module Homebrew        cmd = @command.join(" ")        print "#{Tty.blue}==>#{Tty.white} #{cmd}#{Tty.reset}"        tabs = (80 - "PASSED".length + 1 - cmd.length) / 8 -      tabs.times{ print "\t" } +      tabs.times { print "\t" }        $stdout.flush      end @@ -129,8 +129,8 @@ module Homebrew          end          write.close          while line = read.gets -         puts line if verbose -         @output += line +          puts line if verbose +          @output += line          end        ensure          read.close @@ -143,7 +143,7 @@ module Homebrew        if has_output?          @output = fix_encoding(@output) -        puts @output if (failed? or @puts_output_on_success) && !verbose +        puts @output if (failed? || @puts_output_on_success) && !verbose          File.write(log_file_path, @output) if ARGV.include? "--keep-logs"        end @@ -174,7 +174,7 @@ module Homebrew    class Test      attr_reader :log_root, :category, :name, :steps -    def initialize argument, tap=nil +    def initialize(argument, tap = nil)        @hash = nil        @url = nil        @formulae = [] @@ -208,7 +208,7 @@ module Homebrew      end      def no_args? -      @hash == 'HEAD' +      @hash == "HEAD"      end      def git(*args) @@ -231,23 +231,23 @@ module Homebrew      end      def download -      def shorten_revision revision +      def shorten_revision(revision)          git("rev-parse", "--short", revision).strip        end        def current_sha1 -        shorten_revision 'HEAD' +        shorten_revision "HEAD"        end        def current_branch          git("symbolic-ref", "HEAD").gsub("refs/heads/", "").strip        end -      def single_commit? start_revision, end_revision +      def single_commit?(start_revision, end_revision)          git("rev-list", "--count", "#{start_revision}..#{end_revision}").to_i == 1        end -      def diff_formulae start_revision, end_revision, path, filter +      def diff_formulae(start_revision, end_revision, path, filter)          git(            "diff-tree", "-r", "--name-only", "--diff-filter=#{filter}",            start_revision, end_revision, "--", path @@ -266,10 +266,10 @@ module Homebrew        @start_branch = current_branch        # Use Jenkins environment variables if present. -      if no_args? and ENV['GIT_PREVIOUS_COMMIT'] and ENV['GIT_COMMIT'] \ -         and not ENV['ghprbPullLink'] -        diff_start_sha1 = shorten_revision ENV['GIT_PREVIOUS_COMMIT'] -        diff_end_sha1 = shorten_revision ENV['GIT_COMMIT'] +      if no_args? && ENV["GIT_PREVIOUS_COMMIT"] && ENV["GIT_COMMIT"] \ +         && !ENV["ghprbPullLink"] +        diff_start_sha1 = shorten_revision ENV["GIT_PREVIOUS_COMMIT"] +        diff_end_sha1 = shorten_revision ENV["GIT_COMMIT"]          brew_update        elsif @hash          diff_start_sha1 = current_sha1 @@ -280,14 +280,14 @@ module Homebrew        end        # Handle Jenkins pull request builder plugin. -      if ENV['ghprbPullLink'] -        @url = ENV['ghprbPullLink'] +      if ENV["ghprbPullLink"] +        @url = ENV["ghprbPullLink"]          @hash = nil        end        if no_args? -        if diff_start_sha1 == diff_end_sha1 or \ -          single_commit?(diff_start_sha1, diff_end_sha1) +        if diff_start_sha1 == diff_end_sha1 || \ +           single_commit?(diff_start_sha1, diff_end_sha1)            @name = diff_end_sha1          else            @name = "#{diff_start_sha1}-#{diff_end_sha1}" @@ -302,8 +302,8 @@ module Homebrew          test "git", "checkout", diff_start_sha1          test "brew", "pull", "--clean", @url          diff_end_sha1 = current_sha1 -        @short_url = @url.gsub('https://github.com/', '') -        if @short_url.include? '/commit/' +        @short_url = @url.gsub("https://github.com/", "") +        if @short_url.include? "/commit/"            # 7 characters should be enough for a commit (not 40).            @short_url.gsub!(/(commit\/\w{7}).*/, '\1')            @name = @short_url @@ -319,7 +319,7 @@ module Homebrew        FileUtils.mkdir_p @log_root        return unless diff_start_sha1 != diff_end_sha1 -      return if @url and not steps.last.passed? +      return if @url && !steps.last.passed?        if @tap          formula_path = %w[Formula HomebrewFormula].find { |dir| (@repository/dir).directory? } || "" @@ -332,11 +332,11 @@ module Homebrew        @formulae += @added_formulae + @modified_formula      end -    def skip formula_name +    def skip(formula_name)        puts "#{Tty.blue}==>#{Tty.white} SKIPPING: #{formula_name}#{Tty.reset}"      end -    def satisfied_requirements? formula, spec, dependency=nil +    def satisfied_requirements?(formula, spec, dependency = nil)        requirements = formula.send(spec).requirements        unsatisfied_requirements = requirements.reject do |requirement| @@ -370,7 +370,7 @@ module Homebrew        test "brew", "config"      end -    def formula formula_name +    def formula(formula_name)        @category = "#{__method__}.#{formula_name}"        canonical_formula_name = if @tap @@ -384,7 +384,7 @@ module Homebrew        formula = Formulary.factory(canonical_formula_name)        formula.conflicts.map { |c| Formulary.factory(c.name) }. -        select { |f| f.installed? }.each do |conflict| +        select(&:installed?).each do |conflict|            test "brew", "unlink", conflict.name          end @@ -402,7 +402,7 @@ module Homebrew          return unless satisfied_requirements?(formula, :devel)        end -      if formula.devel && !ARGV.include?('--HEAD') +      if formula.devel && !ARGV.include?("--HEAD")          deps |= formula.devel.deps.to_a          reqs |= formula.devel.requirements.to_a        end @@ -448,8 +448,8 @@ module Homebrew        (installed & dependencies).each do |installed_dependency|          installed_dependency_formula = Formulary.factory(installed_dependency)          if installed_dependency_formula.installed? && -            !installed_dependency_formula.keg_only? && -            !installed_dependency_formula.linked_keg.exist? +           !installed_dependency_formula.keg_only? && +           !installed_dependency_formula.linked_keg.exist?            test "brew", "link", installed_dependency          end        end @@ -466,7 +466,7 @@ module Homebrew        dependents = Utils.popen_read("brew", "uses", "--skip-build", "--skip-optional", canonical_formula_name).split("\n")        dependents -= @formulae -      dependents = dependents.map {|d| Formulary.factory(d)} +      dependents = dependents.map { |d| Formulary.factory(d) }        testable_dependents = dependents.select { |d| d.test_defined? && d.bottled? } @@ -507,12 +507,12 @@ module Homebrew        audit_args << "--strict" << "--online" if @added_formulae.include? formula_name        test "brew", "audit", *audit_args        if install_passed -        if formula.stable? && !ARGV.include?('--no-bottle') +        if formula.stable? && !ARGV.include?("--no-bottle")            bottle_args = ["--verbose", "--rb", canonical_formula_name]            bottle_args << { :puts_output_on_success => true }            test "brew", "bottle", *bottle_args            bottle_step = steps.last -          if bottle_step.passed? and bottle_step.has_output? +          if bottle_step.passed? && bottle_step.has_output?              bottle_filename =                bottle_step.output.gsub(/.*(\.\/\S+#{bottle_native_regex}).*/m, '\1')              test "brew", "uninstall", "--force", canonical_formula_name @@ -528,7 +528,7 @@ module Homebrew            unless dependent.installed?              test "brew", "fetch", "--retry", dependent.name              next if steps.last.failed? -            conflicts = dependent.conflicts.map { |c| Formulary.factory(c.name) }.select { |f| f.installed? } +            conflicts = dependent.conflicts.map { |c| Formulary.factory(c.name) }.select(&:installed?)              conflicts.each do |conflict|                test "brew", "unlink", conflict.name              end @@ -542,7 +542,7 @@ module Homebrew          test "brew", "uninstall", "--force", canonical_formula_name        end -      if formula.devel && formula.stable? && !ARGV.include?('--HEAD') \ +      if formula.devel && formula.stable? && !ARGV.include?("--HEAD") \           && satisfied_requirements?(formula, :devel)          test "brew", "fetch", "--retry", "--devel", *formula_fetch_options          run_as_not_developer { test "brew", "install", "--devel", "--verbose", canonical_formula_name } @@ -568,7 +568,7 @@ module Homebrew      def cleanup_before        @category = __method__ -      return unless ARGV.include? '--cleanup' +      return unless ARGV.include? "--cleanup"        git "stash"        git "am", "--abort"        git "rebase", "--abort" @@ -576,25 +576,25 @@ module Homebrew        git "checkout", "-f", "master"        git "clean", "-ffdx"        pr_locks = "#{HOMEBREW_REPOSITORY}/.git/refs/remotes/*/pr/*/*.lock" -      Dir.glob(pr_locks) {|lock| FileUtils.rm_rf lock } +      Dir.glob(pr_locks) { |lock| FileUtils.rm_rf lock }      end      def cleanup_after        @category = __method__        checkout_args = [] -      if ARGV.include? '--cleanup' +      if ARGV.include? "--cleanup"          test "git", "clean", "-ffdx"          checkout_args << "-f"        end        checkout_args << @start_branch -      if ARGV.include? '--cleanup' or @url or @hash +      if ARGV.include?("--cleanup") || @url || @hash          test "git", "checkout", *checkout_args        end -      if ARGV.include? '--cleanup' +      if ARGV.include? "--cleanup"          test "git", "reset", "--hard"          git "stash", "pop"          test "brew", "cleanup", "--prune=30" @@ -635,7 +635,7 @@ module Homebrew          end        end -      changed_formulae = changed_formulae_dependents.sort do |a1,a2| +      changed_formulae = changed_formulae_dependents.sort do |a1, a2|          a2[1].to_i <=> a1[1].to_i        end        changed_formulae.map!(&:first) @@ -643,11 +643,11 @@ module Homebrew        changed_formulae + unchanged_formulae      end -    def head_only_tap? formula +    def head_only_tap?(formula)        formula.head && formula.devel.nil? && formula.stable.nil? && formula.tap == "homebrew/homebrew-head-only"      end -    def devel_only_tap? formula +    def devel_only_tap?(formula)        formula.devel && formula.stable.nil? && formula.tap == "homebrew/homebrew-devel-only"      end @@ -665,17 +665,17 @@ module Homebrew    end    def test_bot -    tap = ARGV.value('tap') +    tap = ARGV.value("tap") -    if !tap && ENV['UPSTREAM_BOT_PARAMS'] -      bot_argv = ENV['UPSTREAM_BOT_PARAMS'].split " " +    if !tap && ENV["UPSTREAM_BOT_PARAMS"] +      bot_argv = ENV["UPSTREAM_BOT_PARAMS"].split " "        bot_argv.extend HomebrewArgvExtension -      tap ||= bot_argv.value('tap') +      tap ||= bot_argv.value("tap")      end      tap.gsub!(/homebrew\/homebrew-/i, "Homebrew/") if tap -    git_url = ENV['UPSTREAM_GIT_URL'] || ENV['GIT_URL'] +    git_url = ENV["UPSTREAM_GIT_URL"] || ENV["GIT_URL"]      if !tap && git_url        # Also can get tap from Jenkins GIT_URL.        url_path = git_url.gsub(%r{^https?://github\.com/}, "").gsub(%r{/$}, "") @@ -683,33 +683,33 @@ module Homebrew        tap = "#{$1}/#{$3}" if $1 && $3      end -    if Pathname.pwd == HOMEBREW_PREFIX and ARGV.include? "--cleanup" -      odie 'cannot use --cleanup from HOMEBREW_PREFIX as it will delete all output.' +    if Pathname.pwd == HOMEBREW_PREFIX && ARGV.include?("--cleanup") +      odie "cannot use --cleanup from HOMEBREW_PREFIX as it will delete all output."      end      if ARGV.include? "--email" -      File.open EMAIL_SUBJECT_FILE, 'w' do |file| +      File.open EMAIL_SUBJECT_FILE, "w" do |file|          # The file should be written at the end but in case we don't get to that          # point ensure that we have something valid.          file.write "#{MacOS.version}: internal error."        end      end -    ENV['HOMEBREW_DEVELOPER'] = '1' -    ENV['HOMEBREW_NO_EMOJI'] = '1' -    if ARGV.include? '--ci-master' or ARGV.include? '--ci-pr' \ -       or ARGV.include? '--ci-testing' +    ENV["HOMEBREW_DEVELOPER"] = "1" +    ENV["HOMEBREW_NO_EMOJI"] = "1" +    if ARGV.include?("--ci-master") || ARGV.include?("--ci-pr") \ +       || ARGV.include?("--ci-testing")        ARGV << "--cleanup" if ENV["JENKINS_HOME"] || ENV["TRAVIS_COMMIT"]        ARGV << "--junit" << "--local"      end -    if ARGV.include? '--ci-master' -      ARGV << '--no-bottle' << '--email' +    if ARGV.include? "--ci-master" +      ARGV << "--no-bottle" << "--email"      end -    if ARGV.include? '--local' -      ENV['HOME'] = "#{Dir.pwd}/home" -      mkdir_p ENV['HOME'] -      ENV['HOMEBREW_LOGS'] = "#{Dir.pwd}/logs" +    if ARGV.include? "--local" +      ENV["HOME"] = "#{Dir.pwd}/home" +      mkdir_p ENV["HOME"] +      ENV["HOMEBREW_LOGS"] = "#{Dir.pwd}/logs"      end      if ARGV.include? "--ci-reset-and-update" @@ -733,10 +733,10 @@ module Homebrew        safe_system "brew", "tap", tap      end -    if ARGV.include? '--ci-upload' -      jenkins = ENV['JENKINS_HOME'] -      job = ENV['UPSTREAM_JOB_NAME'] -      id = ENV['UPSTREAM_BUILD_ID'] +    if ARGV.include? "--ci-upload" +      jenkins = ENV["JENKINS_HOME"] +      job = ENV["UPSTREAM_JOB_NAME"] +      id = ENV["UPSTREAM_BUILD_ID"]        raise "Missing Jenkins variables!" if !jenkins || !job || !id        bintray_user = ENV["BINTRAY_USER"] @@ -751,7 +751,7 @@ module Homebrew        ENV["JENKINS_SERVER_COOKIE"] = nil        ENV["HUDSON_COOKIE"] = nil -      ARGV << '--verbose' +      ARGV << "--verbose"        bottles = Dir["#{jenkins}/jobs/#{job}/configurations/axis-version/*/builds/#{id}/archive/*.bottle*.*"]        return if bottles.empty? @@ -762,8 +762,8 @@ module Homebrew        ENV["GIT_WORK_TREE"] = repository        ENV["GIT_DIR"] = "#{ENV["GIT_WORK_TREE"]}/.git" -      pr = ENV['UPSTREAM_PULL_REQUEST'] -      number = ENV['UPSTREAM_BUILD_NUMBER'] +      pr = ENV["UPSTREAM_PULL_REQUEST"] +      number = ENV["UPSTREAM_BUILD_NUMBER"]        system "git am --abort 2>/dev/null"        system "git rebase --abort 2>/dev/null" @@ -839,7 +839,7 @@ module Homebrew      any_errors = false      if ARGV.named.empty?        # With no arguments just build the most recent commit. -      head_test = Test.new('HEAD', tap) +      head_test = Test.new("HEAD", tap)        any_errors = !head_test.run        tests << head_test      else @@ -913,12 +913,12 @@ module Homebrew        end        if failed_steps.empty? -        email_subject = '' +        email_subject = ""        else -        email_subject = "#{MacOS.version}: #{failed_steps.join ', '}." +        email_subject = "#{MacOS.version}: #{failed_steps.join ", "}."        end -      File.open EMAIL_SUBJECT_FILE, 'w' do |file| +      File.open EMAIL_SUBJECT_FILE, "w" do |file|          file.write email_subject        end      end diff --git a/Library/Homebrew/cmd/test.rb b/Library/Homebrew/cmd/test.rb index 7c3641426..fd3c7c4e6 100644 --- a/Library/Homebrew/cmd/test.rb +++ b/Library/Homebrew/cmd/test.rb @@ -4,7 +4,6 @@ require "sandbox"  require "timeout"  module Homebrew -    def test      raise FormulaUnspecifiedError if ARGV.named.empty? diff --git a/Library/Homebrew/cmd/uninstall.rb b/Library/Homebrew/cmd/uninstall.rb index 22cafd9dd..ab2938c75 100644 --- a/Library/Homebrew/cmd/uninstall.rb +++ b/Library/Homebrew/cmd/uninstall.rb @@ -1,11 +1,11 @@ -require 'keg' -require 'formula' +require "keg" +require "formula"  module Homebrew    def uninstall      raise KegUnspecifiedError if ARGV.named.empty? -    if not ARGV.force? +    if !ARGV.force?        ARGV.kegs.each do |keg|          keg.lock do            puts "Uninstalling #{keg}... (#{keg.abv})" @@ -43,7 +43,7 @@ module Homebrew      puts "Use `brew remove --force #{e.name}` to remove all versions."    end -  def rm_pin rack +  def rm_pin(rack)      Formulary.from_rack(rack).unpin rescue nil    end  end diff --git a/Library/Homebrew/cmd/unlinkapps.rb b/Library/Homebrew/cmd/unlinkapps.rb index ef11db602..2674b2854 100644 --- a/Library/Homebrew/cmd/unlinkapps.rb +++ b/Library/Homebrew/cmd/unlinkapps.rb @@ -1,5 +1,5 @@  # Unlinks any Applications (.app) found in installed prefixes from /Applications -require 'keg' +require "keg"  module Homebrew    def unlinkapps @@ -23,7 +23,7 @@ module Homebrew    private -  def should_unlink? file +  def should_unlink?(file)      if ARGV.named.empty?        file.match(HOMEBREW_CELLAR) || file.match("#{HOMEBREW_PREFIX}/opt")      else diff --git a/Library/Homebrew/cmd/unpack.rb b/Library/Homebrew/cmd/unpack.rb index 2eed6b4a4..3a0630d6a 100644 --- a/Library/Homebrew/cmd/unpack.rb +++ b/Library/Homebrew/cmd/unpack.rb @@ -25,12 +25,12 @@ module Homebrew        oh1 "Unpacking #{f.full_name} to: #{stage_dir}" -      ENV['VERBOSE'] = '1' # show messages about tar +      ENV["VERBOSE"] = "1" # show messages about tar        f.brew do          f.patch if ARGV.flag?("--patch")          cp_r getwd, stage_dir        end -      ENV['VERBOSE'] = nil +      ENV["VERBOSE"] = nil        if ARGV.git?          ohai "Setting up git repository" diff --git a/Library/Homebrew/cmd/unpin.rb b/Library/Homebrew/cmd/unpin.rb index 0738f5869..3b66da03a 100644 --- a/Library/Homebrew/cmd/unpin.rb +++ b/Library/Homebrew/cmd/unpin.rb @@ -1,4 +1,4 @@ -require 'formula' +require "formula"  module Homebrew    def unpin diff --git a/Library/Homebrew/cmd/untap.rb b/Library/Homebrew/cmd/untap.rb index f1040bb05..793ad299d 100644 --- a/Library/Homebrew/cmd/untap.rb +++ b/Library/Homebrew/cmd/untap.rb @@ -1,4 +1,4 @@ -require 'cmd/tap' # for tap_args +require "cmd/tap" # for tap_args  module Homebrew    def untap @@ -13,7 +13,7 @@ module Homebrew        formula_count = tap.formula_files.size        tap.path.rmtree        tap.path.dirname.rmdir_if_possible -      puts "Untapped #{formula_count} formula#{plural(formula_count, 'e')}" +      puts "Untapped #{formula_count} formula#{plural(formula_count, "e")}"      end    end  end diff --git a/Library/Homebrew/cmd/update.rb b/Library/Homebrew/cmd/update.rb index 189a911db..e50443fad 100644 --- a/Library/Homebrew/cmd/update.rb +++ b/Library/Homebrew/cmd/update.rb @@ -1,4 +1,4 @@ -require 'cmd/tap' +require "cmd/tap"  module Homebrew    def update @@ -10,7 +10,7 @@ module Homebrew      end      # ensure GIT_CONFIG is unset as we need to operate on .git/config -    ENV.delete('GIT_CONFIG') +    ENV.delete("GIT_CONFIG")      cd HOMEBREW_REPOSITORY      git_init_if_necessary @@ -36,7 +36,7 @@ module Homebrew          rescue            onoe "Failed to update tap: #{tap}"          else -          report.update(updater.report) do |key, oldval, newval| +          report.update(updater.report) do |_key, oldval, newval|              oldval.concat(newval)            end          end @@ -48,14 +48,14 @@ module Homebrew        next unless (HOMEBREW_CELLAR/f).exist?        migration = TAP_MIGRATIONS[f]        next unless migration -      tap_user, tap_repo = migration.split '/' +      tap_user, tap_repo = migration.split "/"        install_tap tap_user, tap_repo      end if load_tap_migrations      if report.empty?        puts "Already up-to-date."      else -      puts "Updated Homebrew from #{master_updater.initial_revision[0,8]} to #{master_updater.current_revision[0,8]}." +      puts "Updated Homebrew from #{master_updater.initial_revision[0, 8]} to #{master_updater.current_revision[0, 8]}."        report.dump      end    end @@ -111,7 +111,7 @@ module Homebrew    end    def load_tap_migrations -    require 'tap_migrations' +    require "tap_migrations"    rescue LoadError      false    end @@ -125,7 +125,7 @@ class Updater      @stashed = false    end -  def pull!(options={}) +  def pull!(options = {})      quiet = []      quiet << "--quiet" unless ARGV.verbose? @@ -184,12 +184,13 @@ class Updater    end    def report -    map = Hash.new{ |h,k| h[k] = [] } +    map = Hash.new { |h, k| h[k] = [] }      if initial_revision && initial_revision != current_revision        diff.each_line do |line|          status, *paths = line.split -        src, dst = paths.first, paths.last +        src = paths.first +        dst = paths.last          next unless File.extname(dst) == ".rb"          next unless paths.any? { |p| File.dirname(p) == formula_directory } @@ -255,7 +256,6 @@ class Updater    end  end -  class Report    def initialize      @hash = {} @@ -281,7 +281,7 @@ class Report      dump_formula_report :D, "Deleted Formulae"    end -  def select_formula key +  def select_formula(key)      fetch(key, []).map do |path|        case path.to_s        when HOMEBREW_TAP_PATH_REGEX @@ -292,7 +292,7 @@ class Report      end.sort    end -  def dump_formula_report key, title +  def dump_formula_report(key, title)      formula = select_formula(key)      unless formula.empty?        ohai title diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index 3c90c0c95..8ae231002 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -1,5 +1,5 @@ -require 'cmd/install' -require 'cmd/outdated' +require "cmd/install" +require "cmd/outdated"  module Homebrew    def upgrade @@ -29,24 +29,24 @@ module Homebrew      unless outdated.empty?        oh1 "Upgrading #{outdated.length} outdated package#{plural(outdated.length)}, with result:" -      puts outdated.map{ |f| "#{f.full_name} #{f.pkg_version}" } * ", " +      puts outdated.map { |f| "#{f.full_name} #{f.pkg_version}" } * ", "      else        oh1 "No packages to upgrade"      end      unless upgrade_pinned? || pinned.empty?        oh1 "Not upgrading #{pinned.length} pinned package#{plural(pinned.length)}:" -      puts pinned.map{ |f| "#{f.full_name} #{f.pkg_version}" } * ", " +      puts pinned.map { |f| "#{f.full_name} #{f.pkg_version}" } * ", "      end      outdated.each { |f| upgrade_formula(f) }    end    def upgrade_pinned? -    not ARGV.named.empty? +    !ARGV.named.empty?    end -  def upgrade_formula f +  def upgrade_formula(f)      outdated_keg = Keg.new(f.linked_keg.resolved_path) if f.linked_keg.directory?      tab = Tab.for_formula(f) @@ -89,7 +89,6 @@ module Homebrew      ofail e    ensure      # restore previous installation state if build failed -    outdated_keg.link if outdated_keg and not f.installed? rescue nil +    outdated_keg.link if outdated_keg && !f.installed? rescue nil    end -  end diff --git a/Library/Homebrew/cmd/uses.rb b/Library/Homebrew/cmd/uses.rb index 8738db894..28abcf28e 100644 --- a/Library/Homebrew/cmd/uses.rb +++ b/Library/Homebrew/cmd/uses.rb @@ -1,4 +1,4 @@ -require 'formula' +require "formula"  # `brew uses foo bar` returns formulae that use both foo and bar  # If you want the union, run the command twice and concatenate the results. @@ -26,7 +26,7 @@ module Homebrew                Requirement.prune if ignores.any? { |ignore| req.send(ignore) } && !dependent.build.with?(req)              end              deps.any? { |dep| dep.to_formula.full_name == ff.full_name rescue dep.name == ff.name } || -              reqs.any? { |req| req.name == ff.name || [ff.name, ff.full_name].include?(req.default_formula) } +            reqs.any? { |req| req.name == ff.name || [ff.name, ff.full_name].include?(req.default_formula) }            else              deps = f.deps.reject do |dep|                ignores.any? { |ignore| dep.send(ignore) } @@ -35,7 +35,7 @@ module Homebrew                ignores.any? { |ignore| req.send(ignore) }              end              deps.any? { |dep| dep.to_formula.full_name == ff.full_name rescue dep.name == ff.name } || -              reqs.any? { |req| req.name == ff.name || [ff.name, ff.full_name].include?(req.default_formula) } +            reqs.any? { |req| req.name == ff.name || [ff.name, ff.full_name].include?(req.default_formula) }            end          rescue FormulaUnavailableError            # Silently ignore this case as we don't care about things used in diff --git a/Library/Homebrew/compat.rb b/Library/Homebrew/compat.rb index 47bc3412f..71ae5a5d6 100644 --- a/Library/Homebrew/compat.rb +++ b/Library/Homebrew/compat.rb @@ -1,9 +1,9 @@ -require 'compat/fails_with_llvm' -require 'compat/formula' -require 'compat/formula_specialties' -require 'compat/hardware' -require 'compat/macos' -require 'compat/md5' -require 'compat/requirements' -require 'compat/version' -require 'compat/download_strategy' +require "compat/fails_with_llvm" +require "compat/formula" +require "compat/formula_specialties" +require "compat/hardware" +require "compat/macos" +require "compat/md5" +require "compat/requirements" +require "compat/version" +require "compat/download_strategy" diff --git a/Library/Homebrew/compat/fails_with_llvm.rb b/Library/Homebrew/compat/fails_with_llvm.rb index 2222a33e6..2c7df721d 100644 --- a/Library/Homebrew/compat/fails_with_llvm.rb +++ b/Library/Homebrew/compat/fails_with_llvm.rb @@ -1,10 +1,10 @@  class Formula -  def fails_with_llvm msg=nil, data=nil +  def fails_with_llvm(_msg = nil, _data = nil)      opoo "Calling fails_with_llvm in the install method is deprecated"      puts "Use the fails_with DSL instead"    end -  def self.fails_with_llvm msg=nil, data={} +  def self.fails_with_llvm(msg = nil, data = {})      data = msg if Hash === msg      fails_with(:llvm) { build(data.delete(:build).to_i) }    end diff --git a/Library/Homebrew/compat/formula.rb b/Library/Homebrew/compat/formula.rb index c790abc45..ee948572e 100644 --- a/Library/Homebrew/compat/formula.rb +++ b/Library/Homebrew/compat/formula.rb @@ -16,7 +16,7 @@ class Formula      "-DCMAKE_INSTALL_PREFIX='#{prefix}' -DCMAKE_BUILD_TYPE=None -DCMAKE_FIND_FRAMEWORK=LAST -Wno-dev"    end -  def cxxstdlib_check check_type +  def cxxstdlib_check(check_type)      self.class.cxxstdlib_check check_type    end @@ -44,16 +44,18 @@ class Formula      define_method(:require_universal_deps?) { true }    end -  def self.path name +  def self.path(name)      Formulary.core_path(name)    end    DATA = :DATA -  def patches; {} end +  def patches +    {} +  end -  def python(options={}, &block) -    opoo 'Formula#python is deprecated and will go away shortly.' +  def python(_options = {}, &block) +    opoo "Formula#python is deprecated and will go away shortly."      block.call if block_given?      PythonRequirement.new    end diff --git a/Library/Homebrew/compat/formula_specialties.rb b/Library/Homebrew/compat/formula_specialties.rb index 96673fdea..f082b00d9 100644 --- a/Library/Homebrew/compat/formula_specialties.rb +++ b/Library/Homebrew/compat/formula_specialties.rb @@ -3,7 +3,7 @@  # See chcase for an example  class ScriptFileFormula < Formula    def install -    bin.install Dir['*'] +    bin.install Dir["*"]    end  end @@ -21,14 +21,14 @@ class AmazonWebServicesFormula < Formula    # Use this method to peform a standard install for Java-based tools,    # keeping the .jars out of HOMEBREW_PREFIX/lib    def install -    rm Dir['bin/*.cmd'] # Remove Windows versions -    libexec.install Dir['*'] +    rm Dir["bin/*.cmd"] # Remove Windows versions +    libexec.install Dir["*"]      bin.install_symlink Dir["#{libexec}/bin/*"] - ["#{libexec}/bin/service"]    end    alias_method :standard_install, :install    # Use this method to generate standard caveats. -  def standard_instructions home_name, home_value=libexec +  def standard_instructions(home_name, home_value = libexec)      <<-EOS.undent        Before you can use these tools you must export some variables to your $SHELL. diff --git a/Library/Homebrew/compat/hardware.rb b/Library/Homebrew/compat/hardware.rb index 550c10118..3013ed3b7 100644 --- a/Library/Homebrew/compat/hardware.rb +++ b/Library/Homebrew/compat/hardware.rb @@ -1,7 +1,7 @@  class Hardware    class << self      def is_32_bit? -      not CPU.is_64_bit? +      !CPU.is_64_bit?      end      def is_64_bit? diff --git a/Library/Homebrew/compat/version.rb b/Library/Homebrew/compat/version.rb index 027df9fc3..0762d3694 100644 --- a/Library/Homebrew/compat/version.rb +++ b/Library/Homebrew/compat/version.rb @@ -1,5 +1,5 @@  class Version -  def slice *args +  def slice(*args)      opoo "Calling slice on versions is deprecated, use: to_s.slice"      to_s.slice(*args)    end diff --git a/Library/Homebrew/compilers.rb b/Library/Homebrew/compilers.rb index a8bc945c2..4ed8c7f00 100644 --- a/Library/Homebrew/compilers.rb +++ b/Library/Homebrew/compilers.rb @@ -5,11 +5,11 @@ module CompilerConstants      "gcc-4.0"  => :gcc_4_0,      "gcc-4.2"  => :gcc,      "llvm-gcc" => :llvm, -    "clang"    => :clang, +    "clang"    => :clang    }    COMPILERS = COMPILER_SYMBOL_MAP.values + -    GNU_GCC_VERSIONS.map { |n| "gcc-#{n}" } +              GNU_GCC_VERSIONS.map { |n| "gcc-#{n}" }  end  class CompilerFailure @@ -23,7 +23,7 @@ class CompilerFailure    # The cause is no longer used so we need not hold a reference to the string    def cause(_); end -  def self.for_standard standard +  def self.for_standard(standard)      COLLECTIONS.fetch(standard) do        raise ArgumentError, "\"#{standard}\" is not a recognized standard"      end @@ -66,12 +66,12 @@ class CompilerFailure        create(:gcc => "4.3"),        create(:gcc => "4.4"),        create(:gcc => "4.5"), -      create(:gcc => "4.6"), +      create(:gcc => "4.6")      ],      :openmp => [        create(:clang), -      create(:llvm), -    ], +      create(:llvm) +    ]    }  end @@ -84,10 +84,10 @@ class CompilerSelector      :clang   => [:clang, :gcc, :llvm, :gnu, :gcc_4_0],      :gcc     => [:gcc, :llvm, :gnu, :clang, :gcc_4_0],      :llvm    => [:llvm, :gcc, :gnu, :clang, :gcc_4_0], -    :gcc_4_0 => [:gcc_4_0, :gcc, :llvm, :gnu, :clang], +    :gcc_4_0 => [:gcc_4_0, :gcc, :llvm, :gnu, :clang]    } -  def self.select_for(formula, compilers=self.compilers) +  def self.select_for(formula, compilers = self.compilers)      new(formula, MacOS, compilers).compiler    end diff --git a/Library/Homebrew/config.rb b/Library/Homebrew/config.rb index fe153bf6d..bd8e3e53c 100644 --- a/Library/Homebrew/config.rb +++ b/Library/Homebrew/config.rb @@ -26,8 +26,8 @@ undef cache  # Where brews installed via URL are cached  HOMEBREW_CACHE_FORMULA = HOMEBREW_CACHE+"Formula" -if not defined? HOMEBREW_BREW_FILE -  HOMEBREW_BREW_FILE = ENV['HOMEBREW_BREW_FILE'] || which('brew').to_s +unless defined? HOMEBREW_BREW_FILE +  HOMEBREW_BREW_FILE = ENV["HOMEBREW_BREW_FILE"] || which("brew").to_s  end  # Where we link under @@ -47,11 +47,11 @@ else    HOMEBREW_REPOSITORY+"Cellar"  end -HOMEBREW_LOGS = Pathname.new(ENV['HOMEBREW_LOGS'] || '~/Library/Logs/Homebrew/').expand_path +HOMEBREW_LOGS = Pathname.new(ENV["HOMEBREW_LOGS"] || "~/Library/Logs/Homebrew/").expand_path -HOMEBREW_TEMP = Pathname.new(ENV.fetch('HOMEBREW_TEMP', '/tmp')) +HOMEBREW_TEMP = Pathname.new(ENV.fetch("HOMEBREW_TEMP", "/tmp")) -if not defined? HOMEBREW_LIBRARY_PATH +unless defined? HOMEBREW_LIBRARY_PATH    HOMEBREW_LIBRARY_PATH = Pathname.new(__FILE__).realpath.parent.join("Homebrew")  end diff --git a/Library/Homebrew/cxxstdlib.rb b/Library/Homebrew/cxxstdlib.rb index 30b16854c..1f629a8b2 100644 --- a/Library/Homebrew/cxxstdlib.rb +++ b/Library/Homebrew/cxxstdlib.rb @@ -59,14 +59,14 @@ class CxxStdlib        next if dep.build?        dep_stdlib = Tab.for_formula(dep.to_formula).cxxstdlib -      if !compatible_with? dep_stdlib +      unless compatible_with? dep_stdlib          raise CompatibilityError.new(formula, dep, dep_stdlib)        end      end    end    def type_string -    type.to_s.gsub(/cxx$/, 'c++') +    type.to_s.gsub(/cxx$/, "c++")    end    def inspect diff --git a/Library/Homebrew/debrew.rb b/Library/Homebrew/debrew.rb index b1f14b141..3f21094be 100644 --- a/Library/Homebrew/debrew.rb +++ b/Library/Homebrew/debrew.rb @@ -85,8 +85,8 @@ module Debrew      @active    end -  def self.debugged_exceptions -    @debugged_exceptions +  class << self +    attr_reader :debugged_exceptions    end    def self.debrew diff --git a/Library/Homebrew/debrew/irb.rb b/Library/Homebrew/debrew/irb.rb index 8d81558b1..f97403782 100644 --- a/Library/Homebrew/debrew/irb.rb +++ b/Library/Homebrew/debrew/irb.rb @@ -1,4 +1,4 @@ -require 'irb' +require "irb"  module IRB    @setup_done = false diff --git a/Library/Homebrew/dependable.rb b/Library/Homebrew/dependable.rb index f1951e4c6..4a3d2de88 100644 --- a/Library/Homebrew/dependable.rb +++ b/Library/Homebrew/dependable.rb @@ -1,4 +1,4 @@ -require 'options' +require "options"  module Dependable    RESERVED_TAGS = [:build, :optional, :recommended, :run] diff --git a/Library/Homebrew/dependency.rb b/Library/Homebrew/dependency.rb index 98e3e9a6e..e9ca7e4da 100644 --- a/Library/Homebrew/dependency.rb +++ b/Library/Homebrew/dependency.rb @@ -1,4 +1,4 @@ -require 'dependable' +require "dependable"  # A dependency on another Homebrew formula.  class Dependency @@ -8,7 +8,7 @@ class Dependency    DEFAULT_ENV_PROC = proc {} -  def initialize(name, tags=[], env_proc=DEFAULT_ENV_PROC, option_name=name) +  def initialize(name, tags = [], env_proc = DEFAULT_ENV_PROC, option_name = name)      @name = name      @tags = tags      @env_proc = env_proc @@ -70,11 +70,11 @@ class Dependency      # the list.      # The default filter, which is applied when a block is not given, omits      # optionals and recommendeds based on what the dependent has asked for. -    def expand(dependent, deps=dependent.deps, &block) +    def expand(dependent, deps = dependent.deps, &block)        expanded_deps = []        deps.each do |dep| -        # FIXME don't hide cyclic dependencies +        # FIXME: don't hide cyclic dependencies          next if dependent.name == dep.name          case action(dependent, dep, &block) @@ -93,7 +93,7 @@ class Dependency        merge_repeats(expanded_deps)      end -    def action(dependent, dep, &block) +    def action(dependent, dep, &_block)        catch(:action) do          if block_given?            yield dependent, dep @@ -134,7 +134,7 @@ end  class TapDependency < Dependency    attr_reader :tap -  def initialize(name, tags=[], env_proc=DEFAULT_ENV_PROC, option_name=name) +  def initialize(name, tags = [], env_proc = DEFAULT_ENV_PROC, option_name = name)      @tap, _, option_name = option_name.rpartition "/"      super(name, tags, env_proc, option_name)    end diff --git a/Library/Homebrew/dependency_collector.rb b/Library/Homebrew/dependency_collector.rb index 5c62f2628..4c8a50ed4 100644 --- a/Library/Homebrew/dependency_collector.rb +++ b/Library/Homebrew/dependency_collector.rb @@ -1,9 +1,9 @@ -require 'dependency' -require 'dependencies' -require 'ld64_dependency' -require 'requirement' -require 'requirements' -require 'set' +require "dependency" +require "dependencies" +require "ld64_dependency" +require "requirement" +require "requirements" +require "set"  ## A dependency is a formula that another formula needs to install.  ## A requirement is something other than a formula that another formula @@ -177,10 +177,10 @@ class DependencyCollector    def parse_url_spec(url, tags)      case File.extname(url) -    when '.xz'  then Dependency.new('xz', tags) -    when '.lz'  then Dependency.new('lzip', tags) -    when '.rar' then Dependency.new('unrar', tags) -    when '.7z'  then Dependency.new('p7zip', tags) +    when ".xz"  then Dependency.new("xz", tags) +    when ".lz"  then Dependency.new("lzip", tags) +    when ".rar" then Dependency.new("unrar", tags) +    when ".7z"  then Dependency.new("p7zip", tags)      end    end  end diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb index 2ee9bcc1a..5243a7536 100644 --- a/Library/Homebrew/download_strategy.rb +++ b/Library/Homebrew/download_strategy.rb @@ -1,11 +1,11 @@ -require 'utils/json' +require "utils/json"  class AbstractDownloadStrategy    include FileUtils    attr_reader :meta, :name, :version, :resource -  def initialize name, resource +  def initialize(name, resource)      @name = name      @resource = resource      @url = resource.url @@ -32,7 +32,7 @@ class AbstractDownloadStrategy      rm_rf(cached_location)    end -  def expand_safe_system_args args +  def expand_safe_system_args(args)      args = args.dup      args.each_with_index do |arg, ii|        if arg.is_a? Hash @@ -45,11 +45,11 @@ class AbstractDownloadStrategy        end      end      # 2 as default because commands are eg. svn up, git pull -    args.insert(2, '-q') unless ARGV.verbose? +    args.insert(2, "-q") unless ARGV.verbose?      args    end -  def quiet_safe_system *args +  def quiet_safe_system(*args)      safe_system(*expand_safe_system_args(args))    end @@ -73,7 +73,7 @@ class AbstractDownloadStrategy        #{HOMEBREW_PREFIX}/bin/cvs        #{HOMEBREW_PREFIX}/opt/cvs/bin/cvs        #{which("cvs")} -      ].find { |p| File.executable? p } +    ].find { |p| File.executable? p }    end    def hgpath @@ -81,7 +81,7 @@ class AbstractDownloadStrategy        #{which("hg")}        #{HOMEBREW_PREFIX}/bin/hg        #{HOMEBREW_PREFIX}/opt/mercurial/bin/hg -      ].find { |p| File.executable? p } +    ].find { |p| File.executable? p }    end    def bzrpath @@ -89,7 +89,7 @@ class AbstractDownloadStrategy        #{which("bzr")}        #{HOMEBREW_PREFIX}/bin/bzr        #{HOMEBREW_PREFIX}/opt/bazaar/bin/bzr -      ].find { |p| File.executable? p } +    ].find { |p| File.executable? p }    end    def fossilpath @@ -97,14 +97,14 @@ class AbstractDownloadStrategy        #{which("fossil")}        #{HOMEBREW_PREFIX}/bin/fossil        #{HOMEBREW_PREFIX}/opt/fossil/bin/fossil -      ].find { |p| File.executable? p } +    ].find { |p| File.executable? p }    end  end  class VCSDownloadStrategy < AbstractDownloadStrategy    REF_TYPES = [:tag, :branch, :revisions, :revision].freeze -  def initialize name, resource +  def initialize(name, resource)      super      @ref_type, @ref = extract_ref(meta)      @revision = meta[:revision] @@ -172,7 +172,7 @@ class VCSDownloadStrategy < AbstractDownloadStrategy    def extract_ref(specs)      key = REF_TYPES.find { |type| specs.key?(type) } -    return key, specs[key] +    [key, specs[key]]    end  end @@ -180,7 +180,7 @@ class AbstractFileDownloadStrategy < AbstractDownloadStrategy    def stage      case cached_location.compression_type      when :zip -      with_system_path { quiet_safe_system 'unzip', {:quiet_flag => '-qq'}, cached_location } +      with_system_path { quiet_safe_system "unzip", { :quiet_flag => "-qq" }, cached_location }        chdir      when :gzip_only        with_system_path { buffered_write("gunzip") } @@ -188,7 +188,7 @@ class AbstractFileDownloadStrategy < AbstractDownloadStrategy        with_system_path { buffered_write("bunzip2") }      when :gzip, :bzip2, :compress, :tar        # Assume these are also tarred -      with_system_path { safe_system 'tar', 'xf', cached_location } +      with_system_path { safe_system "tar", "xf", cached_location }        chdir      when :xz        with_system_path { pipe_to_tar(xzpath) } @@ -201,9 +201,9 @@ class AbstractFileDownloadStrategy < AbstractDownloadStrategy      when :xar        safe_system "/usr/bin/xar", "-xf", cached_location      when :rar -      quiet_safe_system 'unrar', 'x', {:quiet_flag => '-inul'}, cached_location +      quiet_safe_system "unrar", "x", { :quiet_flag => "-inul" }, cached_location      when :p7zip -      safe_system '7zr', 'x', cached_location +      safe_system "7zr", "x", cached_location      else        cp cached_location, basename_without_params      end @@ -212,7 +212,7 @@ class AbstractFileDownloadStrategy < AbstractDownloadStrategy    private    def chdir -    entries = Dir['*'] +    entries = Dir["*"]      case entries.length      when 0 then raise "Empty archive"      when 1 then Dir.chdir entries.first rescue nil @@ -275,7 +275,7 @@ class CurlDownloadStrategy < AbstractFileDownloadStrategy        unless urls.empty?          ohai "Downloading from #{urls.last}"          if !ENV["HOMEBREW_NO_INSECURE_REDIRECT"].nil? && @url.start_with?("https://") && -          urls.any? { |u| !u.start_with? "https://" } +           urls.any? { |u| !u.start_with? "https://" }            raise "HTTPS to HTTP redirect detected & HOMEBREW_NO_INSECURE_REDIRECT is set."          end          @url = urls.last @@ -346,7 +346,7 @@ class CurlDownloadStrategy < AbstractFileDownloadStrategy    def curl(*args)      args.concat _curl_opts -    args << '--connect-timeout' << '5' unless mirrors.empty? +    args << "--connect-timeout" << "5" unless mirrors.empty?      super    end  end @@ -378,7 +378,7 @@ class CurlApacheMirrorDownloadStrategy < CurlDownloadStrategy      mirrors = Utils::JSON.load(apache_mirrors)      path_info = mirrors.fetch("path_info") -    @url = mirrors.fetch('preferred') + path_info +    @url = mirrors.fetch("preferred") + path_info      @mirrors |= %W[https://archive.apache.org/dist/#{path_info}]      ohai "Best Mirror #{@url}" @@ -392,8 +392,8 @@ end  # Query parameters on the URL are converted into POST parameters  class CurlPostDownloadStrategy < CurlDownloadStrategy    def _fetch -    base_url,data = @url.split('?') -    curl base_url, '-d', data, '-C', downloaded_size, '-o', temporary_path +    base_url, data = @url.split("?") +    curl base_url, "-d", data, "-C", downloaded_size, "-o", temporary_path    end  end @@ -438,20 +438,21 @@ class S3DownloadStrategy < CurlDownloadStrategy    def _fetch      # Put the aws gem requirement here (vs top of file) so it's only      # a dependency of S3 users, not all Homebrew users -    require 'rubygems' +    require "rubygems"      begin -      require 'aws-sdk-v1' +      require "aws-sdk-v1"      rescue LoadError        onoe "Install the aws-sdk gem into the gem repo used by brew."        raise      end -    if @url !~ %r[^https?://+([^.]+).s3.amazonaws.com/+(.+)$] then +    if @url !~ %r{^https?://+([^.]+).s3.amazonaws.com/+(.+)$}        raise "Bad S3 URL: " + @url      end -    (bucket,key) = $1,$2 +    bucket = $1 +    key = $2 -    obj = AWS::S3.new().buckets[bucket].objects[key] +    obj = AWS::S3.new.buckets[bucket].objects[key]      begin        s3url = obj.url_for(:get)      rescue AWS::Errors::MissingCredentialsError @@ -459,7 +460,7 @@ class S3DownloadStrategy < CurlDownloadStrategy        s3url = obj.public_url      end -    curl s3url, '-C', downloaded_size, '-o', temporary_path +    curl s3url, "-C", downloaded_size, "-o", temporary_path    end  end @@ -470,7 +471,7 @@ class SubversionDownloadStrategy < VCSDownloadStrategy    end    def fetch -    clear_cache unless @url.chomp("/") == repo_url or quiet_system "svn", "switch", @url, cached_location +    clear_cache unless @url.chomp("/") == repo_url || quiet_system("svn", "switch", @url, cached_location)      super    end @@ -492,16 +493,16 @@ class SubversionDownloadStrategy < VCSDownloadStrategy      end    end -  def fetch_repo target, url, revision=nil, ignore_externals=false +  def fetch_repo(target, url, revision = nil, ignore_externals = false)      # Use "svn up" when the repository already exists locally.      # This saves on bandwidth and will have a similar effect to verifying the      # cache as it will make any changes to get the right revision. -    svncommand = target.directory? ? 'up' : 'checkout' -    args = ['svn', svncommand] +    svncommand = target.directory? ? "up" : "checkout" +    args = ["svn", svncommand]      args << url unless target.directory?      args << target -    args << '-r' << revision if revision -    args << '--ignore-externals' if ignore_externals +    args << "-r" << revision if revision +    args << "--ignore-externals" if ignore_externals      quiet_safe_system(*args)    end @@ -537,10 +538,10 @@ class GitDownloadStrategy < VCSDownloadStrategy      %r{git://},      %r{https://github\.com},      %r{http://git\.sv\.gnu\.org}, -    %r{http://llvm\.org}, +    %r{http://llvm\.org}    ] -  def initialize name, resource +  def initialize(name, resource)      super      @ref_type ||= :branch      @ref ||= "master" @@ -589,11 +590,11 @@ class GitDownloadStrategy < VCSDownloadStrategy    end    def has_ref? -    quiet_system 'git', '--git-dir', git_dir, 'rev-parse', '-q', '--verify', "#{@ref}^{commit}" +    quiet_system "git", "--git-dir", git_dir, "rev-parse", "-q", "--verify", "#{@ref}^{commit}"    end    def current_revision -    Utils.popen_read('git', '--git-dir', git_dir, 'rev-parse', '-q', '--verify', "HEAD").strip +    Utils.popen_read("git", "--git-dir", git_dir, "rev-parse", "-q", "--verify", "HEAD").strip    end    def repo_valid? @@ -605,11 +606,11 @@ class GitDownloadStrategy < VCSDownloadStrategy    end    def clone_args -    args = %w{clone} -    args << '--depth' << '1' if shallow_clone? +    args = %w[clone] +    args << "--depth" << "1" if shallow_clone?      case @ref_type -    when :branch, :tag then args << '--branch' << @ref +    when :branch, :tag then args << "--branch" << @ref      end      args << @url << cached_location @@ -617,29 +618,29 @@ class GitDownloadStrategy < VCSDownloadStrategy    def refspec      case @ref_type -    when :branch then "+refs/heads/#@ref:refs/remotes/origin/#@ref" -    when :tag    then "+refs/tags/#@ref:refs/tags/#@ref" +    when :branch then "+refs/heads/#{@ref}:refs/remotes/origin/#{@ref}" +    when :tag    then "+refs/tags/#{@ref}:refs/tags/#{@ref}"      else              "+refs/heads/master:refs/remotes/origin/master"      end    end    def config_repo -    safe_system 'git', 'config', 'remote.origin.url', @url -    safe_system 'git', 'config', 'remote.origin.fetch', refspec +    safe_system "git", "config", "remote.origin.url", @url +    safe_system "git", "config", "remote.origin.fetch", refspec    end    def update_repo      if @ref_type == :branch || !has_ref?        if !shallow_clone? && is_shallow_clone? -        quiet_safe_system 'git', 'fetch', 'origin', '--unshallow' +        quiet_safe_system "git", "fetch", "origin", "--unshallow"        else -        quiet_safe_system 'git', 'fetch', 'origin' +        quiet_safe_system "git", "fetch", "origin"        end      end    end    def clone_repo -    safe_system 'git', *clone_args +    safe_system "git", *clone_args      cached_location.cd do        safe_system "git", "config", "homebrew.cacheversion", cache_version        update_submodules if submodules? @@ -652,15 +653,15 @@ class GitDownloadStrategy < VCSDownloadStrategy    def reset_args      ref = case @ref_type -          when :branch then "origin/#@ref" +          when :branch then "origin/#{@ref}"            when :revision, :tag then @ref            end -    %W{reset --hard #{ref}} +    %W[reset --hard #{ref}]    end    def reset -    quiet_safe_system 'git', *reset_args +    quiet_safe_system "git", *reset_args    end    def update_submodules @@ -672,11 +673,11 @@ end  class CVSDownloadStrategy < VCSDownloadStrategy    def initialize(name, resource)      super -    @url = @url.sub(%r[^cvs://], "") +    @url = @url.sub(%r{^cvs://}, "")      if meta.key?(:module)        @module = meta.fetch(:module) -    elsif @url !~ %r[:[^/]+$] +    elsif @url !~ %r{:[^/]+$}        @module = name      else        @module, @url = split_url(@url) @@ -712,15 +713,15 @@ class CVSDownloadStrategy < VCSDownloadStrategy    def split_url(in_url)      parts = in_url.split(/:/)      mod=parts.pop -    url=parts.join(':') -    [ mod, url ] +    url=parts.join(":") +    [mod, url]    end  end  class MercurialDownloadStrategy < VCSDownloadStrategy    def initialize(name, resource)      super -    @url = @url.sub(%r[^hg://], "") +    @url = @url.sub(%r{^hg://}, "")    end    def stage @@ -728,10 +729,10 @@ class MercurialDownloadStrategy < VCSDownloadStrategy      dst = Dir.getwd      cached_location.cd do -      if @ref_type and @ref -        safe_system hgpath, 'archive', '--subrepos', '-y', '-r', @ref, '-t', 'files', dst +      if @ref_type && @ref +        safe_system hgpath, "archive", "--subrepos", "-y", "-r", @ref, "-t", "files", dst        else -        safe_system hgpath, 'archive', '--subrepos', '-y', '-t', 'files', dst +        safe_system hgpath, "archive", "--subrepos", "-y", "-t", "files", dst        end      end    end @@ -758,7 +759,7 @@ end  class BazaarDownloadStrategy < VCSDownloadStrategy    def initialize(name, resource)      super -    @url = @url.sub(%r[^bzr://], "") +    @url = @url.sub(%r{^bzr://}, "")    end    def stage @@ -791,7 +792,7 @@ end  class FossilDownloadStrategy < VCSDownloadStrategy    def initialize(name, resource)      super -    @url = @url.sub(%r[^fossil://], "") +    @url = @url.sub(%r{^fossil://}, "")    end    def stage @@ -814,15 +815,14 @@ class FossilDownloadStrategy < VCSDownloadStrategy    def update      safe_system fossilpath, "pull", "-R", cached_location    end -  end  class DownloadStrategyDetector -  def self.detect(url, strategy=nil) +  def self.detect(url, strategy = nil)      if strategy.nil?        detect_from_url(url)      elsif Class === strategy && strategy < AbstractDownloadStrategy -        strategy +      strategy      elsif Symbol === strategy        detect_from_symbol(strategy)      else @@ -833,25 +833,25 @@ class DownloadStrategyDetector    def self.detect_from_url(url)      case url -    when %r[^https?://.+\.git$], %r[^git://] +    when %r{^https?://.+\.git$}, %r{^git://}        GitDownloadStrategy -    when %r[^https?://www\.apache\.org/dyn/closer\.cgi] +    when %r{^https?://www\.apache\.org/dyn/closer\.cgi}        CurlApacheMirrorDownloadStrategy -    when %r[^https?://(.+?\.)?googlecode\.com/svn], %r[^https?://svn\.], %r[^svn://], %r[^https?://(.+?\.)?sourceforge\.net/svnroot/] +    when %r{^https?://(.+?\.)?googlecode\.com/svn}, %r{^https?://svn\.}, %r{^svn://}, %r{^https?://(.+?\.)?sourceforge\.net/svnroot/}        SubversionDownloadStrategy -    when %r[^cvs://] +    when %r{^cvs://}        CVSDownloadStrategy -    when %r[^https?://(.+?\.)?googlecode\.com/hg] +    when %r{^https?://(.+?\.)?googlecode\.com/hg}        MercurialDownloadStrategy -    when %r[^hg://] +    when %r{^hg://}        MercurialDownloadStrategy -    when %r[^bzr://] +    when %r{^bzr://}        BazaarDownloadStrategy -    when %r[^fossil://] +    when %r{^fossil://}        FossilDownloadStrategy -    when %r[^http://svn\.apache\.org/repos/], %r[^svn\+http://] +    when %r{^http://svn\.apache\.org/repos/}, %r{^svn\+http://}        SubversionDownloadStrategy -    when %r[^https?://(.+?\.)?sourceforge\.net/hgweb/] +    when %r{^https?://(.+?\.)?sourceforge\.net/hgweb/}        MercurialDownloadStrategy      else        CurlDownloadStrategy diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb index 609613952..841cc8b39 100644 --- a/Library/Homebrew/exceptions.rb +++ b/Library/Homebrew/exceptions.rb @@ -5,7 +5,7 @@ class KegUnspecifiedError < UsageError; end  class MultipleVersionsInstalledError < RuntimeError    attr_reader :name -  def initialize name +  def initialize(name)      @name = name      super "#{name} has multiple installed versions"    end @@ -16,7 +16,7 @@ class NotAKegError < RuntimeError; end  class NoSuchKegError < RuntimeError    attr_reader :name -  def initialize name +  def initialize(name)      @name = name      super "No such keg: #{HOMEBREW_CELLAR}/#{name}"    end @@ -37,12 +37,12 @@ class FormulaUnavailableError < RuntimeError    attr_reader :name    attr_accessor :dependent -  def initialize name +  def initialize(name)      @name = name    end    def dependent_s -    "(dependency of #{dependent})" if dependent and dependent != name +    "(dependency of #{dependent})" if dependent && dependent != name    end    def to_s @@ -53,7 +53,7 @@ end  class TapFormulaUnavailableError < FormulaUnavailableError    attr_reader :tap, :user, :repo -  def initialize tap, name +  def initialize(tap, name)      @tap = tap      @user = tap.user      @repo = tap.repo @@ -70,7 +70,7 @@ end  class TapFormulaAmbiguityError < RuntimeError    attr_reader :name, :paths, :formulae -  def initialize name, paths +  def initialize(name, paths)      @name = name      @paths = paths      @formulae = paths.map do |path| @@ -89,7 +89,7 @@ end  class TapUnavailableError < RuntimeError    attr_reader :name -  def initialize name +  def initialize(name)      @name = name      super <<-EOS.undent @@ -99,7 +99,7 @@ class TapUnavailableError < RuntimeError  end  class OperationInProgressError < RuntimeError -  def initialize name +  def initialize(name)      message = <<-EOS.undent        Operation already in progress for #{name}        Another active Homebrew process is already using #{name}. @@ -149,7 +149,7 @@ class FormulaConflictError < RuntimeError      message << "Cannot install #{formula.full_name} because conflicting formulae are installed.\n"      message.concat conflicts.map { |c| conflict_message(c) } << ""      message << <<-EOS.undent -      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        link the formula again after the install finishes. You can --force this @@ -166,7 +166,7 @@ class BuildError < RuntimeError    def initialize(formula, cmd, args, env)      @formula = formula      @env = env -    args = args.map{ |arg| arg.to_s.gsub " ", "\\ " }.join(" ") +    args = args.map { |arg| arg.to_s.gsub " ", "\\ " }.join(" ")      super "Failed executing: #{cmd} #{args}"    end @@ -182,7 +182,7 @@ class BuildError < RuntimeError    end    def dump -    if not ARGV.verbose? +    if !ARGV.verbose?        puts        puts "#{Tty.red}READ THIS#{Tty.reset}: #{Tty.em}#{OS::ISSUES_URL}#{Tty.reset}"        if formula.tap? @@ -196,8 +196,8 @@ class BuildError < RuntimeError          end        end      else -      require 'cmd/config' -      require 'cmd/--env' +      require "cmd/config" +      require "cmd/--env"        ohai "Formula"        puts "Tap: #{formula.tap}" if formula.tap? @@ -210,13 +210,13 @@ class BuildError < RuntimeError        onoe "#{formula.full_name} #{formula.version} did not build"        unless (logs = Dir["#{formula.logs}/*"]).empty?          puts "Logs:" -        puts logs.map{|fn| "     #{fn}"}.join("\n") +        puts logs.map { |fn| "     #{fn}" }.join("\n")        end      end      puts      unless RUBY_VERSION < "1.8.7" || issues.empty?        puts "These open issues may also help:" -      puts issues.map{ |i| "#{i['title']} #{i['html_url']}" }.join("\n") +      puts issues.map { |i| "#{i["title"]} #{i["html_url"]}" }.join("\n")      end      if MacOS.version >= "10.11" @@ -253,7 +253,7 @@ end  class CurlDownloadStrategyError < RuntimeError    def initialize(url)      case url -    when %r[^file://(.+)] +    when %r{^file://(.+)}        super "File does not exist: #{$1}"      else        super "Download failed: #{url}" @@ -263,7 +263,7 @@ end  # raised by safe_system in utils.rb  class ErrorDuringExecution < RuntimeError -  def initialize(cmd, args=[]) +  def initialize(cmd, args = [])      args = args.map { |a| a.to_s.gsub " ", "\\ " }.join(" ")      super "Failure while executing: #{cmd} #{args}"    end @@ -276,7 +276,7 @@ class ChecksumMissingError < ArgumentError; end  class ChecksumMismatchError < RuntimeError    attr_reader :expected, :hash_type -  def initialize fn, expected, actual +  def initialize(fn, expected, actual)      @expected = expected      @hash_type = expected.hash_type.to_s.upcase @@ -303,7 +303,7 @@ class DuplicateResourceError < ArgumentError  end  class BottleVersionMismatchError < RuntimeError -  def initialize bottle_file, bottle_version, formula, formula_version +  def initialize(bottle_file, bottle_version, formula, formula_version)      super <<-EOS.undent        Bottle version mismatch        Bottle: #{bottle_file} (#{bottle_version}) diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index 4a95f0d5a..a8eb9a5d2 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -37,8 +37,8 @@ module HomebrewArgvExtension    end    def kegs -    require 'keg' -    require 'formula' +    require "keg" +    require "formula"      @kegs ||= downcased_unique_named.collect do |name|        canonical_name = Formulary.canonical_name(name)        rack = HOMEBREW_CELLAR/canonical_name @@ -72,38 +72,45 @@ module HomebrewArgvExtension    end    # self documenting perhaps? -  def include? arg +  def include?(arg)      @n=index arg    end +    def next -    at @n+1 or raise UsageError +    at(@n+1) || raise(UsageError)    end -  def value arg -    arg = find {|o| o =~ /--#{arg}=(.+)/} +  def value(arg) +    arg = find { |o| o =~ /--#{arg}=(.+)/ }      $1 if arg    end    def force? -    flag? '--force' +    flag? "--force"    end +    def verbose? -    flag? '--verbose' or !ENV['VERBOSE'].nil? or !ENV['HOMEBREW_VERBOSE'].nil? +    flag?("--verbose") || !ENV["VERBOSE"].nil? || !ENV["HOMEBREW_VERBOSE"].nil?    end +    def debug? -    flag? '--debug' or !ENV['HOMEBREW_DEBUG'].nil? +    flag?("--debug") || !ENV["HOMEBREW_DEBUG"].nil?    end +    def quieter? -    flag? '--quieter' +    flag? "--quieter"    end +    def interactive? -    flag? '--interactive' +    flag? "--interactive"    end +    def one? -    flag? '--1' +    flag? "--1"    end +    def dry_run? -    include?('--dry-run') || switch?('n') +    include?("--dry-run") || switch?("n")    end    def git? @@ -111,7 +118,7 @@ module HomebrewArgvExtension    end    def homebrew_developer? -    include? '--homebrew-developer' or !ENV['HOMEBREW_DEVELOPER'].nil? +    include?("--homebrew-developer") || !ENV["HOMEBREW_DEVELOPER"].nil?    end    def sandbox? @@ -119,46 +126,46 @@ module HomebrewArgvExtension    end    def ignore_deps? -    include? '--ignore-dependencies' +    include? "--ignore-dependencies"    end    def only_deps? -    include? '--only-dependencies' +    include? "--only-dependencies"    end    def json -    value 'json' +    value "json"    end    def build_head? -    include? '--HEAD' +    include? "--HEAD"    end    def build_devel? -    include? '--devel' +    include? "--devel"    end    def build_stable? -    not (build_head? or build_devel?) +    !(build_head? || build_devel?)    end    def build_universal? -    include? '--universal' +    include? "--universal"    end    # Request a 32-bit only build.    # This is needed for some use-cases though we prefer to build Universal    # when a 32-bit version is needed.    def build_32_bit? -    include? '--32-bit' +    include? "--32-bit"    end    def build_bottle? -    include? '--build-bottle' or !ENV['HOMEBREW_BUILD_BOTTLE'].nil? +    include?("--build-bottle") || !ENV["HOMEBREW_BUILD_BOTTLE"].nil?    end    def bottle_arch -    arch = value 'bottle-arch' +    arch = value "bottle-arch"      arch.to_sym if arch    end @@ -166,36 +173,36 @@ module HomebrewArgvExtension      switch?("s") || include?("--build-from-source") || !!ENV["HOMEBREW_BUILD_FROM_SOURCE"]    end -  def flag? flag +  def flag?(flag)      options_only.include?(flag) || switch?(flag[2, 1])    end    def force_bottle? -    include? '--force-bottle' +    include? "--force-bottle"    end    # eg. `foo -ns -i --bar` has three switches, n, s and i -  def switch? char +  def switch?(char)      return false if char.length > 1      options_only.any? { |arg| arg[1, 1] != "-" && arg.include?(char) }    end    def usage -    require 'cmd/help' +    require "cmd/help"      Homebrew.help_s    end    def cc -    value 'cc' +    value "cc"    end    def env -    value 'env' +    value "env"    end    private -  def spec(default=:stable) +  def spec(default = :stable)      if include?("--HEAD")        :head      elsif include?("--devel") diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb index 74c9a47f3..3ef091490 100644 --- a/Library/Homebrew/extend/ENV.rb +++ b/Library/Homebrew/extend/ENV.rb @@ -1,7 +1,7 @@ -require 'hardware' -require 'extend/ENV/shared' -require 'extend/ENV/std' -require 'extend/ENV/super' +require "hardware" +require "extend/ENV/shared" +require "extend/ENV/std" +require "extend/ENV/super"  def superenv?    Superenv.bin && ARGV.env != "std" diff --git a/Library/Homebrew/extend/ENV/shared.rb b/Library/Homebrew/extend/ENV/shared.rb index fe98e5af9..740ed347d 100644 --- a/Library/Homebrew/extend/ENV/shared.rb +++ b/Library/Homebrew/extend/ENV/shared.rb @@ -4,8 +4,8 @@ require "compilers"  module SharedEnvExtension    include CompilerConstants -  CC_FLAG_VARS = %w{CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS} -  FC_FLAG_VARS = %w{FCFLAGS FFLAGS} +  CC_FLAG_VARS = %w[CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS] +  FC_FLAG_VARS = %w[FCFLAGS FFLAGS]    SANITIZED_VARS = %w[      CDPATH GREP_OPTIONS CLICOLOR_FORCE @@ -18,7 +18,7 @@ module SharedEnvExtension      LIBRARY_PATH    ] -  def setup_build_environment(formula=nil) +  def setup_build_environment(formula = nil)      @formula = formula      reset    end @@ -28,20 +28,23 @@ module SharedEnvExtension    end    def remove_cc_etc -    keys = %w{CC CXX OBJC OBJCXX LD CPP CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS LDFLAGS CPPFLAGS} -    removed = Hash[*keys.map{ |key| [key, self[key]] }.flatten] +    keys = %w[CC CXX OBJC OBJCXX LD CPP CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS LDFLAGS CPPFLAGS] +    removed = Hash[*keys.map { |key| [key, self[key]] }.flatten]      keys.each do |key|        delete(key)      end      removed    end -  def append_to_cflags newflags + +  def append_to_cflags(newflags)      append(CC_FLAG_VARS, newflags)    end -  def remove_from_cflags val + +  def remove_from_cflags(val)      remove CC_FLAG_VARS, val    end -  def append keys, value, separator = ' ' + +  def append(keys, value, separator = " ")      value = value.to_s      Array(keys).each do |key|        old = self[key] @@ -52,7 +55,8 @@ module SharedEnvExtension        end      end    end -  def prepend keys, value, separator = ' ' + +  def prepend(keys, value, separator = " ")      value = value.to_s      Array(keys).each do |key|        old = self[key] @@ -64,37 +68,63 @@ module SharedEnvExtension      end    end -  def append_path key, path +  def append_path(key, path)      append key, path, File::PATH_SEPARATOR if File.directory? path    end -  def prepend_path key, path +  def prepend_path(key, path)      prepend key, path, File::PATH_SEPARATOR if File.directory? path    end -  def prepend_create_path key, path +  def prepend_create_path(key, path)      path = Pathname.new(path) unless path.is_a? Pathname      path.mkpath      prepend_path key, path    end -  def remove keys, value +  def remove(keys, value)      Array(keys).each do |key|        next unless self[key] -      self[key] = self[key].sub(value, '') +      self[key] = self[key].sub(value, "")        delete(key) if self[key].empty?      end if value    end -  def cc;       self['CC'];           end -  def cxx;      self['CXX'];          end -  def cflags;   self['CFLAGS'];       end -  def cxxflags; self['CXXFLAGS'];     end -  def cppflags; self['CPPFLAGS'];     end -  def ldflags;  self['LDFLAGS'];      end -  def fc;       self['FC'];           end -  def fflags;   self['FFLAGS'];       end -  def fcflags;  self['FCFLAGS'];      end +  def cc +    self["CC"] +  end + +  def cxx +    self["CXX"] +  end + +  def cflags +    self["CFLAGS"] +  end + +  def cxxflags +    self["CXXFLAGS"] +  end + +  def cppflags +    self["CPPFLAGS"] +  end + +  def ldflags +    self["LDFLAGS"] +  end + +  def fc +    self["FC"] +  end + +  def fflags +    self["FFLAGS"] +  end + +  def fcflags +    self["FCFLAGS"] +  end    def compiler      @compiler ||= if (cc = ARGV.cc) @@ -133,14 +163,14 @@ module SharedEnvExtension    # See: https://bugs.python.org/issue6848    # Currently only used by aalib in core    def ncurses_define -    append 'CPPFLAGS', "-DNCURSES_OPAQUE=0" +    append "CPPFLAGS", "-DNCURSES_OPAQUE=0"    end    def userpaths! -    paths = ORIGINAL_PATHS.map { |p| p.realpath.to_s rescue nil } - %w{/usr/X11/bin /opt/X11/bin} -    self['PATH'] = paths.unshift(*self['PATH'].split(File::PATH_SEPARATOR)).uniq.join(File::PATH_SEPARATOR) +    paths = ORIGINAL_PATHS.map { |p| p.realpath.to_s rescue nil } - %w[/usr/X11/bin /opt/X11/bin] +    self["PATH"] = paths.unshift(*self["PATH"].split(File::PATH_SEPARATOR)).uniq.join(File::PATH_SEPARATOR)      # XXX hot fix to prefer brewed stuff (e.g. python) over /usr/bin. -    prepend_path 'PATH', HOMEBREW_PREFIX/'bin' +    prepend_path "PATH", HOMEBREW_PREFIX/"bin"    end    def fortran @@ -149,9 +179,9 @@ module SharedEnvExtension      if fc        ohai "Building with an alternative Fortran compiler"        puts "This is unsupported." -      self['F77'] ||= fc +      self["F77"] ||= fc -      if ARGV.include? '--default-fortran-flags' +      if ARGV.include? "--default-fortran-flags"          flags = FC_FLAG_VARS.reject { |key| self[key] }        elsif values_at(*FC_FLAG_VARS).compact.empty?          opoo <<-EOS.undent @@ -165,14 +195,14 @@ module SharedEnvExtension        end      else -      if (gfortran = which('gfortran', (HOMEBREW_PREFIX/'bin').to_s)) +      if (gfortran = which("gfortran", (HOMEBREW_PREFIX/"bin").to_s))          ohai "Using Homebrew-provided fortran compiler." -      elsif (gfortran = which('gfortran', ORIGINAL_PATHS.join(File::PATH_SEPARATOR))) +      elsif (gfortran = which("gfortran", ORIGINAL_PATHS.join(File::PATH_SEPARATOR)))          ohai "Using a fortran compiler found at #{gfortran}."        end        if gfortran          puts "This may be changed by setting the FC environment variable." -        self['FC'] = self['F77'] = gfortran +        self["FC"] = self["F77"] = gfortran          flags = FC_FLAG_VARS        end      end @@ -183,14 +213,14 @@ module SharedEnvExtension    # ld64 is a newer linker provided for Xcode 2.5    def ld64 -    ld64 = Formulary.factory('ld64') -    self['LD'] = ld64.bin/'ld' +    ld64 = Formulary.factory("ld64") +    self["LD"] = ld64.bin/"ld"      append "LDFLAGS", "-B#{ld64.bin}/"    end    def gcc_version_formula(name)      version = name[GNU_GCC_REGEXP, 1] -    gcc_version_name = "gcc#{version.delete('.')}" +    gcc_version_name = "gcc#{version.delete(".")}"      gcc = Formulary.factory("gcc")      if gcc.opt_bin.join(name).exist? @@ -222,11 +252,11 @@ module SharedEnvExtension    private -  def cc= val +  def cc=(val)      self["CC"] = self["OBJC"] = val.to_s    end -  def cxx= val +  def cxx=(val)      self["CXX"] = self["OBJCXX"] = val.to_s    end diff --git a/Library/Homebrew/extend/ENV/std.rb b/Library/Homebrew/extend/ENV/std.rb index 56ac68a87..6798e6cd3 100644 --- a/Library/Homebrew/extend/ENV/std.rb +++ b/Library/Homebrew/extend/ENV/std.rb @@ -1,44 +1,44 @@ -require 'hardware' -require 'os/mac' -require 'extend/ENV/shared' +require "hardware" +require "os/mac" +require "extend/ENV/shared"  module Stdenv    include SharedEnvExtension    SAFE_CFLAGS_FLAGS = "-w -pipe" -  DEFAULT_FLAGS = '-march=core2 -msse4' +  DEFAULT_FLAGS = "-march=core2 -msse4"    def self.extended(base) -    unless ORIGINAL_PATHS.include? HOMEBREW_PREFIX/'bin' -      base.prepend_path 'PATH', "#{HOMEBREW_PREFIX}/bin" +    unless ORIGINAL_PATHS.include? HOMEBREW_PREFIX/"bin" +      base.prepend_path "PATH", "#{HOMEBREW_PREFIX}/bin"      end    end -  def setup_build_environment(formula=nil) +  def setup_build_environment(formula = nil)      super      if MacOS.version >= :mountain_lion        # Mountain Lion's sed is stricter, and errors out when        # it encounters files with mixed character sets -      delete('LC_ALL') -      self['LC_CTYPE']="C" +      delete("LC_ALL") +      self["LC_CTYPE"]="C"      end      # Set the default pkg-config search path, overriding the built-in paths      # Anything in PKG_CONFIG_PATH is searched before paths in this variable -    self['PKG_CONFIG_LIBDIR'] = determine_pkg_config_libdir +    self["PKG_CONFIG_LIBDIR"] = determine_pkg_config_libdir      # make any aclocal stuff installed in Homebrew available -    self['ACLOCAL_PATH'] = "#{HOMEBREW_PREFIX}/share/aclocal" if MacOS::Xcode.provides_autotools? +    self["ACLOCAL_PATH"] = "#{HOMEBREW_PREFIX}/share/aclocal" if MacOS::Xcode.provides_autotools? -    self['MAKEFLAGS'] = "-j#{self.make_jobs}" +    self["MAKEFLAGS"] = "-j#{make_jobs}" -    unless HOMEBREW_PREFIX.to_s == '/usr/local' +    unless HOMEBREW_PREFIX.to_s == "/usr/local"        # /usr/local is already an -isystem and -L directory so we skip it -      self['CPPFLAGS'] = "-isystem#{HOMEBREW_PREFIX}/include" -      self['LDFLAGS'] = "-L#{HOMEBREW_PREFIX}/lib" +      self["CPPFLAGS"] = "-isystem#{HOMEBREW_PREFIX}/include" +      self["LDFLAGS"] = "-L#{HOMEBREW_PREFIX}/lib"        # CMake ignores the variables above -      self['CMAKE_PREFIX_PATH'] = HOMEBREW_PREFIX.to_s +      self["CMAKE_PREFIX_PATH"] = HOMEBREW_PREFIX.to_s      end      frameworks = HOMEBREW_PREFIX.join("Frameworks") @@ -51,7 +51,7 @@ module Stdenv      # Os is the default Apple uses for all its stuff so let's trust them      set_cflags "-Os #{SAFE_CFLAGS_FLAGS}" -    append 'LDFLAGS', '-Wl,-headerpad_max_install_names' +    append "LDFLAGS", "-Wl,-headerpad_max_install_names"      send(compiler) @@ -82,13 +82,13 @@ module Stdenv    # This is useful for makefiles with race conditions.    # When passed a block, MAKEFLAGS is removed only for the duration of the block and is restored after its completion.    def deparallelize -    old = self['MAKEFLAGS'] -    remove 'MAKEFLAGS', /-j\d+/ +    old = self["MAKEFLAGS"] +    remove "MAKEFLAGS", /-j\d+/      if block_given?        begin          yield        ensure -        self['MAKEFLAGS'] = old +        self["MAKEFLAGS"] = old        end      end @@ -97,9 +97,9 @@ module Stdenv    alias_method :j1, :deparallelize    # These methods are no-ops for compatibility. -  %w{fast O4 Og}.each { |opt| define_method(opt) {} } +  %w[fast O4 Og].each { |opt| define_method(opt) {} } -  %w{O3 O2 O1 O0 Os}.each do |opt| +  %w[O3 O2 O1 O0 Os].each do |opt|      define_method opt do        remove_from_cflags(/-O./)        append_to_cflags "-#{opt}" @@ -118,7 +118,7 @@ module Stdenv    def gcc_4_0      super -    set_cpu_cflags '-march=nocona -mssse3' +    set_cpu_cflags "-march=nocona -mssse3"    end    alias_method :gcc_4_0_1, :gcc_4_0 @@ -149,53 +149,53 @@ module Stdenv      set_cpu_cflags "-march=native", map    end -  def remove_macosxsdk version=MacOS.version +  def remove_macosxsdk(version = MacOS.version)      # Clear all lib and include dirs from CFLAGS, CPPFLAGS, LDFLAGS that were      # previously added by macosxsdk      version = version.to_s      remove_from_cflags(/ ?-mmacosx-version-min=10\.\d/) -    delete('MACOSX_DEPLOYMENT_TARGET') -    delete('CPATH') -    remove 'LDFLAGS', "-L#{HOMEBREW_PREFIX}/lib" +    delete("MACOSX_DEPLOYMENT_TARGET") +    delete("CPATH") +    remove "LDFLAGS", "-L#{HOMEBREW_PREFIX}/lib"      if (sdk = MacOS.sdk_path(version)) && !MacOS::CLT.installed? -      delete('SDKROOT') +      delete("SDKROOT")        remove_from_cflags "-isysroot #{sdk}" -      remove 'CPPFLAGS', "-isysroot #{sdk}" -      remove 'LDFLAGS', "-isysroot #{sdk}" -      if HOMEBREW_PREFIX.to_s == '/usr/local' -        delete('CMAKE_PREFIX_PATH') +      remove "CPPFLAGS", "-isysroot #{sdk}" +      remove "LDFLAGS", "-isysroot #{sdk}" +      if HOMEBREW_PREFIX.to_s == "/usr/local" +        delete("CMAKE_PREFIX_PATH")        else          # It was set in setup_build_environment, so we have to restore it here. -        self['CMAKE_PREFIX_PATH'] = HOMEBREW_PREFIX.to_s +        self["CMAKE_PREFIX_PATH"] = HOMEBREW_PREFIX.to_s        end -      remove 'CMAKE_FRAMEWORK_PATH', "#{sdk}/System/Library/Frameworks" +      remove "CMAKE_FRAMEWORK_PATH", "#{sdk}/System/Library/Frameworks"      end    end -  def macosxsdk version=MacOS.version +  def macosxsdk(version = MacOS.version)      return unless OS.mac?      # Sets all needed lib and include dirs to CFLAGS, CPPFLAGS, LDFLAGS.      remove_macosxsdk      version = version.to_s      append_to_cflags("-mmacosx-version-min=#{version}") -    self['MACOSX_DEPLOYMENT_TARGET'] = version -    self['CPATH'] = "#{HOMEBREW_PREFIX}/include" -    prepend 'LDFLAGS', "-L#{HOMEBREW_PREFIX}/lib" +    self["MACOSX_DEPLOYMENT_TARGET"] = version +    self["CPATH"] = "#{HOMEBREW_PREFIX}/include" +    prepend "LDFLAGS", "-L#{HOMEBREW_PREFIX}/lib"      if (sdk = MacOS.sdk_path(version)) && !MacOS::CLT.installed?        # Extra setup to support Xcode 4.3+ without CLT. -      self['SDKROOT'] = sdk +      self["SDKROOT"] = sdk        # Tell clang/gcc where system include's are: -      append_path 'CPATH', "#{sdk}/usr/include" +      append_path "CPATH", "#{sdk}/usr/include"        # The -isysroot is needed, too, because of the Frameworks        append_to_cflags "-isysroot #{sdk}" -      append 'CPPFLAGS', "-isysroot #{sdk}" +      append "CPPFLAGS", "-isysroot #{sdk}"        # And the linker needs to find sdk/usr/lib -      append 'LDFLAGS', "-isysroot #{sdk}" +      append "LDFLAGS", "-isysroot #{sdk}"        # Needed to build cmake itself and perhaps some cmake projects: -      append_path 'CMAKE_PREFIX_PATH', "#{sdk}/usr" -      append_path 'CMAKE_FRAMEWORK_PATH', "#{sdk}/System/Library/Frameworks" +      append_path "CMAKE_PREFIX_PATH", "#{sdk}/usr" +      append_path "CMAKE_FRAMEWORK_PATH", "#{sdk}/System/Library/Frameworks"      end    end @@ -203,6 +203,7 @@ module Stdenv      set_cflags "-Os #{SAFE_CFLAGS_FLAGS}"      macosxsdk unless MacOS::CLT.installed?    end +    def no_optimization      set_cflags SAFE_CFLAGS_FLAGS      macosxsdk unless MacOS::CLT.installed? @@ -211,10 +212,10 @@ module Stdenv    # Some configure scripts won't find libxml2 without help    def libxml2      if MacOS::CLT.installed? -      append 'CPPFLAGS', '-I/usr/include/libxml2' +      append "CPPFLAGS", "-I/usr/include/libxml2"      else        # Use the includes form the sdk -      append 'CPPFLAGS', "-I#{MacOS.sdk_path}/usr/include/libxml2" +      append "CPPFLAGS", "-I#{MacOS.sdk_path}/usr/include/libxml2"      end    end @@ -238,7 +239,7 @@ module Stdenv      append_path "ACLOCAL_PATH", "#{MacOS::X11.share}/aclocal" -    if MacOS::XQuartz.provided_by_apple? and not MacOS::CLT.installed? +    if MacOS::XQuartz.provided_by_apple? && !MacOS::CLT.installed?        append_path "CMAKE_PREFIX_PATH", "#{MacOS.sdk_path}/usr/X11"      end @@ -248,21 +249,22 @@ module Stdenv    # we've seen some packages fail to build when warnings are disabled!    def enable_warnings -    remove_from_cflags '-w' +    remove_from_cflags "-w"    end    def m64 -    append_to_cflags '-m64' -    append 'LDFLAGS', "-arch #{Hardware::CPU.arch_64_bit}" +    append_to_cflags "-m64" +    append "LDFLAGS", "-arch #{Hardware::CPU.arch_64_bit}"    end +    def m32 -    append_to_cflags '-m32' -    append 'LDFLAGS', "-arch #{Hardware::CPU.arch_32_bit}" +    append_to_cflags "-m32" +    append "LDFLAGS", "-arch #{Hardware::CPU.arch_32_bit}"    end    def universal_binary      append_to_cflags Hardware::CPU.universal_archs.as_arch_flags -    append 'LDFLAGS', Hardware::CPU.universal_archs.as_arch_flags +    append "LDFLAGS", Hardware::CPU.universal_archs.as_arch_flags      if compiler != :clang && Hardware.is_32_bit?        # Can't mix "-march" for a 32-bit CPU  with "-arch x86_64" @@ -272,10 +274,10 @@ module Stdenv    def cxx11      if compiler == :clang -      append 'CXX', '-std=c++11' -      append 'CXX', '-stdlib=libc++' +      append "CXX", "-std=c++11" +      append "CXX", "-stdlib=libc++"      elsif compiler =~ /gcc-(4\.(8|9)|5)/ -      append 'CXX', '-std=c++11' +      append "CXX", "-std=c++11"      else        raise "The selected compiler doesn't support C++11: #{compiler}"      end @@ -283,36 +285,36 @@ module Stdenv    def libcxx      if compiler == :clang -      append 'CXX', '-stdlib=libc++' +      append "CXX", "-stdlib=libc++"      end    end    def libstdcxx      if compiler == :clang -      append 'CXX', '-stdlib=libstdc++' +      append "CXX", "-stdlib=libstdc++"      end    end -  def replace_in_cflags before, after +  def replace_in_cflags(before, after)      CC_FLAG_VARS.each do |key| -      self[key] = self[key].sub(before, after) if has_key?(key) +      self[key] = self[key].sub(before, after) if key?(key)      end    end    # Convenience method to set all C compiler flags in one shot. -  def set_cflags val +  def set_cflags(val)      CC_FLAG_VARS.each { |key| self[key] = val }    end    # Sets architecture-specific flags for every environment variable    # given in the list `flags`. -  def set_cpu_flags flags, default=DEFAULT_FLAGS, map=Hardware::CPU.optimization_flags -    cflags =~ %r{(-Xarch_#{Hardware::CPU.arch_32_bit} )-march=} +  def set_cpu_flags(flags, default = DEFAULT_FLAGS, map = Hardware::CPU.optimization_flags) +    cflags =~ /(-Xarch_#{Hardware::CPU.arch_32_bit} )-march=/      xarch = $1.to_s -    remove flags, %r{(-Xarch_#{Hardware::CPU.arch_32_bit} )?-march=\S*} -    remove flags, %r{( -Xclang \S+)+} -    remove flags, %r{-mssse3} -    remove flags, %r{-msse4(\.\d)?} +    remove flags, /(-Xarch_#{Hardware::CPU.arch_32_bit} )?-march=\S*/ +    remove flags, /( -Xclang \S+)+/ +    remove flags, /-mssse3/ +    remove flags, /-msse4(\.\d)?/      append flags, xarch unless xarch.empty?      append flags, map.fetch(effective_arch, default)    end @@ -330,14 +332,14 @@ module Stdenv      end    end -  def set_cpu_cflags default=DEFAULT_FLAGS, map=Hardware::CPU.optimization_flags +  def set_cpu_cflags(default = DEFAULT_FLAGS, map = Hardware::CPU.optimization_flags)      set_cpu_flags CC_FLAG_VARS, default, map    end    def make_jobs      # '-j' requires a positive integral argument -    if self['HOMEBREW_MAKE_JOBS'].to_i > 0 -      self['HOMEBREW_MAKE_JOBS'].to_i +    if self["HOMEBREW_MAKE_JOBS"].to_i > 0 +      self["HOMEBREW_MAKE_JOBS"].to_i      else        Hardware::CPU.cores      end diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index cc187434b..911602919 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -1,5 +1,5 @@ -require 'os/mac' -require 'extend/ENV/shared' +require "os/mac" +require "extend/ENV/shared"  ### Why `superenv`?  # 1) Only specify the environment we need (NO LDFLAGS for cmake) @@ -34,29 +34,29 @@ module Superenv      delete("as_nl")    end -  def setup_build_environment(formula=nil) +  def setup_build_environment(formula = nil)      super      send(compiler) -    self['MAKEFLAGS'] ||= "-j#{determine_make_jobs}" -    self['PATH'] = determine_path -    self['PKG_CONFIG_PATH'] = determine_pkg_config_path -    self['PKG_CONFIG_LIBDIR'] = determine_pkg_config_libdir -    self['HOMEBREW_CCCFG'] = determine_cccfg -    self['HOMEBREW_OPTIMIZATION_LEVEL'] = 'Os' -    self['HOMEBREW_BREW_FILE'] = HOMEBREW_BREW_FILE.to_s -    self['HOMEBREW_PREFIX'] = HOMEBREW_PREFIX.to_s -    self['HOMEBREW_CELLAR'] = HOMEBREW_CELLAR.to_s -    self['HOMEBREW_TEMP'] = HOMEBREW_TEMP.to_s -    self['HOMEBREW_SDKROOT'] = effective_sysroot -    self['HOMEBREW_OPTFLAGS'] = determine_optflags -    self['HOMEBREW_ARCHFLAGS'] = '' -    self['CMAKE_PREFIX_PATH'] = determine_cmake_prefix_path -    self['CMAKE_FRAMEWORK_PATH'] = determine_cmake_frameworks_path -    self['CMAKE_INCLUDE_PATH'] = determine_cmake_include_path -    self['CMAKE_LIBRARY_PATH'] = determine_cmake_library_path -    self['ACLOCAL_PATH'] = determine_aclocal_path -    self['M4'] = MacOS.locate("m4") if deps.any? { |d| d.name == "autoconf" } +    self["MAKEFLAGS"] ||= "-j#{determine_make_jobs}" +    self["PATH"] = determine_path +    self["PKG_CONFIG_PATH"] = determine_pkg_config_path +    self["PKG_CONFIG_LIBDIR"] = determine_pkg_config_libdir +    self["HOMEBREW_CCCFG"] = determine_cccfg +    self["HOMEBREW_OPTIMIZATION_LEVEL"] = "Os" +    self["HOMEBREW_BREW_FILE"] = HOMEBREW_BREW_FILE.to_s +    self["HOMEBREW_PREFIX"] = HOMEBREW_PREFIX.to_s +    self["HOMEBREW_CELLAR"] = HOMEBREW_CELLAR.to_s +    self["HOMEBREW_TEMP"] = HOMEBREW_TEMP.to_s +    self["HOMEBREW_SDKROOT"] = effective_sysroot +    self["HOMEBREW_OPTFLAGS"] = determine_optflags +    self["HOMEBREW_ARCHFLAGS"] = "" +    self["CMAKE_PREFIX_PATH"] = determine_cmake_prefix_path +    self["CMAKE_FRAMEWORK_PATH"] = determine_cmake_frameworks_path +    self["CMAKE_INCLUDE_PATH"] = determine_cmake_include_path +    self["CMAKE_LIBRARY_PATH"] = determine_cmake_library_path +    self["ACLOCAL_PATH"] = determine_aclocal_path +    self["M4"] = MacOS.locate("m4") if deps.any? { |d| d.name == "autoconf" }      self["HOMEBREW_ISYSTEM_PATHS"] = determine_isystem_paths      self["HOMEBREW_INCLUDE_PATHS"] = determine_include_paths      self["HOMEBREW_LIBRARY_PATHS"] = determine_library_paths @@ -83,11 +83,11 @@ module Superenv    private -  def cc= val +  def cc=(val)      self["HOMEBREW_CC"] = super    end -  def cxx= val +  def cxx=(val)      self["HOMEBREW_CXX"] = super    end @@ -96,7 +96,7 @@ module Superenv    end    def determine_cxx -    determine_cc.to_s.gsub('gcc', 'g++').gsub('clang', 'clang++') +    determine_cc.to_s.gsub("gcc", "g++").gsub("clang", "clang++")    end    def determine_path @@ -113,15 +113,15 @@ module Superenv      end      paths << MacOS::X11.bin.to_s if x11? -    paths += %w{/usr/bin /bin /usr/sbin /sbin} +    paths += %w[/usr/bin /bin /usr/sbin /sbin]      # Homebrew's apple-gcc42 will be outside the PATH in superenv,      # so xcrun may not be able to find it      case homebrew_cc      when "gcc-4.2"        begin -       apple_gcc42 = Formulary.factory('apple-gcc42') -      rescue FormulaUnavailableError +        apple_gcc42 = Formulary.factory("apple-gcc42") +       rescue FormulaUnavailableError        end        paths << apple_gcc42.opt_bin.to_s if apple_gcc42      when GNU_GCC_REGEXP @@ -139,7 +139,7 @@ module Superenv    end    def determine_pkg_config_libdir -    paths = %W{/usr/lib/pkgconfig #{HOMEBREW_LIBRARY}/ENV/pkgconfig/#{MacOS.version}} +    paths = %W[/usr/lib/pkgconfig #{HOMEBREW_LIBRARY}/ENV/pkgconfig/#{MacOS.version}]      paths << "#{MacOS::X11.lib}/pkgconfig" << "#{MacOS::X11.share}/pkgconfig" if x11?      paths.to_path_s    end @@ -210,7 +210,7 @@ module Superenv    end    def determine_make_jobs -    if (j = self['HOMEBREW_MAKE_JOBS'].to_i) < 1 +    if (j = self["HOMEBREW_MAKE_JOBS"].to_i) < 1        Hardware::CPU.cores      else        j @@ -234,9 +234,9 @@ module Superenv    def determine_cccfg      s = ""      # Fix issue with sed barfing on unicode characters on Mountain Lion -    s << 's' if MacOS.version >= :mountain_lion +    s << "s" if MacOS.version >= :mountain_lion      # Fix issue with >= 10.8 apr-1-config having broken paths -    s << 'a' if MacOS.version >= :mountain_lion +    s << "a" if MacOS.version >= :mountain_lion      s    end @@ -246,12 +246,12 @@ module Superenv    # This is useful for makefiles with race conditions.    # When passed a block, MAKEFLAGS is removed only for the duration of the block and is restored after its completion.    def deparallelize -    old = delete('MAKEFLAGS') +    old = delete("MAKEFLAGS")      if block_given?        begin          yield        ensure -        self['MAKEFLAGS'] = old +        self["MAKEFLAGS"] = old        end      end @@ -260,16 +260,16 @@ module Superenv    alias_method :j1, :deparallelize    def make_jobs -    self['MAKEFLAGS'] =~ /-\w*j(\d)+/ +    self["MAKEFLAGS"] =~ /-\w*j(\d)+/      [$1.to_i, 1].max    end    def universal_binary -    self['HOMEBREW_ARCHFLAGS'] = Hardware::CPU.universal_archs.as_arch_flags +    self["HOMEBREW_ARCHFLAGS"] = Hardware::CPU.universal_archs.as_arch_flags      # GCC doesn't accept "-march" for a 32-bit CPU with "-arch x86_64"      if compiler != :clang && Hardware.is_32_bit? -      self['HOMEBREW_OPTFLAGS'] = self['HOMEBREW_OPTFLAGS'].sub( +      self["HOMEBREW_OPTFLAGS"] = self["HOMEBREW_OPTFLAGS"].sub(          /-march=\S*/,          "-Xarch_#{Hardware::CPU.arch_32_bit} \\0"        ) @@ -291,10 +291,10 @@ module Superenv    def cxx11      case homebrew_cc      when "clang" -      append 'HOMEBREW_CCCFG', "x", '' -      append 'HOMEBREW_CCCFG', "g", '' +      append "HOMEBREW_CCCFG", "x", "" +      append "HOMEBREW_CCCFG", "g", ""      when /gcc-(4\.(8|9)|5)/ -      append 'HOMEBREW_CCCFG', "x", '' +      append "HOMEBREW_CCCFG", "x", ""      else        raise "The selected compiler doesn't support C++11: #{homebrew_cc}"      end @@ -309,32 +309,31 @@ module Superenv    end    def refurbish_args -    append 'HOMEBREW_CCCFG', "O", '' +    append "HOMEBREW_CCCFG", "O", ""    end -  %w{O3 O2 O1 O0 Os}.each do |opt| +  %w[O3 O2 O1 O0 Os].each do |opt|      define_method opt do -      self['HOMEBREW_OPTIMIZATION_LEVEL'] = opt +      self["HOMEBREW_OPTIMIZATION_LEVEL"] = opt      end    end -  def noop(*args); end +  def noop(*_args); end    noops = []    # These methods are no longer necessary under superenv, but are needed to    # maintain an interface compatible with stdenv. -  noops.concat %w{fast O4 Og libxml2 set_cpu_flags macosxsdk remove_macosxsdk} +  noops.concat %w[fast O4 Og libxml2 set_cpu_flags macosxsdk remove_macosxsdk]    # These methods provide functionality that has not yet been ported to    # superenv. -  noops.concat %w{gcc_4_0_1 minimal_optimization no_optimization enable_warnings} +  noops.concat %w[gcc_4_0_1 minimal_optimization no_optimization enable_warnings]    noops.each { |m| alias_method m, :noop }  end -  class Array    def to_path_s -    map(&:to_s).uniq.select{|s| File.directory? s }.join(File::PATH_SEPARATOR).chuzzle +    map(&:to_s).uniq.select { |s| File.directory? s }.join(File::PATH_SEPARATOR).chuzzle    end  end diff --git a/Library/Homebrew/extend/fileutils.rb b/Library/Homebrew/extend/fileutils.rb index 4778d9039..741fca57f 100644 --- a/Library/Homebrew/extend/fileutils.rb +++ b/Library/Homebrew/extend/fileutils.rb @@ -3,10 +3,9 @@ require "tmpdir"  # We enhance FileUtils to make our Formula code more readable.  module FileUtils -    # Create a temporary directory then yield. When the block returns,    # recursively delete the temporary directory. -  def mktemp(prefix=name) +  def mktemp(prefix = name)      prev = pwd      tmp  = Dir.mktmpdir(prefix, HOMEBREW_TEMP) @@ -26,7 +25,7 @@ module FileUtils    # A version of mkdir that also changes to that folder in a block.    alias_method :old_mkdir, :mkdir -  def mkdir name, &block +  def mkdir(name, &_block)      old_mkdir(name)      if block_given?        chdir name do @@ -46,8 +45,8 @@ module FileUtils      class Entry_        alias_method :old_copy_metadata, :copy_metadata        def copy_metadata(path) -        st = lstat() -        if !st.symlink? +        st = lstat +        unless st.symlink?            File.utime st.atime, st.mtime, path          end          begin @@ -87,20 +86,20 @@ module FileUtils    # Run scons using a Homebrew-installed version, instead of whatever    # is in the user's PATH -  def scons *args +  def scons(*args)      system Formulary.factory("scons").opt_bin/"scons", *args    end -  def rake *args -    system RUBY_BIN/'rake', *args +  def rake(*args) +    system RUBY_BIN/"rake", *args    end    alias_method :old_ruby, :ruby if method_defined?(:ruby) -  def ruby *args +  def ruby(*args)      system RUBY_PATH, *args    end -  def xcodebuild *args +  def xcodebuild(*args)      removed = ENV.remove_cc_etc      system "xcodebuild", *args    ensure diff --git a/Library/Homebrew/extend/module.rb b/Library/Homebrew/extend/module.rb index 045508fd1..f4ea4de55 100644 --- a/Library/Homebrew/extend/module.rb +++ b/Library/Homebrew/extend/module.rb @@ -1,6 +1,6 @@  class Module    def attr_rw(*attrs) -    file, line, _ = caller.first.split(":") +    file, line, = caller.first.split(":")      line = line.to_i      attrs.each do |attr| diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index 40c6eba31..c71a636e9 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -1,7 +1,7 @@ -require 'pathname' -require 'mach' -require 'resource' -require 'metafiles' +require "pathname" +require "mach" +require "resource" +require "metafiles"  # we enhance pathname to make our code more readable  class Pathname @@ -9,7 +9,7 @@ class Pathname    BOTTLE_EXTNAME_RX = /(\.[a-z0-9_]+\.bottle\.(\d+\.)?tar\.gz)$/ -  def install *sources +  def install(*sources)      sources.each do |src|        case src        when Resource @@ -48,7 +48,7 @@ class Pathname      #   https://bugs.ruby-lang.org/issues/7707      # In that case, use the system "mv" command.      if src.symlink? -      raise unless Kernel.system 'mv', src, dst +      raise unless Kernel.system "mv", src, dst      else        FileUtils.mv src, dst      end @@ -56,7 +56,7 @@ class Pathname    private :install_p    # Creates symlinks to sources in this folder. -  def install_symlink *sources +  def install_symlink(*sources)      sources.each do |src|        case src        when Array @@ -80,7 +80,7 @@ class Pathname    # we assume this pathname object is a file obviously    alias_method :old_write, :write if method_defined?(:write)    def write(content, *open_args) -    raise "Will not overwrite #{to_s}" if exist? +    raise "Will not overwrite #{self}" if exist?      dirname.mkpath      open("w", *open_args) { |f| f.write(content) }    end @@ -94,7 +94,7 @@ class Pathname    end unless method_defined?(:binread)    # NOTE always overwrites -  def atomic_write content +  def atomic_write(content)      require "tempfile"      tf = Tempfile.new(basename.to_s, dirname)      begin @@ -124,24 +124,24 @@ class Pathname    def default_stat      sentinel = parent.join(".brew.#{Process.pid}.#{rand(Time.now.to_i)}") -    sentinel.open("w") { } +    sentinel.open("w") {}      sentinel.stat    ensure      sentinel.unlink    end    private :default_stat -  def cp dst +  def cp(dst)      opoo "Pathname#cp is deprecated, use FileUtils.cp"      if file?        FileUtils.cp to_s, dst      else        FileUtils.cp_r to_s, dst      end -    return dst +    dst    end -  def cp_path_sub pattern, replacement +  def cp_path_sub(pattern, replacement)      raise "#{self} does not exist" unless self.exist?      dst = sub(pattern, replacement) @@ -158,13 +158,13 @@ class Pathname    end    # extended to support common double extensions -  alias extname_old extname -  def extname(path=to_s) +  alias_method :extname_old, :extname +  def extname(path = to_s)      BOTTLE_EXTNAME_RX.match(path)      return $1 if $1      /(\.(tar|cpio|pax)\.(gz|bz2|lz|xz|Z))$/.match(path)      return $1 if $1 -    return File.extname(path) +    File.extname(path)    end    # for filetypes we support, basename without extension @@ -179,7 +179,7 @@ class Pathname      rmdir      true    rescue Errno::ENOTEMPTY -    if (ds_store = self+'.DS_Store').exist? && children.length == 1 +    if (ds_store = self+".DS_Store").exist? && children.length == 1        ds_store.unlink        retry      else @@ -189,14 +189,14 @@ class Pathname      false    end -  def chmod_R perms +  def chmod_R(perms)      opoo "Pathname#chmod_R is deprecated, use FileUtils.chmod_R" -    require 'fileutils' +    require "fileutils"      FileUtils.chmod_R perms, to_s    end    def version -    require 'version' +    require "version"      Version.parse(self)    end @@ -218,7 +218,7 @@ class Pathname      # Get enough of the file to detect common file types      # POSIX tar magic has a 257 byte offset      # magic numbers stolen from /usr/share/file/magic/ -    case open('rb') { |f| f.read(262) } +    case open("rb") { |f| f.read(262) }      when /^PK\003\004/n         then :zip      when /^\037\213/n           then :gzip      when /^BZh/n                then :bzip2 @@ -241,7 +241,7 @@ class Pathname    end    def text_executable? -    %r[^#!\s*\S+] === open('r') { |f| f.read(1024) } +    /^#!\s*\S+/ === open("r") { |f| f.read(1024) }    end    def incremental_hash(klass) @@ -256,30 +256,30 @@ class Pathname    end    def sha1 -    require 'digest/sha1' +    require "digest/sha1"      incremental_hash(Digest::SHA1)    end    def sha256 -    require 'digest/sha2' +    require "digest/sha2"      incremental_hash(Digest::SHA2)    end -  def verify_checksum expected -    raise ChecksumMissingError if expected.nil? or expected.empty? +  def verify_checksum(expected) +    raise ChecksumMissingError if expected.nil? || expected.empty?      actual = Checksum.new(expected.hash_type, send(expected.hash_type).downcase)      raise ChecksumMismatchError.new(self, expected, actual) unless expected == actual    end -  # FIXME eliminate the places where we rely on this method +  # FIXME: eliminate the places where we rely on this method    alias_method :to_str, :to_s unless method_defined?(:to_str)    def cd -    Dir.chdir(self){ yield } +    Dir.chdir(self) { yield }    end    def subdirs -    children.select{ |child| child.directory? } +    children.select(&:directory?)    end    def resolved_path @@ -328,7 +328,7 @@ class Pathname    end    # Writes an exec script in this folder for each target pathname -  def write_exec_script *targets +  def write_exec_script(*targets)      targets.flatten!      if targets.empty?        opoo "tried to write exec scripts to #{self} for an empty list of targets" @@ -337,7 +337,7 @@ class Pathname      mkpath      targets.each do |target|        target = Pathname.new(target) # allow pathnames or strings -      (self+target.basename()).write <<-EOS.undent +      (self+target.basename).write <<-EOS.undent          #!/bin/bash          exec "#{target}" "$@"        EOS @@ -345,18 +345,18 @@ class Pathname    end    # Writes an exec script that sets environment variables -  def write_env_script target, env -    env_export = '' -    env.each {|key, value| env_export += "#{key}=\"#{value}\" "} +  def write_env_script(target, env) +    env_export = "" +    env.each { |key, value| env_export += "#{key}=\"#{value}\" " }      dirname.mkpath -    self.write <<-EOS.undent +    write <<-EOS.undent      #!/bin/bash      #{env_export}exec "#{target}" "$@"      EOS    end    # Writes a wrapper env script and moves all files to the dst -  def env_script_all_files dst, env +  def env_script_all_files(dst, env)      dst.mkpath      Pathname.glob("#{self}/*") do |file|        next if file.directory? @@ -367,7 +367,7 @@ class Pathname    end    # 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      (self+script_name).write <<-EOS.undent        #!/bin/bash @@ -375,7 +375,7 @@ class Pathname      EOS    end -  def install_metafiles from=Pathname.pwd +  def install_metafiles(from = Pathname.pwd)      Pathname(from).children.each do |p|        next if p.directory?        next unless Metafiles.copy?(p.basename.to_s) @@ -420,7 +420,7 @@ class Pathname          File.dirname(prefix)        elsif /#{SEPARATOR_PAT}/o =~ prefix          prefix = File.dirname(prefix) -        prefix = File.join(prefix, "") if File.basename(prefix + 'a') != 'a' +        prefix = File.join(prefix, "") if File.basename(prefix + "a") != "a"          prefix + relpath        else          prefix + relpath @@ -456,25 +456,29 @@ module ObserverPathnameExtension    def unlink      super -    puts "rm #{to_s}" if ARGV.verbose? +    puts "rm #{self}" if ARGV.verbose?      ObserverPathnameExtension.n += 1    end +    def rmdir      super -    puts "rmdir #{to_s}" if ARGV.verbose? +    puts "rmdir #{self}" if ARGV.verbose?      ObserverPathnameExtension.d += 1    end -  def make_relative_symlink src + +  def make_relative_symlink(src)      super      puts "ln -s #{src.relative_path_from(dirname)} #{basename}" if ARGV.verbose?      ObserverPathnameExtension.n += 1    end +    def install_info      super -    puts "info #{to_s}" if ARGV.verbose? +    puts "info #{self}" if ARGV.verbose?    end +    def uninstall_info      super -    puts "uninfo #{to_s}" if ARGV.verbose? +    puts "uninfo #{self}" if ARGV.verbose?    end  end diff --git a/Library/Homebrew/extend/string.rb b/Library/Homebrew/extend/string.rb index 17575ca8e..fc507e151 100644 --- a/Library/Homebrew/extend/string.rb +++ b/Library/Homebrew/extend/string.rb @@ -1,6 +1,6 @@  class String    def undent -    gsub(/^.{#{(slice(/^ +/) || '').length}}/, '') +    gsub(/^.{#{(slice(/^ +/) || '').length}}/, "")    end    # eg: @@ -35,7 +35,7 @@ module StringInreplaceExtension      str.errors = []    end -  def sub! before, after +  def sub!(before, after)      result = super      unless result        errors << "expected replacement of #{before.inspect} with #{after.inspect}" @@ -44,7 +44,7 @@ module StringInreplaceExtension    end    # Warn if nothing was replaced -  def gsub! before, after, audit_result=true +  def gsub!(before, after, audit_result = true)      result = super(before, after)      if audit_result && result.nil?        errors << "expected replacement of #{before.inspect} with #{after.inspect}" @@ -54,14 +54,14 @@ module StringInreplaceExtension    # Looks for Makefile style variable defintions and replaces the    # value with "new_value", or removes the definition entirely. -  def change_make_var! flag, new_value +  def change_make_var!(flag, new_value)      unless gsub!(/^#{Regexp.escape(flag)}[ \t]*=[ \t]*(.*)$/, "#{flag}=#{new_value}", false)        errors << "expected to change #{flag.inspect} to #{new_value.inspect}"      end    end    # Removes variable assignments completely. -  def remove_make_var! flags +  def remove_make_var!(flags)      Array(flags).each do |flag|        # Also remove trailing \n, if present.        unless gsub!(/^#{Regexp.escape(flag)}[ \t]*=.*$\n?/, "", false) @@ -71,7 +71,7 @@ module StringInreplaceExtension    end    # Finds the specified variable -  def get_make_var flag +  def get_make_var(flag)      self[/^#{Regexp.escape(flag)}[ \t]*=[ \t]*(.*)$/, 1]    end  end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 09ff37d8a..87746eada 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1,15 +1,15 @@ -require 'formula_support' -require 'formula_lock' -require 'formula_pin' -require 'hardware' -require 'bottles' -require 'build_environment' -require 'build_options' -require 'formulary' -require 'software_spec' -require 'install_renamed' -require 'pkg_version' -require 'tap' +require "formula_support" +require "formula_lock" +require "formula_pin" +require "hardware" +require "bottles" +require "build_environment" +require "build_options" +require "formulary" +require "software_spec" +require "install_renamed" +require "pkg_version" +require "tap"  # A formula provides instructions and metadata for Homebrew to install a piece  # of software. Every Homebrew formula is a {Formula}. @@ -141,7 +141,7 @@ class Formula    def determine_active_spec(requested)      spec = send(requested) || stable || devel || head -    spec or raise FormulaSpecificationError, "formulae require at least a URL" +    spec || raise(FormulaSpecificationError, "formulae require at least a URL")    end    def validate_attributes! @@ -314,175 +314,242 @@ class Formula    # The currently installed version for this formula. Will raise an exception    # if the formula is not installed.    def installed_version -    require 'keg' +    require "keg"      Keg.new(installed_prefix).version    end    # The directory in the cellar that the formula is installed to.    # This directory contains the formula's name and version. -  def prefix(v=pkg_version) +  def prefix(v = pkg_version)      Pathname.new("#{HOMEBREW_CELLAR}/#{name}/#{v}")    end    # The parent of the prefix; the named directory in the cellar containing all    # installed versions of this software -  def rack; prefix.parent end +  def rack +    prefix.parent +  end    # The directory where the formula's binaries should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def bin;     prefix+'bin'     end +  def bin +    prefix+"bin" +  end    # The directory where the formula's documentation should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def doc;     share+'doc'+name end +  def doc +    share+"doc"+name +  end    # The directory where the formula's headers should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def include; prefix+'include' end +  def include +    prefix+"include" +  end    # The directory where the formula's info files should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def info;    share+'info'     end +  def info +    share+"info" +  end    # The directory where the formula's libraries should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def lib;     prefix+'lib'     end +  def lib +    prefix+"lib" +  end    # The directory where the formula's binaries should be installed.    # This is not symlinked into `HOMEBREW_PREFIX`.    # It is also commonly used to install files that we do not wish to be    # symlinked into HOMEBREW_PREFIX from one of the other directories and    # instead manually create symlinks or wrapper scripts into e.g. {#bin}. -  def libexec; prefix+'libexec' end +  def libexec +    prefix+"libexec" +  end    # The root directory where the formula's manual pages should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only.    # Often one of the more specific `man` functions should be used instead    # e.g. {#man1} -  def man;     share+'man'      end +  def man +    share+"man" +  end    # The directory where the formula's man1 pages should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def man1;    man+'man1'       end +  def man1 +    man+"man1" +  end    # The directory where the formula's man2 pages should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def man2;    man+'man2'       end +  def man2 +    man+"man2" +  end    # The directory where the formula's man3 pages should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def man3;    man+'man3'       end +  def man3 +    man+"man3" +  end    # The directory where the formula's man4 pages should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def man4;    man+'man4'       end +  def man4 +    man+"man4" +  end    # The directory where the formula's man5 pages should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def man5;    man+'man5'       end +  def man5 +    man+"man5" +  end    # The directory where the formula's man6 pages should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def man6;    man+'man6'       end +  def man6 +    man+"man6" +  end    # The directory where the formula's man7 pages should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def man7;    man+'man7'       end +  def man7 +    man+"man7" +  end    # The directory where the formula's man8 pages should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def man8;    man+'man8'       end +  def man8 +    man+"man8" +  end    # The directory where the formula's `sbin` binaries should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only.    # Generally we try to migrate these to {#bin} instead. -  def sbin;    prefix+'sbin'    end +  def sbin +    prefix+"sbin" +  end    # The directory where the formula's shared files should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def share;   prefix+'share'   end +  def share +    prefix+"share" +  end    # The directory where the formula's shared files should be installed,    # with the name of the formula appended to avoid linking conflicts.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def pkgshare;    prefix+'share'+name    end +  def pkgshare +    prefix+"share"+name +  end    # The directory where the formula's Frameworks should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only.    # This is not symlinked into `HOMEBREW_PREFIX`. -  def frameworks; prefix+'Frameworks' end +  def frameworks +    prefix+"Frameworks" +  end    # The directory where the formula's kernel extensions should be installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only.    # This is not symlinked into `HOMEBREW_PREFIX`. -  def kext_prefix; prefix+'Library/Extensions' end +  def kext_prefix +    prefix+"Library/Extensions" +  end    # The directory where the formula's configuration files should be installed.    # Anything using `etc.install` will not overwrite other files on e.g. upgrades    # but will write a new file named `*.default`.    # This directory is not inside the `HOMEBREW_CELLAR` so it is persisted    # across upgrades. -  def etc; (HOMEBREW_PREFIX+'etc').extend(InstallRenamed) end +  def etc +    (HOMEBREW_PREFIX+"etc").extend(InstallRenamed) +  end    # The directory where the formula's variable files should be installed.    # This directory is not inside the `HOMEBREW_CELLAR` so it is persisted    # across upgrades. -  def var; HOMEBREW_PREFIX+'var' end +  def var +    HOMEBREW_PREFIX+"var" +  end    # The directory where the formula's Bash completion files should be    # installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def bash_completion; prefix+'etc/bash_completion.d'    end +  def bash_completion +    prefix+"etc/bash_completion.d" +  end    # The directory where the formula's ZSH completion files should be    # installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def zsh_completion;  share+'zsh/site-functions'        end +  def zsh_completion +    share+"zsh/site-functions" +  end    # The directory where the formula's fish completion files should be    # installed.    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only. -  def fish_completion; share+'fish/vendor_completions.d' end +  def fish_completion +    share+"fish/vendor_completions.d" +  end    # The directory used for as the prefix for {#etc} and {#var} files on    # installation so, despite not being in `HOMEBREW_CELLAR`, they are installed    # there after pouring a bottle. -  def bottle_prefix; prefix+'.bottle' end +  def bottle_prefix +    prefix+".bottle" +  end    def logs      HOMEBREW_LOGS+name    end    # override this to provide a plist -  def plist; nil; end -  alias :startup_plist :plist +  def plist +    nil +  end +  alias_method :startup_plist, :plist    # plist name, i.e. the name of the launchd service -  def plist_name; 'homebrew.mxcl.'+name end -  def plist_path; prefix+(plist_name+'.plist') end -  def plist_manual; self.class.plist_manual end -  def plist_startup; self.class.plist_startup end +  def plist_name +    "homebrew.mxcl."+name +  end + +  def plist_path +    prefix+(plist_name+".plist") +  end + +  def plist_manual +    self.class.plist_manual +  end + +  def plist_startup +    self.class.plist_startup +  end    # A stable path for this formula, when installed. Contains the formula name    # but no version number. Only the active version will be linked here if @@ -494,19 +561,44 @@ class Formula      Pathname.new("#{HOMEBREW_PREFIX}/opt/#{name}")    end -  def opt_bin;     opt_prefix+'bin'     end -  def opt_include; opt_prefix+'include' end -  def opt_lib;     opt_prefix+'lib'     end -  def opt_libexec; opt_prefix+'libexec' end -  def opt_sbin;    opt_prefix+'sbin'    end -  def opt_share;   opt_prefix+'share'   end -  def opt_pkgshare; opt_prefix+'share'+name end -  def opt_frameworks; opt_prefix+'Frameworks' end +  def opt_bin +    opt_prefix+"bin" +  end + +  def opt_include +    opt_prefix+"include" +  end + +  def opt_lib +    opt_prefix+"lib" +  end + +  def opt_libexec +    opt_prefix+"libexec" +  end + +  def opt_sbin +    opt_prefix+"sbin" +  end + +  def opt_share +    opt_prefix+"share" +  end + +  def opt_pkgshare +    opt_prefix+"share"+name +  end + +  def opt_frameworks +    opt_prefix+"Frameworks" +  end    # Can be overridden to selectively disable bottles from formulae.    # Defaults to true so overridden version does not have to check if bottles    # are supported. -  def pour_bottle?; true end +  def pour_bottle? +    true +  end    # Can be overridden to run commands on both source and bottle installation.    def post_install; end @@ -524,7 +616,9 @@ class Formula    end    # tell the user about any caveats regarding this package, return a string -  def caveats; nil end +  def caveats +    nil +  end    # rarely, you don't want your library symlinked into the main prefix    # see gettext.rb for an example @@ -541,8 +635,8 @@ class Formula    #   skip_clean "bin/foo", "lib/bar"    # keep .la files with:    #   skip_clean :la -  def skip_clean? path -    return true if path.extname == '.la' and self.class.skip_clean_paths.include? :la +  def skip_clean?(path) +    return true if path.extname == ".la" && self.class.skip_clean_paths.include?(:la)      to_check = path.relative_path_from(prefix).to_s      self.class.skip_clean_paths.include? to_check    end @@ -601,7 +695,7 @@ class Formula      @pin.unpin    end -  def == other +  def ==(other)      instance_of?(other.class) &&        name == other.name &&        active_spec == other.active_spec @@ -653,7 +747,7 @@ class Formula    # an array of all core {Formula} names    def self.core_names -    @core_names ||= Dir["#{HOMEBREW_LIBRARY}/Formula/*.rb"].map{ |f| File.basename f, ".rb" }.sort +    @core_names ||= Dir["#{HOMEBREW_LIBRARY}/Formula/*.rb"].map { |f| File.basename f, ".rb" }.sort    end    # an array of all core {Formula} files @@ -714,7 +808,7 @@ class Formula    end    def self.aliases -    Dir["#{HOMEBREW_LIBRARY}/Aliases/*"].map{ |f| File.basename f }.sort +    Dir["#{HOMEBREW_LIBRARY}/Aliases/*"].map { |f| File.basename f }.sort    end    def self.[](name) @@ -727,13 +821,13 @@ class Formula    def tap      if path.to_s =~ HOMEBREW_TAP_DIR_REGEX -      "#$1/#$2" +      "#{$1}/#{$2}"      elsif core_formula?        "Homebrew/homebrew"      end    end -  def print_tap_action options={} +  def print_tap_action(options = {})      if tap?        verb = options[:verb] || "Installing"        ohai "#{verb} #{name} from #{tap}" @@ -794,9 +888,9 @@ class Formula        }      end -    hsh["options"] = options.map { |opt| +    hsh["options"] = options.map do |opt|        { "option" => opt.flag, "description" => opt.description } -    } +    end      if rack.directory?        rack.subdirs.each do |keg_path| @@ -815,14 +909,13 @@ class Formula      end      hsh -    end    def fetch      active_spec.fetch    end -  def verify_download_integrity fn +  def verify_download_integrity(fn)      active_spec.verify_download_integrity(fn)    end @@ -857,7 +950,7 @@ class Formula    protected -  def setup_test_home home +  def setup_test_home(home)      # keep Homebrew's site-packages in sys.path when testing with system Python      user_site_packages = home/"Library/Python/2.7/lib/python/site-packages"      user_site_packages.mkpath @@ -869,12 +962,12 @@ class Formula    # Pretty titles the command and buffers stdout/stderr    # Throws if there's an error -  def system cmd, *args +  def system(cmd, *args)      verbose = ARGV.verbose?      # remove "boring" arguments so that the important ones are more likely to      # be shown considering that we trim long ohai lines to the terminal width      pretty_args = args.dup -    if cmd == "./configure" and not verbose +    if cmd == "./configure" && !verbose        pretty_args.delete "--disable-dependency-tracking"        pretty_args.delete "--disable-debug"      end @@ -883,11 +976,11 @@ class Formula          pretty_args[i] = "import setuptools..."        end      end -    ohai "#{cmd} #{pretty_args*' '}".strip +    ohai "#{cmd} #{pretty_args*" "}".strip      @exec_count ||= 0      @exec_count += 1 -    logfn = "#{logs}/%02d.%s" % [@exec_count, File.basename(cmd).split(' ').first] +    logfn = "#{logs}/%02d.%s" % [@exec_count, File.basename(cmd).split(" ").first]      logs.mkpath      File.open(logfn, "w") do |log| @@ -941,9 +1034,9 @@ class Formula    private    def exec_cmd(cmd, args, out, logfn) -    ENV['HOMEBREW_CC_LOG_PATH'] = logfn +    ENV["HOMEBREW_CC_LOG_PATH"] = logfn -    # TODO system "xcodebuild" is deprecated, this should be removed soon. +    # TODO: system "xcodebuild" is deprecated, this should be removed soon.      if cmd.to_s.start_with? "xcodebuild"        ENV.remove_cc_etc      end @@ -962,7 +1055,7 @@ class Formula      $stdout.reopen(out)      $stderr.reopen(out)      out.close -    args.collect!{|arg| arg.to_s} +    args.collect!(&:to_s)      exec(cmd, *args) rescue nil      puts "Failed to execute: #{cmd}"      exit! 1 # never gets here unless exec threw or failed @@ -995,7 +1088,7 @@ class Formula      end    end -  def self.method_added method +  def self.method_added(method)      case method      when :brew        raise "You cannot override Formula#brew in class #{name}" @@ -1061,7 +1154,7 @@ class Formula      # @!attribute [w] url      # The URL used to download the source for the {#stable} version of the formula.      # We prefer `https` for security and proxy reasons. -    def url val, specs={} +    def url(val, specs = {})        stable.url(val, specs)      end @@ -1069,7 +1162,7 @@ class Formula      # The version string for the {#stable} version of the formula.      # The version is autodetected from the URL and/or tag so only needs to be      # declared if it cannot be autodetected correctly. -    def version val=nil +    def version(val = nil)        stable.version(val)      end @@ -1079,7 +1172,7 @@ class Formula      # there can be more than one. Generally we add them when the main {.url}      # is unreliable. If {.url} is really unreliable then we may swap the      # {.mirror} and {.url}. -    def mirror val +    def mirror(val)        stable.mirror(val)      end @@ -1098,7 +1191,7 @@ class Formula        define_method(type) { |val| stable.send(type, val) }      end -    def bottle *, &block +    def bottle(*, &block)        stable.bottle(&block)      end @@ -1106,19 +1199,19 @@ class Formula        stable.build      end -    def stable &block +    def stable(&block)        @stable ||= SoftwareSpec.new        return @stable unless block_given?        @stable.instance_eval(&block)      end -    def devel &block +    def devel(&block)        @devel ||= SoftwareSpec.new        return @devel unless block_given?        @devel.instance_eval(&block)      end -    def head val=nil, specs={}, &block +    def head(val = nil, specs = {}, &block)        @head ||= HeadSoftwareSpec.new        if block_given?          @head.instance_eval(&block) @@ -1130,33 +1223,33 @@ class Formula      end      # Define a named resource using a {SoftwareSpec} style block -    def resource name, klass=Resource, &block +    def resource(name, klass = Resource, &block)        specs.each do |spec|          spec.resource(name, klass, &block) unless spec.resource_defined?(name)        end      end -    def go_resource name, &block +    def go_resource(name, &block)        specs.each { |spec| spec.go_resource(name, &block) }      end -    def depends_on dep +    def depends_on(dep)        specs.each { |spec| spec.depends_on(dep) }      end -    def option name, description="" +    def option(name, description = "")        specs.each { |spec| spec.option(name, description) }      end -    def deprecated_option hash +    def deprecated_option(hash)        specs.each { |spec| spec.deprecated_option(hash) }      end -    def patch strip=:p1, src=nil, &block +    def patch(strip = :p1, src = nil, &block)        specs.each { |spec| spec.patch(strip, src, &block) }      end -    def plist_options options +    def plist_options(options)        @plist_startup = options[:startup]        @plist_manual = options[:manual]      end @@ -1165,12 +1258,12 @@ class Formula        @conflicts ||= []      end -    def conflicts_with *names +    def conflicts_with(*names)        opts = Hash === names.last ? names.pop : {}        names.each { |name| conflicts << FormulaConflict.new(name, opts[:because]) }      end -    def skip_clean *paths +    def skip_clean(*paths)        paths.flatten!        # Specifying :all is deprecated and will become an error        skip_clean_paths.merge(paths) @@ -1180,12 +1273,12 @@ class Formula        @skip_clean_paths ||= Set.new      end -    def keg_only reason, explanation="" +    def keg_only(reason, explanation = "")        @keg_only_reason = KegOnlyReason.new(reason, explanation)      end      # Pass :skip to this method to disable post-install stdlib checking -    def cxxstdlib_check check_type +    def cxxstdlib_check(check_type)        define_method(:skip_cxxstdlib_check?) { true } if check_type == :skip      end @@ -1216,15 +1309,15 @@ class Formula      # fails_with :gcc => '4.8' do      #   version '4.8.1'      # end -    def fails_with compiler, &block +    def fails_with(compiler, &block)        specs.each { |spec| spec.fails_with(compiler, &block) }      end -    def needs *standards +    def needs(*standards)        specs.each { |spec| spec.needs(*standards) }      end -    def test &block +    def test(&block)        define_method(:test, &block)      end    end diff --git a/Library/Homebrew/formula_assertions.rb b/Library/Homebrew/formula_assertions.rb index bdcf0aef2..b940f5b0a 100644 --- a/Library/Homebrew/formula_assertions.rb +++ b/Library/Homebrew/formula_assertions.rb @@ -24,7 +24,7 @@ module Homebrew      include Test::Unit::Assertions      # Returns the output of running cmd, and asserts the exit status -    def shell_output(cmd, result=0) +    def shell_output(cmd, result = 0)        ohai cmd        output = `#{cmd}`        assert_equal result, $?.exitstatus @@ -33,7 +33,7 @@ module Homebrew      # Returns the output of running the cmd with the optional input, and      # optionally asserts the exit status -    def pipe_output(cmd, input=nil, result=nil) +    def pipe_output(cmd, input = nil, result = nil)        ohai cmd        output = IO.popen(cmd, "w+") do |pipe|          pipe.write(input) unless input.nil? diff --git a/Library/Homebrew/formula_cellar_checks.rb b/Library/Homebrew/formula_cellar_checks.rb index b3ace41e8..0c62687ac 100644 --- a/Library/Homebrew/formula_cellar_checks.rb +++ b/Library/Homebrew/formula_cellar_checks.rb @@ -1,5 +1,5 @@  module FormulaCellarChecks -  def check_PATH bin +  def check_PATH(bin)      # warn the user if stuff was installed outside of their PATH      return unless bin.directory?      return unless bin.children.length > 0 @@ -18,7 +18,7 @@ module FormulaCellarChecks    def check_manpages      # Check for man pages that aren't in share/man -    return unless (formula.prefix+'man').directory? +    return unless (formula.prefix+"man").directory?      <<-EOS.undent        A top-level "man" directory was found @@ -29,7 +29,7 @@ module FormulaCellarChecks    def check_infopages      # Check for info pages that aren't in share/info -    return unless (formula.prefix+'info').directory? +    return unless (formula.prefix+"info").directory?      <<-EOS.undent        A top-level "info" directory was found @@ -57,11 +57,11 @@ module FormulaCellarChecks    def check_non_libraries      return unless formula.lib.directory? -    valid_extensions = %w(.a .dylib .framework .jnilib .la .o .so -                          .jar .prl .pm .sh) +    valid_extensions = %w[.a .dylib .framework .jnilib .la .o .so +                          .jar .prl .pm .sh]      non_libraries = formula.lib.children.select do |g|        next if g.directory? -      not valid_extensions.include? g.extname +      !valid_extensions.include? g.extname      end      return if non_libraries.empty? @@ -73,10 +73,10 @@ module FormulaCellarChecks      EOS    end -  def check_non_executables bin +  def check_non_executables(bin)      return unless bin.directory? -    non_exes = bin.children.select { |g| g.directory? or not g.executable? } +    non_exes = bin.children.select { |g| g.directory? || !g.executable? }      return if non_exes.empty?      <<-EOS.undent @@ -86,7 +86,7 @@ module FormulaCellarChecks      EOS    end -  def check_generic_executables bin +  def check_generic_executables(bin)      return unless bin.directory?      generic_names = %w[run service start stop]      generics = bin.children.select { |g| generic_names.include? g.basename.to_s } @@ -126,7 +126,7 @@ module FormulaCellarChecks      EOS    end -  def check_easy_install_pth lib +  def check_easy_install_pth(lib)      pth_found = Dir["#{lib}/python{2.7,3}*/site-packages/easy-install.pth"].map { |f| File.dirname(f) }      return if pth_found.empty? @@ -156,7 +156,7 @@ module FormulaCellarChecks      EOS    end -  def check_python_framework_links lib +  def check_python_framework_links(lib)      python_modules = Pathname.glob lib/"python*/site-packages/**/*.so"      framework_links = python_modules.select do |obj|        dlls = obj.dynamically_linked_libraries @@ -206,7 +206,7 @@ module FormulaCellarChecks      audit_check_output(check_easy_install_pth(formula.lib))      audit_check_output(check_openssl_links)      audit_check_output(check_python_framework_links(formula.lib)) -    audit_check_output(check_emacs_lisp(formula.share,formula.name)) +    audit_check_output(check_emacs_lisp(formula.share, formula.name))    end    private diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index c372ba287..9ea9b31ae 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -1,18 +1,18 @@ -require 'cxxstdlib' -require 'exceptions' -require 'formula' -require 'keg' -require 'tab' -require 'bottles' -require 'caveats' -require 'cleaner' -require 'formula_cellar_checks' -require 'install_renamed' -require 'cmd/tap' -require 'cmd/postinstall' -require 'hooks/bottles' -require 'debrew' -require 'sandbox' +require "cxxstdlib" +require "exceptions" +require "formula" +require "keg" +require "tab" +require "bottles" +require "caveats" +require "cleaner" +require "formula_cellar_checks" +require "install_renamed" +require "cmd/tap" +require "cmd/postinstall" +require "hooks/bottles" +require "debrew" +require "sandbox"  class FormulaInstaller    include FormulaCellarChecks @@ -55,7 +55,7 @@ class FormulaInstaller      @pour_failed   = false    end -  def pour_bottle? install_bottle_options={:warn=>false} +  def pour_bottle?(install_bottle_options = { :warn=>false })      return true if Homebrew::Hooks::Bottles.formula_has_bottle?(formula)      return false if @pour_failed @@ -84,7 +84,7 @@ class FormulaInstaller      return false unless dep.bottle && dep.pour_bottle?      return false unless build.used_options.empty?      return false unless dep.bottle.compatible_cellar? -    return true +    true    end    def prelude @@ -113,10 +113,10 @@ class FormulaInstaller      unless ignore_deps?        unlinked_deps = formula.recursive_dependencies.map(&:to_formula).select do |dep| -        dep.installed? and not dep.keg_only? and not dep.linked_keg.directory? +        dep.installed? && !dep.keg_only? && !dep.linked_keg.directory?        end        raise CannotInstallFormulaError, -        "You must `brew link #{unlinked_deps*' '}' before #{formula.full_name} can be installed" unless unlinked_deps.empty? +        "You must `brew link #{unlinked_deps*" "}' before #{formula.full_name} can be installed" unless unlinked_deps.empty?      end    end @@ -186,7 +186,7 @@ class FormulaInstaller          puts "Building from source because #{filename} has local changes"          puts "To install from a bottle instead, run with --force-bottle"        end -      compute_and_install_dependencies if @pour_failed and not ignore_deps? +      compute_and_install_dependencies if @pour_failed && !ignore_deps?        build        clean      end @@ -222,7 +222,7 @@ class FormulaInstaller      deps = expand_dependencies(req_deps + formula.deps) -    if deps.empty? and only_deps? +    if deps.empty? && only_deps?        puts "All dependencies for #{formula.full_name} are satisfied."      else        install_dependencies(deps) @@ -275,7 +275,7 @@ class FormulaInstaller        end      end -    return unsatisfied_reqs, deps +    [unsatisfied_reqs, deps]    end    def expand_dependencies(deps) @@ -300,7 +300,7 @@ class FormulaInstaller      expanded_deps.map { |dep| [dep, inherited_options[dep.name]] }    end -  def effective_build_options_for(dependent, inherited_options=[]) +  def effective_build_options_for(dependent, inherited_options = [])      args  = dependent.build.used_options      args |= dependent == formula ? options : inherited_options      args |= Tab.for_formula(dependent).used_options @@ -379,20 +379,20 @@ class FormulaInstaller    def caveats      return if only_deps? -    audit_installed if ARGV.homebrew_developer? and not formula.keg_only? +    audit_installed if ARGV.homebrew_developer? && !formula.keg_only?      c = Caveats.new(formula)      unless c.empty?        @show_summary_heading = true -      ohai 'Caveats', c.caveats +      ohai "Caveats", c.caveats      end    end    def finish      return if only_deps? -    ohai 'Finishing up' if verbose? +    ohai "Finishing up" if verbose?      install_plist @@ -407,19 +407,19 @@ class FormulaInstaller        post_install      end -    ohai "Summary" if verbose? or show_summary_heading? +    ohai "Summary" if verbose? || show_summary_heading?      puts summary    ensure      unlock    end    def emoji -    ENV['HOMEBREW_INSTALL_BADGE'] || "\xf0\x9f\x8d\xba" +    ENV["HOMEBREW_INSTALL_BADGE"] || "\xf0\x9f\x8d\xba"    end    def summary      s = "" -    s << "#{emoji}  " if MacOS.version >= :lion and not ENV['HOMEBREW_NO_EMOJI'] +    s << "#{emoji}  " if MacOS.version >= :lion && !ENV["HOMEBREW_NO_EMOJI"]      s << "#{formula.prefix}: #{formula.prefix.abv}"      s << ", built in #{pretty_duration build_time}" if build_time      s diff --git a/Library/Homebrew/formula_lock.rb b/Library/Homebrew/formula_lock.rb index 0eeb27c84..70b116d3c 100644 --- a/Library/Homebrew/formula_lock.rb +++ b/Library/Homebrew/formula_lock.rb @@ -1,4 +1,4 @@ -require 'fcntl' +require "fcntl"  class FormulaLock    LOCKDIR = HOMEBREW_CACHE_FORMULA diff --git a/Library/Homebrew/formula_versions.rb b/Library/Homebrew/formula_versions.rb index 715124406..5d9ad4317 100644 --- a/Library/Homebrew/formula_versions.rb +++ b/Library/Homebrew/formula_versions.rb @@ -4,7 +4,7 @@ class FormulaVersions    IGNORED_EXCEPTIONS = [      ArgumentError, NameError, SyntaxError, TypeError,      FormulaSpecificationError, FormulaValidationError, -    ErrorDuringExecution, LoadError, +    ErrorDuringExecution, LoadError    ]    attr_reader :name, :repository, :entry_name diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb index 145badc5f..9999ce8dd 100644 --- a/Library/Homebrew/formulary.rb +++ b/Library/Homebrew/formulary.rb @@ -40,10 +40,10 @@ class Formulary      end    end -  def self.class_s name +  def self.class_s(name)      class_name = name.capitalize      class_name.gsub!(/[-_.\s]([a-zA-Z0-9])/) { $1.upcase } -    class_name.gsub!('+', 'x') +    class_name.gsub!("+", "x")      class_name    end @@ -81,7 +81,7 @@ class Formulary    # Loads formulae from bottles.    class BottleLoader < FormulaLoader -    def initialize bottle_name +    def initialize(bottle_name)        @bottle_filename = Pathname(bottle_name).realpath        name, full_name = bottle_resolve_formula_names @bottle_filename        super name, Formulary.path(full_name) @@ -100,7 +100,7 @@ class Formulary    end    class AliasLoader < FormulaLoader -    def initialize alias_path +    def initialize(alias_path)        path = alias_path.resolved_path        name = path.basename(".rb").to_s        super name, path @@ -109,7 +109,7 @@ class Formulary    # Loads formulae from disk using a path    class FromPathLoader < FormulaLoader -    def initialize path +    def initialize(path)        path = Pathname.new(path).expand_path        super path.basename(".rb").to_s, path      end @@ -119,7 +119,7 @@ class Formulary    class FromUrlLoader < FormulaLoader      attr_reader :url -    def initialize url +    def initialize(url)        @url = url        uri = URI(url)        formula = File.basename(uri.path, ".rb") @@ -138,7 +138,7 @@ class Formulary    class TapLoader < FormulaLoader      attr_reader :tap -    def initialize tapped_name +    def initialize(tapped_name)        user, repo, name = tapped_name.split("/", 3).map(&:downcase)        @tap = Tap.new user, repo.sub(/^homebrew-/, "")        path = @tap.formula_files.detect { |file| file.basename(".rb").to_s == name } @@ -159,7 +159,7 @@ class Formulary        super name, Formulary.core_path(name)      end -    def get_formula(spec) +    def get_formula(_spec)        raise FormulaUnavailableError.new(name)      end    end @@ -170,13 +170,13 @@ class Formulary    # * a formula pathname    # * a formula URL    # * a local bottle reference -  def self.factory(ref, spec=:stable) +  def self.factory(ref, spec = :stable)      loader_for(ref).get_formula(spec)    end    # Return a Formula instance for the given rack.    # It will auto resolve formula's spec when requested spec is nil -  def self.from_rack(rack, spec=nil) +  def self.from_rack(rack, spec = nil)      kegs = rack.directory? ? rack.subdirs.map { |d| Keg.new(d) } : []      keg = kegs.detect(&:linked?) || kegs.detect(&:optlinked?) || kegs.max_by(&:version) @@ -207,7 +207,7 @@ class Formulary    def self.loader_for(ref)      case ref -    when %r[(https?|ftp)://] +    when %r{(https?|ftp)://}        return FromUrlLoader.new(ref)      when Pathname::BOTTLE_EXTNAME_RX        return BottleLoader.new(ref) @@ -241,7 +241,7 @@ class Formulary        return FormulaLoader.new(ref, possible_cached_formula)      end -    return NullLoader.new(ref) +    NullLoader.new(ref)    end    def self.core_path(name) @@ -254,7 +254,7 @@ class Formulary        Pathname.glob([          "#{tap}Formula/#{name}.rb",          "#{tap}HomebrewFormula/#{name}.rb", -        "#{tap}#{name}.rb", +        "#{tap}#{name}.rb"        ]).detect(&:file?)      end.compact    end diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb index d9ec1a265..5a809ab6f 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -1,18 +1,18 @@ -require 'extend/module' -require 'extend/fileutils' -require 'extend/pathname' -require 'extend/ARGV' -require 'extend/string' -require 'os' -require 'utils' -require 'exceptions' -require 'set' -require 'rbconfig' +require "extend/module" +require "extend/fileutils" +require "extend/pathname" +require "extend/ARGV" +require "extend/string" +require "os" +require "utils" +require "exceptions" +require "set" +require "rbconfig"  ARGV.extend(HomebrewArgvExtension) -HOMEBREW_VERSION = '0.9.5' -HOMEBREW_WWW = 'http://brew.sh' +HOMEBREW_VERSION = "0.9.5" +HOMEBREW_WWW = "http://brew.sh"  require "config" @@ -37,9 +37,9 @@ end  HOMEBREW_GITHUB_API_TOKEN = ENV["HOMEBREW_GITHUB_API_TOKEN"]  HOMEBREW_USER_AGENT = "Homebrew #{HOMEBREW_VERSION} (Ruby #{RUBY_VERSION}-#{RUBY_PATCHLEVEL}; #{OS_VERSION})" -HOMEBREW_CURL_ARGS = '-f#LA' +HOMEBREW_CURL_ARGS = "-f#LA" -require 'tap_constants' +require "tap_constants"  module Homebrew    include FileUtils @@ -51,23 +51,23 @@ end  HOMEBREW_PULL_OR_COMMIT_URL_REGEX = %r[https://github\.com/([\w-]+)/homebrew(-[\w-]+)?/(?:pull/(\d+)|commit/[0-9a-fA-F]{4,40})] -require 'compat' unless ARGV.include? "--no-compat" or ENV['HOMEBREW_NO_COMPAT'] +require "compat" unless ARGV.include?("--no-compat") || ENV["HOMEBREW_NO_COMPAT"] -ORIGINAL_PATHS = ENV['PATH'].split(File::PATH_SEPARATOR).map{ |p| Pathname.new(p).expand_path rescue nil }.compact.freeze +ORIGINAL_PATHS = ENV["PATH"].split(File::PATH_SEPARATOR).map { |p| Pathname.new(p).expand_path rescue nil }.compact.freeze  HOMEBREW_INTERNAL_COMMAND_ALIASES = { -  'ls' => 'list', -  'homepage' => 'home', -  '-S' => 'search', -  'up' => 'update', -  'ln' => 'link', -  'instal' => 'install', # gem does the same -  'rm' => 'uninstall', -  'remove' => 'uninstall', -  'configure' => 'diy', -  'abv' => 'info', -  'dr' => 'doctor', -  '--repo' => '--repository', -  'environment' => '--env', -  '--config' => 'config', +  "ls" => "list", +  "homepage" => "home", +  "-S" => "search", +  "up" => "update", +  "ln" => "link", +  "instal" => "install", # gem does the same +  "rm" => "uninstall", +  "remove" => "uninstall", +  "configure" => "diy", +  "abv" => "info", +  "dr" => "doctor", +  "--repo" => "--repository", +  "environment" => "--env", +  "--config" => "config"  } diff --git a/Library/Homebrew/hardware.rb b/Library/Homebrew/hardware.rb index ec13814cc..f7a21ebd8 100644 --- a/Library/Homebrew/hardware.rb +++ b/Library/Homebrew/hardware.rb @@ -1,7 +1,8 @@ -require 'os' +require "os"  class Hardware -  module CPU extend self +  module CPU +    extend self      INTEL_32BIT_ARCHS = [:i386].freeze      INTEL_64BIT_ARCHS = [:x86_64].freeze      PPC_32BIT_ARCHS   = [:ppc, :ppc7400, :ppc7450, :ppc970].freeze @@ -49,10 +50,10 @@ class Hardware    end    if OS.mac? -    require 'os/mac/hardware' +    require "os/mac/hardware"      CPU.extend MacCPUs    elsif OS.linux? -    require 'os/linux/hardware' +    require "os/linux/hardware"      CPU.extend LinuxCPUs    else      raise "The system `#{`uname`.chomp}' is not supported." @@ -60,9 +61,9 @@ class Hardware    def self.cores_as_words      case Hardware::CPU.cores -    when 1 then 'single' -    when 2 then 'dual' -    when 4 then 'quad' +    when 1 then "single" +    when 2 then "dual" +    when 4 then "quad"      else        Hardware::CPU.cores      end diff --git a/Library/Homebrew/hooks/bottles.rb b/Library/Homebrew/hooks/bottles.rb index 6f6ce7e47..c6612dea6 100644 --- a/Library/Homebrew/hooks/bottles.rb +++ b/Library/Homebrew/hooks/bottles.rb @@ -7,12 +7,12 @@  module Homebrew    module Hooks      module Bottles -      def self.setup_formula_has_bottle &block +      def self.setup_formula_has_bottle(&block)          @has_bottle = block          true        end -      def self.setup_pour_formula_bottle &block +      def self.setup_pour_formula_bottle(&block)          @pour_bottle = block          true        end diff --git a/Library/Homebrew/install_renamed.rb b/Library/Homebrew/install_renamed.rb index 98ddd05c8..d84e8b28a 100644 --- a/Library/Homebrew/install_renamed.rb +++ b/Library/Homebrew/install_renamed.rb @@ -9,17 +9,17 @@ module InstallRenamed      end    end -  def cp_path_sub pattern, replacement +  def cp_path_sub(pattern, replacement)      super do |src, dst|        append_default_if_different(src, dst)      end    end -  def + path +  def +(path)      super(path).extend(InstallRenamed)    end -  def / path +  def /(path)      super(path).extend(InstallRenamed)    end diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index dbcf613e4..e2319001d 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -63,10 +63,10 @@ class Keg    # locale-specific directories have the form language[_territory][.codeset][@modifier]    LOCALEDIR_RX = /(locale|man)\/([a-z]{2}|C|POSIX)(_[A-Z]{2})?(\.[a-zA-Z\-0-9]+(@.+)?)?/ -  INFOFILE_RX = %r[info/([^.].*?\.info|dir)$] +  INFOFILE_RX = %r{info/([^.].*?\.info|dir)$}    TOP_LEVEL_DIRECTORIES = %w[bin etc include lib sbin share var Frameworks]    PRUNEABLE_DIRECTORIES = %w[bin etc include lib sbin share Frameworks LinkedKegs].map do |d| -    case d when 'LinkedKegs' then HOMEBREW_LIBRARY/d else HOMEBREW_PREFIX/d end +    case d when "LinkedKegs" then HOMEBREW_LIBRARY/d else HOMEBREW_PREFIX/d end    end    # These paths relative to the keg's share directory should always be real @@ -82,9 +82,9 @@ class Keg    ]    # if path is a file in a keg then this will return the containing Keg object -  def self.for path +  def self.for(path)      path = path.realpath -    while not path.root? +    until path.root?        return Keg.new(path) if path.parent.parent == HOMEBREW_CELLAR.realpath        path = path.parent.realpath # realpath() prevents root? failing      end @@ -94,7 +94,7 @@ class Keg    attr_reader :path, :name, :linked_keg_record, :opt_record    protected :path -  def initialize path +  def initialize(path)      raise "#{path} is not a valid keg" unless path.parent.parent.realpath == HOMEBREW_CELLAR.realpath      raise "#{path} is not a directory" unless path.directory?      @path = path @@ -190,7 +190,7 @@ class Keg      dirs = [] -    TOP_LEVEL_DIRECTORIES.map{ |d| path.join(d) }.each do |dir| +    TOP_LEVEL_DIRECTORIES.map { |d| path.join(d) }.each do |dir|        next unless dir.exist?        dir.find do |src|          dst = HOMEBREW_PREFIX + src.relative_path_from(path) @@ -218,7 +218,7 @@ class Keg      FormulaLock.new(name).with_lock { yield }    end -  def completion_installed? shell +  def completion_installed?(shell)      dir = case shell            when :bash then path.join("etc", "bash_completion.d")            when :zsh  then path.join("share", "zsh", "site-functions") @@ -248,7 +248,7 @@ class Keg    end    def version -    require 'pkg_version' +    require "pkg_version"      PkgVersion.parse(path.basename.to_s)    end @@ -256,21 +256,21 @@ class Keg      path.find(*args, &block)    end -  def link mode=OpenStruct.new +  def link(mode = OpenStruct.new)      raise AlreadyLinkedError.new(self) if linked_keg_record.directory?      ObserverPathnameExtension.reset_counts!      # yeah indeed, you have to force anything you need in the main tree into      # these dirs REMEMBER that *NOT* everything needs to be in the main tree -    link_dir('etc', mode) {:mkpath} -    link_dir('bin', mode) {:skip_dir} -    link_dir('sbin', mode) {:skip_dir} -    link_dir('include', mode) {:link} +    link_dir("etc", mode) { :mkpath } +    link_dir("bin", mode) { :skip_dir } +    link_dir("sbin", mode) { :skip_dir } +    link_dir("include", mode) { :link } -    link_dir('share', mode) do |relative_path| +    link_dir("share", mode) do |relative_path|        case relative_path.to_s -      when 'locale/locale.alias' then :skip_file +      when "locale/locale.alias" then :skip_file        when INFOFILE_RX then :info        when LOCALEDIR_RX then :mkpath        when *SHARE_PATHS then :mkpath @@ -283,22 +283,22 @@ class Keg        end      end -    link_dir('lib', mode) do |relative_path| +    link_dir("lib", mode) do |relative_path|        case relative_path.to_s -      when 'charset.alias' then :skip_file +      when "charset.alias" then :skip_file        # pkg-config database gets explicitly created -      when 'pkgconfig' then :mkpath +      when "pkgconfig" then :mkpath        # cmake database gets explicitly created -      when 'cmake' then :mkpath +      when "cmake" then :mkpath        # lib/language folders also get explicitly created -      when 'dtrace' then :mkpath +      when "dtrace" then :mkpath        when /^gdk-pixbuf/ then :mkpath -      when 'ghc' then :mkpath -      when 'lua' then :mkpath +      when "ghc" then :mkpath +      when "lua" then :mkpath        when /^node/ then :mkpath        when /^ocaml/ then :mkpath        when /^perl5/ then :mkpath -      when 'php' then :mkpath +      when "php" then :mkpath        when /^python[23]\.\d/ then :mkpath        when /^ruby/ then :mkpath        # Everything else is symlinked to the cellar @@ -306,7 +306,7 @@ class Keg        end      end -    link_dir('Frameworks', mode) do |relative_path| +    link_dir("Frameworks", mode) do |relative_path|        # Frameworks contain symlinks pointing into a subdir, so we have to use        # the :link strategy. However, for Foo.framework and        # Foo.framework/Versions we have to use :mkpath so that multiple formulae @@ -329,7 +329,7 @@ class Keg      ObserverPathnameExtension.total    end -  def optlink(mode=OpenStruct.new) +  def optlink(mode = OpenStruct.new)      opt_record.delete if opt_record.symlink? || opt_record.exist?      make_relative_symlink(opt_record, path, mode)    end @@ -340,7 +340,7 @@ class Keg    private -  def resolve_any_conflicts dst, mode +  def resolve_any_conflicts(dst, mode)      return unless dst.symlink?      src = dst.resolved_path @@ -371,14 +371,14 @@ class Keg      end    end -  def make_relative_symlink dst, src, mode +  def make_relative_symlink(dst, src, mode)      if dst.symlink? && src == dst.resolved_path        puts "Skipping; link already exists: #{dst}" if ARGV.verbose?        return      end      # cf. git-clean -n: list files to delete, don't really link or delete -    if mode.dry_run and mode.overwrite +    if mode.dry_run && mode.overwrite        if dst.symlink?          puts "#{dst} -> #{dst.resolved_path}"        elsif dst.exist? @@ -411,7 +411,7 @@ class Keg    protected    # symlinks the contents of path+relative_dir recursively into #{HOMEBREW_PREFIX}/relative_dir -  def link_dir relative_dir, mode +  def link_dir(relative_dir, mode)      root = path+relative_dir      return unless root.exist?      root.find do |src| @@ -420,10 +420,10 @@ class Keg        dst.extend ObserverPathnameExtension        if src.symlink? || src.file? -        Find.prune if File.basename(src) == '.DS_Store' +        Find.prune if File.basename(src) == ".DS_Store"          # Don't link pyc files because Python overwrites these cached object          # files and next time brew wants to link, the pyc file is in the way. -        if src.extname == '.pyc' && src.to_s =~ /site-packages/ +        if src.extname == ".pyc" && src.to_s =~ /site-packages/            Find.prune          end @@ -431,7 +431,7 @@ class Keg          when :skip_file, nil            Find.prune          when :info -          next if File.basename(src) == 'dir' # skip historical local 'dir' files +          next if File.basename(src) == "dir" # skip historical local 'dir' files            make_relative_symlink dst, src, mode            dst.install_info          else @@ -439,10 +439,10 @@ class Keg          end        elsif src.directory?          # if the dst dir already exists, then great! walk the rest of the tree tho -        next if dst.directory? and not dst.symlink? +        next if dst.directory? && !dst.symlink?          # no need to put .app bundles in the path, the user can just use          # spotlight, or the open command and actual mac apps use an equivalent -        Find.prune if src.extname == '.app' +        Find.prune if src.extname == ".app"          case yield src.relative_path_from(root)          when :skip_dir diff --git a/Library/Homebrew/keg_relocate.rb b/Library/Homebrew/keg_relocate.rb index 1541d4695..723b5f7aa 100644 --- a/Library/Homebrew/keg_relocate.rb +++ b/Library/Homebrew/keg_relocate.rb @@ -2,14 +2,14 @@ class Keg    PREFIX_PLACEHOLDER = "@@HOMEBREW_PREFIX@@".freeze    CELLAR_PLACEHOLDER = "@@HOMEBREW_CELLAR@@".freeze -  def fix_install_names options={} +  def fix_install_names(options = {})      mach_o_files.each do |file|        file.ensure_writable do          change_dylib_id(dylib_id_for(file, options), file) if file.dylib?          each_install_name_for(file) do |bad_name|            # Don't fix absolute paths unless they are rooted in the build directory -          next if bad_name.start_with? '/' and not bad_name.start_with? HOMEBREW_TEMP.to_s +          next if bad_name.start_with? "/" and !bad_name.start_with? HOMEBREW_TEMP.to_s            new_name = fixed_name(file, bad_name)            change_install_name(bad_name, new_name, file) unless new_name == bad_name @@ -18,7 +18,7 @@ class Keg      end    end -  def relocate_install_names old_prefix, new_prefix, old_cellar, new_cellar, options={} +  def relocate_install_names(old_prefix, new_prefix, old_cellar, new_cellar, options = {})      mach_o_files.each do |file|        file.ensure_writable do          if file.dylib? @@ -71,7 +71,7 @@ class Keg    # of the files within the keg.    # Note that this doesn't attempt to distinguish between libstdc++ versions,    # for instance between Apple libstdc++ and GNU libstdc++ -  def detect_cxx_stdlibs(options={}) +  def detect_cxx_stdlibs(options = {})      skip_executables = options.fetch(:skip_executables, false)      results = Set.new @@ -85,7 +85,7 @@ class Keg      results.to_a    end -  def each_unique_file_matching string +  def each_unique_file_matching(string)      Utils.popen_read("/usr/bin/fgrep", "-lr", string, to_s) do |io|        hardlinks = Set.new @@ -99,7 +99,7 @@ class Keg    def install_name_tool(*args)      tool = MacOS.locate("install_name_tool") -    system(tool, *args) or raise ErrorDuringExecution.new(tool, args) +    system(tool, *args) || raise(ErrorDuringExecution.new(tool, args))    end    # If file is a dylib or bundle itself, look for the dylib named by @@ -126,7 +126,7 @@ class Keg      path.join("lib")    end -  def each_install_name_for file, &block +  def each_install_name_for(file, &block)      dylibs = file.dynamically_linked_libraries      dylibs.reject! { |fn| fn =~ /^@(loader_|executable_|r)path/ }      dylibs.each(&block) @@ -139,22 +139,22 @@ class Keg      relative_dirname = file.dirname.relative_path_from(path)      shortpath = HOMEBREW_PREFIX.join(relative_dirname, basename) -    if shortpath.exist? and not options[:keg_only] +    if shortpath.exist? && !options[:keg_only]        shortpath.to_s      else        opt_record.join(relative_dirname, basename).to_s      end    end -  def find_dylib name +  def find_dylib(name)      lib.find { |pn| break pn if pn.basename == name } if lib.directory?    end    def mach_o_files      mach_o_files = []      path.find do |pn| -      next if pn.symlink? or pn.directory? -      mach_o_files << pn if pn.dylib? or pn.mach_o_bundle? or pn.mach_o_executable? +      next if pn.symlink? || pn.directory? +      mach_o_files << pn if pn.dylib? || pn.mach_o_bundle? || pn.mach_o_executable?      end      mach_o_files @@ -163,10 +163,10 @@ class Keg    def text_files      text_files = []      path.find do |pn| -      next if pn.symlink? or pn.directory? +      next if pn.symlink? || pn.directory?        next if Metafiles::EXTENSIONS.include? pn.extname        if Utils.popen_read("/usr/bin/file", "--brief", pn).include?("text") || -            pn.text_executable? +         pn.text_executable?          text_files << pn        end      end @@ -179,7 +179,7 @@ class Keg      # find .la files, which are stored in lib/      lib.find do |pn| -      next if pn.symlink? or pn.directory? or pn.extname != '.la' +      next if pn.symlink? || pn.directory? || pn.extname != ".la"        libtool_files << pn      end if lib.directory?      libtool_files diff --git a/Library/Homebrew/language/go.rb b/Library/Homebrew/language/go.rb index 80c243832..c051aacc9 100644 --- a/Library/Homebrew/language/go.rb +++ b/Library/Homebrew/language/go.rb @@ -6,7 +6,7 @@ module Language      # building go software.      # The resource names should be the import name of the package,      # e.g. `resource "github.com/foo/bar"` -    def self.stage_deps resources, target +    def self.stage_deps(resources, target)        resources.grep(Resource::Go) { |resource| resource.stage(target) }      end    end diff --git a/Library/Homebrew/language/haskell.rb b/Library/Homebrew/language/haskell.rb index 6dc8df9ca..e7163a231 100644 --- a/Library/Homebrew/language/haskell.rb +++ b/Library/Homebrew/language/haskell.rb @@ -9,7 +9,7 @@ module Language          end        end -      def self.included base +      def self.included(base)          base.extend ClassMethods        end @@ -23,7 +23,7 @@ module Language          ENV["HOME"] = pwd          # use cabal's sandbox feature if available -        cabal_version = `cabal --version`[/[0-9.]+/].split('.').collect(&:to_i) +        cabal_version = `cabal --version`[/[0-9.]+/].split(".").collect(&:to_i)          if (cabal_version <=> [1, 20]) > -1            system "cabal", "sandbox", "init"            cabal_sandbox_bin = pwd/".cabal-sandbox/bin" @@ -34,7 +34,7 @@ module Language          # cabal may build useful tools that should be found in the PATH          mkdir_p cabal_sandbox_bin          path = ENV["PATH"] -        ENV.prepend_path 'PATH', cabal_sandbox_bin +        ENV.prepend_path "PATH", cabal_sandbox_bin          # update cabal package database          system "cabal", "update"          yield @@ -55,7 +55,7 @@ module Language        # package. The tools are installed sequentially in order to make possible        # to install several tools that depends on each other        def cabal_install_tools(*opts) -        opts.each {|t| cabal_install t} +        opts.each { |t| cabal_install t }          rm_rf Dir[".cabal*/*packages.conf.d/"]        end @@ -66,7 +66,7 @@ module Language          rm_rf lib        end -      def install_cabal_package args=[] +      def install_cabal_package(args = [])          cabal_sandbox do            # the dependencies are built first and installed locally, and only the            # current package is actually installed in the destination dir diff --git a/Library/Homebrew/language/java.rb b/Library/Homebrew/language/java.rb index 69cc87f50..5bdc3e7cf 100644 --- a/Library/Homebrew/language/java.rb +++ b/Library/Homebrew/language/java.rb @@ -1,15 +1,15 @@  module Language    module Java -    def self.java_home_cmd(version=nil) +    def self.java_home_cmd(version = nil)        version_flag = " --version #{version}" if version        "/usr/libexec/java_home#{version_flag}"      end -    def self.java_home_env(version=nil) +    def self.java_home_env(version = nil)        { :JAVA_HOME => "$(#{java_home_cmd(version)})" }      end -    def self.overridable_java_home_env(version=nil) +    def self.overridable_java_home_env(version = nil)        { :JAVA_HOME => "${JAVA_HOME:-$(#{java_home_cmd(version)})}" }      end    end diff --git a/Library/Homebrew/language/python.rb b/Library/Homebrew/language/python.rb index 4089316bb..c396230c0 100644 --- a/Library/Homebrew/language/python.rb +++ b/Library/Homebrew/language/python.rb @@ -2,21 +2,21 @@ require "utils.rb"  module Language    module Python -    def self.major_minor_version python +    def self.major_minor_version(python)        version = /\d\.\d/.match `#{python} --version 2>&1`        return unless version        Version.new(version.to_s)      end -    def self.homebrew_site_packages(version="2.7") +    def self.homebrew_site_packages(version = "2.7")        HOMEBREW_PREFIX/"lib/python#{version}/site-packages"      end -    def self.each_python build, &block +    def self.each_python(build, &block)        original_pythonpath = ENV["PYTHONPATH"]        ["python", "python3"].each do |python|          next if build.without? python -        version = self.major_minor_version python +        version = major_minor_version python          ENV["PYTHONPATH"] = if Formulary.factory(python).installed?            nil          else @@ -27,7 +27,7 @@ module Language        ENV["PYTHONPATH"] = original_pythonpath      end -    def self.reads_brewed_pth_files? python +    def self.reads_brewed_pth_files?(python)        version = major_minor_version python        return unless homebrew_site_packages(version).directory?        return unless homebrew_site_packages(version).writable_real? @@ -40,11 +40,11 @@ module Language        end      end -    def self.user_site_packages python +    def self.user_site_packages(python)        Pathname.new(`#{python} -c "import site; print(site.getusersitepackages())"`.chomp)      end -    def self.in_sys_path? python, path +    def self.in_sys_path?(python, path)        script = <<-EOS.undent          import os, sys          [os.path.realpath(p) for p in sys.path].index(os.path.realpath("#{path}")) @@ -53,7 +53,7 @@ module Language      end      # deprecated; use system "python", *setup_install_args(prefix) instead -    def self.setup_install python, prefix, *args +    def self.setup_install(python, prefix, *args)        opoo <<-EOS.undent          Language::Python.setup_install is deprecated.          If you are a formula author, please use @@ -75,7 +75,7 @@ module Language        system python, "-c", shim, "install", *args      end -    def self.setup_install_args prefix +    def self.setup_install_args(prefix)        shim = <<-EOS.undent          import setuptools, tokenize          __file__ = 'setup.py' @@ -93,7 +93,7 @@ module Language        ]      end -    def self.package_available? python, module_name +    def self.package_available?(python, module_name)        quiet_system python, "-c", "import #{module_name}"      end    end diff --git a/Library/Homebrew/ld64_dependency.rb b/Library/Homebrew/ld64_dependency.rb index 782a50860..a506a0ab2 100644 --- a/Library/Homebrew/ld64_dependency.rb +++ b/Library/Homebrew/ld64_dependency.rb @@ -1,10 +1,10 @@ -require 'dependency' +require "dependency"  # This special dependency ensures that the Tigerbrew ld64  # formula is used as gcc's ld in place of the old version  # that comes with the OS.  class LD64Dependency < Dependency -  def initialize(name='ld64', tags=[:build], env_proc=nil) +  def initialize(name = "ld64", tags = [:build], env_proc = nil)      super      @env_proc = proc { ENV.ld64 }    end diff --git a/Library/Homebrew/mach.rb b/Library/Homebrew/mach.rb index d63edc6fe..c15399cbf 100644 --- a/Library/Homebrew/mach.rb +++ b/Library/Homebrew/mach.rb @@ -21,26 +21,26 @@ module ArchitectureListExtension    end    def ppc? -    (Hardware::CPU::PPC_32BIT_ARCHS+Hardware::CPU::PPC_64BIT_ARCHS).any? {|a| self.include? a} +    (Hardware::CPU::PPC_32BIT_ARCHS+Hardware::CPU::PPC_64BIT_ARCHS).any? { |a| self.include? a }    end    def remove_ppc! -    (Hardware::CPU::PPC_32BIT_ARCHS+Hardware::CPU::PPC_64BIT_ARCHS).each {|a| self.delete a} +    (Hardware::CPU::PPC_32BIT_ARCHS+Hardware::CPU::PPC_64BIT_ARCHS).each { |a| delete a }    end    def as_arch_flags -    self.collect{ |a| "-arch #{a}" }.join(' ') +    collect { |a| "-arch #{a}" }.join(" ")    end    def as_cmake_arch_flags -    self.join(';') +    join(";")    end    protected    def intersects_all?(*set)      set.all? do |archset| -      archset.any? {|a| self.include? a} +      archset.any? { |a| self.include? a }      end    end  end @@ -101,7 +101,7 @@ module MachO    end    def archs -    mach_data.map{ |m| m.fetch :arch }.extend(ArchitectureListExtension) +    mach_data.map { |m| m.fetch :arch }.extend(ArchitectureListExtension)    end    def arch diff --git a/Library/Homebrew/options.rb b/Library/Homebrew/options.rb index 209cfba62..ba10dca8b 100644 --- a/Library/Homebrew/options.rb +++ b/Library/Homebrew/options.rb @@ -1,9 +1,9 @@ -require 'set' +require "set"  class Option    attr_reader :name, :description, :flag -  def initialize(name, description="") +  def initialize(name, description = "")      @name = name      @flag = "--#{name}"      @description = description diff --git a/Library/Homebrew/os/linux/hardware.rb b/Library/Homebrew/os/linux/hardware.rb index 507639e3a..c8d7f4954 100644 --- a/Library/Homebrew/os/linux/hardware.rb +++ b/Library/Homebrew/os/linux/hardware.rb @@ -1,15 +1,25 @@  module LinuxCPUs    OPTIMIZATION_FLAGS = { -    :penryn => '-march=core2 -msse4.1', -    :core2 => '-march=core2', -    :core => '-march=prescott', +    :penryn => "-march=core2 -msse4.1", +    :core2 => "-march=core2", +    :core => "-march=prescott"    }.freeze -  def optimization_flags; OPTIMIZATION_FLAGS; end +  def optimization_flags +    OPTIMIZATION_FLAGS +  end    # Linux supports x86 only, and universal archs do not apply -  def arch_32_bit; :i386; end -  def arch_64_bit; :x86_64; end -  def universal_archs; [].extend ArchitectureListExtension; end +  def arch_32_bit +    :i386 +  end + +  def arch_64_bit +    :x86_64 +  end + +  def universal_archs +    [].extend ArchitectureListExtension +  end    def cpuinfo      @cpuinfo ||= File.read("/proc/cpuinfo") @@ -42,9 +52,9 @@ module LinuxCPUs      @features ||= flags[1..-1].map(&:intern)    end -  %w[aes altivec avx avx2 lm sse3 ssse3 sse4 sse4_2].each { |flag| +  %w[aes altivec avx avx2 lm sse3 ssse3 sse4 sse4_2].each do |flag|      define_method(flag + "?") { flags.include? flag } -  } +  end    alias_method :is_64_bit?, :lm?    def bits diff --git a/Library/Homebrew/os/mac.rb b/Library/Homebrew/os/mac.rb index 8aae29c9d..ffab00b00 100644 --- a/Library/Homebrew/os/mac.rb +++ b/Library/Homebrew/os/mac.rb @@ -1,7 +1,7 @@ -require 'hardware' -require 'os/mac/version' -require 'os/mac/xcode' -require 'os/mac/xquartz' +require "hardware" +require "os/mac/version" +require "os/mac/xcode" +require "os/mac/xquartz"  module OS    module Mac @@ -19,7 +19,7 @@ module OS        version.to_sym      end -    def locate tool +    def locate(tool)        # Don't call tools (cc, make, strip, etc.) directly!        # Give the name of the binary you look for as a string to this method        # in order to get the full path back as a Pathname. @@ -54,32 +54,32 @@ module OS      end      def default_cc -      cc = locate 'cc' +      cc = locate "cc"        cc.realpath.basename.to_s rescue nil      end      def default_compiler        case default_cc -        when /^gcc-4.0/ then :gcc_4_0 -        when /^gcc/ then :gcc -        when /^llvm/ then :llvm -        when "clang" then :clang +      when /^gcc-4.0/ then :gcc_4_0 +      when /^gcc/ then :gcc +      when /^llvm/ then :llvm +      when "clang" then :clang +      else +        # guess :( +        if Xcode.version >= "4.3" +          :clang +        elsif Xcode.version >= "4.2" +          :llvm          else -          # guess :( -          if Xcode.version >= "4.3" -            :clang -          elsif Xcode.version >= "4.2" -            :llvm -          else -            :gcc -          end +          :gcc +        end        end      end      def gcc_40_build_version        @gcc_40_build_version ||=          if (path = locate("gcc-4.0")) -          %x{#{path} --version}[/build (\d{4,})/, 1].to_i +        `#{path} --version`[/build (\d{4,})/, 1].to_i          end      end      alias_method :gcc_4_0_build_version, :gcc_40_build_version @@ -89,7 +89,7 @@ module OS          begin            gcc = MacOS.locate("gcc-4.2") || HOMEBREW_PREFIX.join("opt/apple-gcc42/bin/gcc-4.2")            if gcc.exist? && gcc.realpath.basename.to_s !~ /^llvm/ -            %x{#{gcc} --version}[/build (\d{4,})/, 1].to_i +            `#{gcc} --version`[/build (\d{4,})/, 1].to_i            end          end      end @@ -98,21 +98,21 @@ module OS      def llvm_build_version        @llvm_build_version ||=          if (path = locate("llvm-gcc")) && path.realpath.basename.to_s !~ /^clang/ -          %x{#{path} --version}[/LLVM build (\d{4,})/, 1].to_i +        `#{path} --version`[/LLVM build (\d{4,})/, 1].to_i          end      end      def clang_version        @clang_version ||=          if (path = locate("clang")) -          %x{#{path} --version}[/(?:clang|LLVM) version (\d\.\d)/, 1] +        `#{path} --version`[/(?:clang|LLVM) version (\d\.\d)/, 1]          end      end      def clang_build_version        @clang_build_version ||=          if (path = locate("clang")) -          %x{#{path} --version}[%r[clang-(\d{2,})], 1].to_i +        `#{path} --version`[/clang-(\d{2,})/, 1].to_i          end      end @@ -120,7 +120,7 @@ module OS        (@non_apple_gcc_version ||= {}).fetch(cc) do          path = HOMEBREW_PREFIX.join("opt", "gcc", "bin", cc)          path = locate(cc) unless path.exist? -        version = %x{#{path} --version}[/gcc(?:-\d(?:\.\d)? \(.+\))? (\d\.\d\.\d)/, 1] if path +        version = `#{path} --version`[/gcc(?:-\d(?:\.\d)? \(.+\))? (\d\.\d\.\d)/, 1] if path          @non_apple_gcc_version[cc] = version        end      end @@ -140,7 +140,7 @@ module OS        # First look in the path because MacPorts is relocatable and Fink        # may become relocatable in the future. -      %w{port fink}.each do |ponk| +      %w[port fink].each do |ponk|          path = which(ponk)          paths << path unless path.nil?        end @@ -148,7 +148,7 @@ module OS        # Look in the standard locations, because even if port or fink are        # not in the path they can still break builds if the build scripts        # have these paths baked in. -      %w{/sw/bin/fink /opt/local/bin/port}.each do |ponk| +      %w[/sw/bin/fink /opt/local/bin/port].each do |ponk|          path = Pathname.new(ponk)          paths << path if path.exist?        end @@ -157,7 +157,7 @@ module OS        # read-only in order to try out Homebrew, but this doens't work as        # some build scripts error out when trying to read from these now        # unreadable paths. -      %w{/sw /opt/local}.map { |p| Pathname.new(p) }.each do |path| +      %w[/sw /opt/local].map { |p| Pathname.new(p) }.each do |path|          paths << path if path.exist? && !path.readable?        end @@ -165,7 +165,7 @@ module OS      end      def prefer_64_bit? -      Hardware::CPU.is_64_bit? and version > :leopard +      Hardware::CPU.is_64_bit? && version > :leopard      end      def preferred_arch @@ -211,7 +211,7 @@ module OS        "6.3.1" => { :clang => "6.1", :clang_build => 602 },        "6.3.2" => { :clang => "6.1", :clang_build => 602 },        "6.4"   => { :clang => "6.1", :clang_build => 602 }, -      "7.0"   => { :clang => "7.0", :clang_build => 700 }, +      "7.0"   => { :clang => "7.0", :clang_build => 700 }      }      def compilers_standard? @@ -233,7 +233,7 @@ module OS      def app_with_bundle_id(*ids)        path = mdfind(*ids).first -      Pathname.new(path) unless path.nil? or path.empty? +      Pathname.new(path) unless path.nil? || path.empty?      end      def mdfind(*ids) diff --git a/Library/Homebrew/os/mac/hardware.rb b/Library/Homebrew/os/mac/hardware.rb index 60de1eba8..11cf0142a 100644 --- a/Library/Homebrew/os/mac/hardware.rb +++ b/Library/Homebrew/os/mac/hardware.rb @@ -1,16 +1,18 @@ -require 'mach' +require "mach"  module MacCPUs    OPTIMIZATION_FLAGS = { -    :penryn => '-march=core2 -msse4.1', -    :core2 => '-march=core2', -    :core => '-march=prescott', -    :g3 => '-mcpu=750', -    :g4 => '-mcpu=7400', -    :g4e => '-mcpu=7450', -    :g5 => '-mcpu=970' +    :penryn => "-march=core2 -msse4.1", +    :core2 => "-march=core2", +    :core => "-march=prescott", +    :g3 => "-mcpu=750", +    :g4 => "-mcpu=7400", +    :g4e => "-mcpu=7450", +    :g5 => "-mcpu=970"    }.freeze -  def optimization_flags; OPTIMIZATION_FLAGS; end +  def optimization_flags +    OPTIMIZATION_FLAGS +  end    # These methods use info spewed out by sysctl.    # Look in <mach/machine.h> for decoding info. @@ -92,7 +94,7 @@ module MacCPUs    def universal_archs      # Building 64-bit is a no-go on Tiger, and pretty hit or miss on Leopard.      # Don't even try unless Tigerbrew's experimental 64-bit Leopard support is enabled. -    if MacOS.version <= :leopard and !MacOS.prefer_64_bit? +    if MacOS.version <= :leopard && !MacOS.prefer_64_bit?        [arch_32_bit].extend ArchitectureListExtension      else        [arch_32_bit, arch_64_bit].extend ArchitectureListExtension @@ -108,35 +110,35 @@ module MacCPUs    end    def aes? -    sysctl_bool('hw.optional.aes') +    sysctl_bool("hw.optional.aes")    end    def altivec? -    sysctl_bool('hw.optional.altivec') +    sysctl_bool("hw.optional.altivec")    end    def avx? -    sysctl_bool('hw.optional.avx1_0') +    sysctl_bool("hw.optional.avx1_0")    end    def avx2? -    sysctl_bool('hw.optional.avx2_0') +    sysctl_bool("hw.optional.avx2_0")    end    def sse3? -    sysctl_bool('hw.optional.sse3') +    sysctl_bool("hw.optional.sse3")    end    def ssse3? -    sysctl_bool('hw.optional.supplementalsse3') +    sysctl_bool("hw.optional.supplementalsse3")    end    def sse4? -    sysctl_bool('hw.optional.sse4_1') +    sysctl_bool("hw.optional.sse4_1")    end    def sse4_2? -    sysctl_bool('hw.optional.sse4_2') +    sysctl_bool("hw.optional.sse4_2")    end    private diff --git a/Library/Homebrew/os/mac/version.rb b/Library/Homebrew/os/mac/version.rb index febbfd4f7..9a529df80 100644 --- a/Library/Homebrew/os/mac/version.rb +++ b/Library/Homebrew/os/mac/version.rb @@ -1,17 +1,17 @@ -require 'version' +require "version"  module OS    module Mac      class Version < ::Version        SYMBOLS = { -        :el_capitan    => '10.11', -        :yosemite      => '10.10', -        :mavericks     => '10.9', -        :mountain_lion => '10.8', -        :lion          => '10.7', -        :snow_leopard  => '10.6', -        :leopard       => '10.5', -        :tiger         => '10.4', +        :el_capitan    => "10.11", +        :yosemite      => "10.10", +        :mavericks     => "10.9", +        :mountain_lion => "10.8", +        :lion          => "10.7", +        :snow_leopard  => "10.6", +        :leopard       => "10.5", +        :tiger         => "10.4"        }        def self.from_symbol(sym) @@ -38,7 +38,7 @@ module OS        end        def pretty_name -        to_sym.to_s.split('_').map(&:capitalize).join(' ') +        to_sym.to_s.split("_").map(&:capitalize).join(" ")        end      end    end diff --git a/Library/Homebrew/os/mac/xcode.rb b/Library/Homebrew/os/mac/xcode.rb index 766443419..83ba84ff8 100644 --- a/Library/Homebrew/os/mac/xcode.rb +++ b/Library/Homebrew/os/mac/xcode.rb @@ -60,7 +60,7 @@ module OS        end        def installed? -        not prefix.nil? +        !prefix.nil?        end        def version @@ -178,7 +178,7 @@ module OS          else            version = `/usr/bin/clang --version`          end -        version = version[%r{clang-(\d+\.\d+\.\d+(\.\d+)?)}, 1] || "0" +        version = version[/clang-(\d+\.\d+\.\d+(\.\d+)?)/, 1] || "0"          version < latest_version        end diff --git a/Library/Homebrew/os/mac/xquartz.rb b/Library/Homebrew/os/mac/xquartz.rb index 9c717367e..b253ad8e0 100644 --- a/Library/Homebrew/os/mac/xquartz.rb +++ b/Library/Homebrew/os/mac/xquartz.rb @@ -22,7 +22,7 @@ module OS          "2.7.53" => "2.7.5_rc4",          "2.7.54" => "2.7.5",          "2.7.61" => "2.7.6", -        "2.7.73" => "2.7.7", +        "2.7.73" => "2.7.7"        }.freeze        # This returns the version number of XQuartz, not of the upstream X.org. @@ -69,10 +69,10 @@ module OS        # educated guess as to what version is installed.        def guess_system_version          case MacOS.version -        when '10.5' then '2.1.6' -        when '10.6' then '2.3.6' -        when '10.7' then '2.6.3' -        else 'dunno' +        when "10.5" then "2.1.6" +        when "10.6" then "2.3.6" +        when "10.7" then "2.6.3" +        else "dunno"          end        end @@ -93,10 +93,10 @@ module OS        # remain public. New code should use MacOS::X11.bin, MacOS::X11.lib and        # MacOS::X11.include instead, as that accounts for Xcode-only systems.        def prefix -        @prefix ||= if Pathname.new('/opt/X11/lib/libpng.dylib').exist? -          Pathname.new('/opt/X11') -        elsif Pathname.new('/usr/X11/lib/libpng.dylib').exist? -          Pathname.new('/usr/X11') +        @prefix ||= if Pathname.new("/opt/X11/lib/libpng.dylib").exist? +          Pathname.new("/opt/X11") +        elsif Pathname.new("/usr/X11/lib/libpng.dylib").exist? +          Pathname.new("/usr/X11")          end        end diff --git a/Library/Homebrew/patch.rb b/Library/Homebrew/patch.rb index 4b41d972d..3c5bd42ea 100644 --- a/Library/Homebrew/patch.rb +++ b/Library/Homebrew/patch.rb @@ -1,5 +1,5 @@ -require 'resource' -require 'erb' +require "resource" +require "erb"  module Patch    def self.create(strip, src, &block) @@ -65,7 +65,8 @@ class EmbeddedPatch    def apply      data = contents.gsub("HOMEBREW_PREFIX", HOMEBREW_PREFIX) -    cmd, args = "/usr/bin/patch", %W[-g 0 -f -#{strip}] +    cmd = "/usr/bin/patch" +    args = %W[-g 0 -f -#{strip}]      IO.popen("#{cmd} #{args.join(" ")}", "w") { |p| p.write(data) }      raise ErrorDuringExecution.new(cmd, args) unless $?.success?    end @@ -118,7 +119,7 @@ class ExternalPatch      true    end -  def owner= owner +  def owner=(owner)      resource.owner   = owner      resource.version = resource.checksum || ERB::Util.url_encode(resource.url)    end @@ -170,7 +171,7 @@ class LegacyPatch < ExternalPatch      super    end -  def verify_download_integrity(fn) +  def verify_download_integrity(_fn)      # no-op    end diff --git a/Library/Homebrew/requirement.rb b/Library/Homebrew/requirement.rb index 3d1ee52ce..2034c9ac8 100644 --- a/Library/Homebrew/requirement.rb +++ b/Library/Homebrew/requirement.rb @@ -1,7 +1,7 @@ -require 'dependable' -require 'dependency' -require 'dependencies' -require 'build_environment' +require "dependable" +require "dependency" +require "dependencies" +require "build_environment"  # A base class for non-formula requirements needed by formulae.  # A "fatal" requirement is one that will fail the build if it is not present. @@ -12,7 +12,7 @@ class Requirement    attr_reader :tags, :name, :cask, :download, :default_formula    alias_method :option_name, :name -  def initialize(tags=[]) +  def initialize(tags = [])      @default_formula = self.class.default_formula      @cask ||= self.class.cask      @download ||= self.class.download @@ -57,7 +57,9 @@ class Requirement    # Can overridden to optionally prevent a formula with this requirement from    # pouring a bottle. -  def pour_bottle?; true end +  def pour_bottle? +    true +  end    # Overriding #fatal? is deprecated.    # Pass a boolean to the fatal DSL method instead. @@ -122,8 +124,8 @@ class Requirement    def infer_name      klass = self.class.name || self.class.to_s -    klass.sub!(/(Dependency|Requirement)$/, '') -    klass.sub!(/^(\w+::)*/, '') +    klass.sub!(/(Dependency|Requirement)$/, "") +    klass.sub!(/^(\w+::)*/, "")      klass.downcase    end @@ -140,7 +142,7 @@ class Requirement      # build is deprecated, use `depends_on <requirement> => :build` instead      attr_rw :build -    def satisfy(options={}, &block) +    def satisfy(options = {}, &block)        @satisfied ||= Requirement::Satisfier.new(options, &block)      end @@ -202,7 +204,7 @@ class Requirement        reqs      end -    def prune?(dependent, req, &block) +    def prune?(dependent, req, &_block)        catch(:prune) do          if block_given?            yield dependent, req diff --git a/Library/Homebrew/requirements.rb b/Library/Homebrew/requirements.rb index 09411aaef..017cf945e 100644 --- a/Library/Homebrew/requirements.rb +++ b/Library/Homebrew/requirements.rb @@ -1,18 +1,18 @@ -require 'requirement' -require 'requirements/apr_requirement' -require 'requirements/fortran_requirement' -require 'requirements/language_module_requirement' -require 'requirements/minimum_macos_requirement' -require 'requirements/maximum_macos_requirement' -require 'requirements/mpi_requirement' -require 'requirements/osxfuse_requirement' -require 'requirements/python_requirement' -require 'requirements/java_requirement' -require 'requirements/ruby_requirement' -require 'requirements/tuntap_requirement' -require 'requirements/unsigned_kext_requirement' -require 'requirements/x11_requirement' -require 'requirements/emacs_requirement' +require "requirement" +require "requirements/apr_requirement" +require "requirements/fortran_requirement" +require "requirements/language_module_requirement" +require "requirements/minimum_macos_requirement" +require "requirements/maximum_macos_requirement" +require "requirements/mpi_requirement" +require "requirements/osxfuse_requirement" +require "requirements/python_requirement" +require "requirements/java_requirement" +require "requirements/ruby_requirement" +require "requirements/tuntap_requirement" +require "requirements/unsigned_kext_requirement" +require "requirements/x11_requirement" +require "requirements/emacs_requirement"  class XcodeRequirement < Requirement    fatal true @@ -54,16 +54,16 @@ end  class MysqlRequirement < Requirement    fatal true -  default_formula 'mysql' +  default_formula "mysql" -  satisfy { which 'mysql_config' } +  satisfy { which "mysql_config" }  end  class PostgresqlRequirement < Requirement    fatal true -  default_formula 'postgresql' +  default_formula "postgresql" -  satisfy { which 'pg_config' } +  satisfy { which "pg_config" }  end  class GPGRequirement < Requirement @@ -78,7 +78,7 @@ class TeXRequirement < Requirement    cask "mactex"    download "https://www.tug.org/mactex/" -  satisfy { which('tex') || which('latex') } +  satisfy { which("tex") || which("latex") }    def message      s = <<-EOS.undent @@ -114,14 +114,14 @@ end  class MercurialRequirement < Requirement    fatal true -  default_formula 'mercurial' +  default_formula "mercurial" -  satisfy { which('hg') } +  satisfy { which("hg") }  end  class GitRequirement < Requirement    fatal true -  default_formula 'git' -  satisfy { !!which('git') } +  default_formula "git" +  satisfy { !!which("git") }  end diff --git a/Library/Homebrew/requirements/fortran_requirement.rb b/Library/Homebrew/requirements/fortran_requirement.rb index a86a1a8ef..9d58950fc 100644 --- a/Library/Homebrew/requirements/fortran_requirement.rb +++ b/Library/Homebrew/requirements/fortran_requirement.rb @@ -1,9 +1,9 @@ -require 'requirement' +require "requirement"  class FortranRequirement < Requirement    fatal true -  default_formula 'gcc' +  default_formula "gcc"    env { ENV.fortran } diff --git a/Library/Homebrew/requirements/language_module_requirement.rb b/Library/Homebrew/requirements/language_module_requirement.rb index 47cbe8bc1..146531fe2 100644 --- a/Library/Homebrew/requirements/language_module_requirement.rb +++ b/Library/Homebrew/requirements/language_module_requirement.rb @@ -1,9 +1,9 @@ -require 'requirement' +require "requirement"  class LanguageModuleRequirement < Requirement    fatal true -  def initialize language, module_name, import_name=nil +  def initialize(language, module_name, import_name = nil)      @language = language      @module_name = module_name      @import_name = import_name || module_name @@ -21,31 +21,31 @@ class LanguageModuleRequirement < Requirement    def the_test      case @language -      when :chicken then %W{/usr/bin/env csi -e (use\ #{@import_name})} -      when :jruby then %W{/usr/bin/env jruby -rubygems -e require\ '#{@import_name}'} -      when :lua then %W{/usr/bin/env luarocks show #{@import_name}} -      when :node then %W{/usr/bin/env node -e require('#{@import_name}');} -      when :ocaml then %W{/usr/bin/env opam list --installed #{@import_name}} -      when :perl then %W{/usr/bin/env perl -e use\ #{@import_name}} -      when :python then %W{/usr/bin/env python -c import\ #{@import_name}} -      when :python3 then %W{/usr/bin/env python3 -c import\ #{@import_name}} -      when :ruby then %W{/usr/bin/env ruby -rubygems -e require\ '#{@import_name}'} -      when :rbx then %W{/usr/bin/env rbx -rubygems -e require\ '#{@import_name}'} +    when :chicken then %W[/usr/bin/env csi -e (use\ #{@import_name})] +    when :jruby then %W[/usr/bin/env jruby -rubygems -e require\ '#{@import_name}'] +    when :lua then %W[/usr/bin/env luarocks show #{@import_name}] +    when :node then %W[/usr/bin/env node -e require('#{@import_name}');] +    when :ocaml then %W[/usr/bin/env opam list --installed #{@import_name}] +    when :perl then %W[/usr/bin/env perl -e use\ #{@import_name}] +    when :python then %W[/usr/bin/env python -c import\ #{@import_name}] +    when :python3 then %W[/usr/bin/env python3 -c import\ #{@import_name}] +    when :ruby then %W[/usr/bin/env ruby -rubygems -e require\ '#{@import_name}'] +    when :rbx then %W[/usr/bin/env rbx -rubygems -e require\ '#{@import_name}']      end    end    def command_line      case @language -      when :chicken then "chicken-install" -      when :jruby   then "jruby -S gem install" -      when :lua     then "luarocks install" -      when :node    then "npm install" -      when :ocaml   then "opam install" -      when :perl    then "cpan -i" -      when :python  then "pip install" -      when :python3 then "pip3 install" -      when :rbx     then "rbx gem install" -      when :ruby    then "gem install" +    when :chicken then "chicken-install" +    when :jruby   then "jruby -S gem install" +    when :lua     then "luarocks install" +    when :node    then "npm install" +    when :ocaml   then "opam install" +    when :perl    then "cpan -i" +    when :python  then "pip install" +    when :python3 then "pip3 install" +    when :rbx     then "rbx gem install" +    when :ruby    then "gem install"      end    end  end diff --git a/Library/Homebrew/requirements/maximum_macos_requirement.rb b/Library/Homebrew/requirements/maximum_macos_requirement.rb index 6031bdb39..fe2fd11fc 100644 --- a/Library/Homebrew/requirements/maximum_macos_requirement.rb +++ b/Library/Homebrew/requirements/maximum_macos_requirement.rb @@ -1,4 +1,4 @@ -require 'requirement' +require "requirement"  class MaximumMacOSRequirement < Requirement    fatal true diff --git a/Library/Homebrew/requirements/minimum_macos_requirement.rb b/Library/Homebrew/requirements/minimum_macos_requirement.rb index f816afc9f..0ff393a79 100644 --- a/Library/Homebrew/requirements/minimum_macos_requirement.rb +++ b/Library/Homebrew/requirements/minimum_macos_requirement.rb @@ -1,4 +1,4 @@ -require 'requirement' +require "requirement"  class MinimumMacOSRequirement < Requirement    fatal true diff --git a/Library/Homebrew/requirements/mpi_requirement.rb b/Library/Homebrew/requirements/mpi_requirement.rb index 5ed042a41..065b56c8b 100644 --- a/Library/Homebrew/requirements/mpi_requirement.rb +++ b/Library/Homebrew/requirements/mpi_requirement.rb @@ -1,15 +1,14 @@ -require 'requirement' +require "requirement"  # There are multiple implementations of MPI-2 available.  # http://www.mpi-forum.org/  # This requirement is used to find an appropriate one.  class MPIRequirement < Requirement -    attr_reader :lang_list    fatal true -  default_formula 'open-mpi' +  default_formula "open-mpi"    env :userpaths @@ -23,15 +22,15 @@ class MPIRequirement < Requirement      super(tags)    end -  def mpi_wrapper_works? compiler +  def mpi_wrapper_works?(compiler)      compiler = which compiler -    return false if compiler.nil? or not compiler.executable? +    return false if compiler.nil? || !compiler.executable?      # Some wrappers are non-functional and will return a non-zero exit code      # when invoked for version info.      #      # NOTE: A better test may be to do a small test compilation a la autotools. -    quiet_system compiler, '--version' +    quiet_system compiler, "--version"    end    def inspect @@ -42,13 +41,13 @@ class MPIRequirement < Requirement      @lang_list.each do |lang|        case lang        when :cc, :cxx, :f90, :f77 -        compiler = 'mpi' + lang.to_s +        compiler = "mpi" + lang.to_s          @non_functional << compiler unless mpi_wrapper_works? compiler        else          @unknown_langs << lang.to_s        end      end -    @unknown_langs.empty? and @non_functional.empty? +    @unknown_langs.empty? && @non_functional.empty?    end    env do @@ -56,11 +55,11 @@ class MPIRequirement < Requirement      # Variable names taken from:      # https://www.gnu.org/software/autoconf-archive/ax_mpi.html      @lang_list.each do |lang| -      compiler = 'mpi' + lang.to_s +      compiler = "mpi" + lang.to_s        mpi_path = which compiler        # Fortran 90 environment var has a different name -      compiler = 'MPIFC' if lang == :f90 +      compiler = "MPIFC" if lang == :f90        ENV[compiler.upcase] = mpi_path      end    end diff --git a/Library/Homebrew/requirements/python_requirement.rb b/Library/Homebrew/requirements/python_requirement.rb index df9d7328c..1fb1045f0 100644 --- a/Library/Homebrew/requirements/python_requirement.rb +++ b/Library/Homebrew/requirements/python_requirement.rb @@ -39,9 +39,17 @@ class PythonRequirement < Requirement      Pathname.new Utils.popen_read(python, "-c", "import sys; print(sys.executable)").strip    end -  def system_python; "/usr/bin/#{python_binary}" end -  def system_python?; system_python == which_python.to_s end -  def python_binary; "python" end +  def system_python +    "/usr/bin/#{python_binary}" +  end + +  def system_python? +    system_python == which_python.to_s +  end + +  def python_binary +    "python" +  end    # Deprecated    alias_method :to_s, :python_binary @@ -54,5 +62,7 @@ class Python3Requirement < PythonRequirement    satisfy(:build_env => false) { which_python } -  def python_binary; "python3" end +  def python_binary +    "python3" +  end  end diff --git a/Library/Homebrew/requirements/unsigned_kext_requirement.rb b/Library/Homebrew/requirements/unsigned_kext_requirement.rb index 67659900b..390004687 100644 --- a/Library/Homebrew/requirements/unsigned_kext_requirement.rb +++ b/Library/Homebrew/requirements/unsigned_kext_requirement.rb @@ -1,4 +1,4 @@ -require 'requirement' +require "requirement"  class UnsignedKextRequirement < Requirement    fatal true diff --git a/Library/Homebrew/requirements/x11_requirement.rb b/Library/Homebrew/requirements/x11_requirement.rb index 890ef4d4f..ce921cffa 100644 --- a/Library/Homebrew/requirements/x11_requirement.rb +++ b/Library/Homebrew/requirements/x11_requirement.rb @@ -10,7 +10,7 @@ class X11Requirement < Requirement    env { ENV.x11 } -  def initialize(name="x11", tags=[]) +  def initialize(name = "x11", tags = [])      @name = name      if /(\d\.)+\d/ === tags.first        @min_version = Version.new(tags.shift) @@ -32,7 +32,7 @@ class X11Requirement < Requirement      s    end -  def <=> other +  def <=>(other)      return unless X11Requirement === other      min_version <=> other.min_version    end diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index 4aa0e9640..0c3184180 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -1,6 +1,6 @@ -require 'download_strategy' -require 'checksum' -require 'version' +require "download_strategy" +require "checksum" +require "version"  # Resource is the fundamental representation of an external resource. The  # primary formula download, along with other declared resources, are instances @@ -38,7 +38,7 @@ class Resource      end    end -  def initialize name=nil, &block +  def initialize(name = nil, &block)      @name = name      @url = nil      @version = nil @@ -57,7 +57,7 @@ class Resource    # to be used as resource names without confusing software that    # interacts with download_name, e.g. github.com/foo/bar    def escaped_name -    name.gsub("/", '-') +    name.gsub("/", "-")    end    def download_name @@ -72,7 +72,7 @@ class Resource      downloader.clear_cache    end -  def stage(target=nil, &block) +  def stage(target = nil, &block)      unless target || block        raise ArgumentError, "target directory or block is required"      end @@ -84,14 +84,14 @@ class Resource    # If a target is given, unpack there; else unpack to a temp folder    # If block is given, yield to that block    # A target or a block must be given, but not both -  def unpack(target=nil) +  def unpack(target = nil)      mktemp(download_name) do        downloader.stage        if block_given?          yield self        elsif target          target = Pathname.new(target) unless target.is_a? Pathname -        target.install Dir['*'] +        target.install Dir["*"]        end      end    end @@ -114,7 +114,7 @@ class Resource      cached_download    end -  def verify_download_integrity fn +  def verify_download_integrity(fn)      if fn.file?        ohai "Verifying #{fn.basename} checksum" if ARGV.verbose?        fn.verify_checksum(checksum) @@ -129,7 +129,7 @@ class Resource      define_method(type) { |val| @checksum = Checksum.new(type, val) }    end -  def url val=nil, specs={} +  def url(val = nil, specs = {})      return @url if val.nil?      @url = val      @specs.merge!(specs) @@ -137,11 +137,11 @@ class Resource      @download_strategy = DownloadStrategyDetector.detect(url, using)    end -  def version val=nil +  def version(val = nil)      @version ||= detect_version(val)    end -  def mirror val +  def mirror(val)      mirrors << val    end @@ -160,7 +160,7 @@ class Resource    end    class Go < Resource -    def stage target +    def stage(target)        super(target/name)      end    end diff --git a/Library/Homebrew/sandbox.rb b/Library/Homebrew/sandbox.rb index 7ad845d5e..835ed8a25 100644 --- a/Library/Homebrew/sandbox.rb +++ b/Library/Homebrew/sandbox.rb @@ -39,11 +39,11 @@ class Sandbox      @profile.add_rule(rule)    end -  def allow_write(path, options={}) +  def allow_write(path, options = {})      add_rule :allow => true, :operation => "file-write*", :filter => path_filter(path, options[:type])    end -  def deny_write(path, options={}) +  def deny_write(path, options = {})      add_rule :allow => false, :operation => "file-write*", :filter => path_filter(path, options[:type])    end @@ -79,33 +79,33 @@ class Sandbox    end    def exec(*args) -    begin -      seatbelt = Tempfile.new(["homebrew", ".sb"], HOMEBREW_TEMP) -      seatbelt.write(@profile.dump) -      seatbelt.close -      @start = Time.now -      safe_system SANDBOX_EXEC, "-f", seatbelt.path, *args -    rescue -      if ARGV.verbose? -        ohai "Sandbox profile:" -        puts @profile.dump -      end -      raise -    ensure -      seatbelt.unlink -      unless @log.nil? -        sleep 0.1 # wait for a bit to let syslog catch up the latest events. -        syslog_args = %W[ -          -F '$((Time)(local))\ $(Sender)[$(PID)]:\ $Message' -          -k Time ge #{@start.to_i.to_s} -          -k Sender kernel -          -o -          -k Time ge #{@start.to_i.to_s} -          -k Sender sandboxd -        ] -        quiet_system "syslog #{syslog_args * " "} | grep deny > #{@log}" -      end + +    seatbelt = Tempfile.new(["homebrew", ".sb"], HOMEBREW_TEMP) +    seatbelt.write(@profile.dump) +    seatbelt.close +    @start = Time.now +    safe_system SANDBOX_EXEC, "-f", seatbelt.path, *args +  rescue +    if ARGV.verbose? +      ohai "Sandbox profile:" +      puts @profile.dump +    end +    raise +  ensure +    seatbelt.unlink +    unless @log.nil? +      sleep 0.1 # wait for a bit to let syslog catch up the latest events. +      syslog_args = %W[ +        -F '$((Time)(local))\ $(Sender)[$(PID)]:\ $Message' +        -k Time ge #{@start.to_i} +        -k Sender kernel +        -o +        -k Time ge #{@start.to_i} +        -k Sender sandboxd +      ] +      quiet_system "syslog #{syslog_args * " "} | grep deny > #{@log}"      end +    end    private diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb index b30f489d2..f7e2ff113 100644 --- a/Library/Homebrew/software_spec.rb +++ b/Library/Homebrew/software_spec.rb @@ -1,13 +1,13 @@ -require 'forwardable' -require 'resource' -require 'checksum' -require 'version' -require 'options' -require 'build_options' -require 'dependency_collector' -require 'bottles' -require 'patch' -require 'compilers' +require "forwardable" +require "resource" +require "checksum" +require "version" +require "options" +require "build_options" +require "dependency_collector" +require "bottles" +require "patch" +require "compilers"  class SoftwareSpec    extend Forwardable @@ -15,7 +15,7 @@ class SoftwareSpec    PREDEFINED_OPTIONS = {      :universal => Option.new("universal", "Build a universal binary"),      :cxx11     => Option.new("c++11", "Build using C++11 mode"), -    "32-bit"   => Option.new("32-bit", "Build 32-bit only"), +    "32-bit"   => Option.new("32-bit", "Build 32-bit only")    }    attr_reader :name, :full_name, :owner @@ -44,7 +44,7 @@ class SoftwareSpec      @compiler_failures = []    end -  def owner= owner +  def owner=(owner)      @name = owner.name      @full_name = owner.full_name      @bottle_specification.tap = owner.tap @@ -57,7 +57,7 @@ class SoftwareSpec      patches.each { |p| p.owner = self }    end -  def url val=nil, specs={} +  def url(val = nil, specs = {})      return @resource.url if val.nil?      @resource.url(val, specs)      dependency_collector.add(@resource) @@ -68,15 +68,15 @@ class SoftwareSpec        (bottle_specification.compatible_cellar? || ARGV.force_bottle?)    end -  def bottle &block +  def bottle(&block)      bottle_specification.instance_eval(&block)    end -  def resource_defined? name -    resources.has_key?(name) +  def resource_defined?(name) +    resources.key?(name)    end -  def resource name, klass=Resource, &block +  def resource(name, klass = Resource, &block)      if block_given?        raise DuplicateResourceError.new(name) if resource_defined?(name)        res = klass.new(name, &block) @@ -87,7 +87,7 @@ class SoftwareSpec      end    end -  def go_resource name, &block +  def go_resource(name, &block)      resource name, Resource::Go, &block    end @@ -95,7 +95,7 @@ class SoftwareSpec      options.include?(name)    end -  def option(name, description="") +  def option(name, description = "")      opt = PREDEFINED_OPTIONS.fetch(name) do        if Symbol === name          opoo "Passing arbitrary symbols to `option` is deprecated: #{name.inspect}" @@ -110,7 +110,7 @@ class SoftwareSpec      options << opt    end -  def deprecated_option hash +  def deprecated_option(hash)      raise ArgumentError, "deprecated_option hash must not be empty" if hash.empty?      hash.each do |old_options, new_options|        Array(old_options).each do |old_option| @@ -131,7 +131,7 @@ class SoftwareSpec      @build = BuildOptions.new(Options.create(@flags), options)    end -  def depends_on spec +  def depends_on(spec)      dep = dependency_collector.add(spec)      add_dep_option(dep) if dep    end @@ -144,15 +144,15 @@ class SoftwareSpec      dependency_collector.requirements    end -  def patch strip=:p1, src=nil, &block +  def patch(strip = :p1, src = nil, &block)      patches << Patch.create(strip, src, &block)    end -  def fails_with compiler, &block +  def fails_with(compiler, &block)      compiler_failures << CompilerFailure.create(compiler, &block)    end -  def needs *standards +  def needs(*standards)      standards.each do |standard|        compiler_failures.concat CompilerFailure.for_standard(standard)      end @@ -178,11 +178,11 @@ end  class HeadSoftwareSpec < SoftwareSpec    def initialize      super -    @resource.version = Version.new('HEAD') +    @resource.version = Version.new("HEAD")    end -  def verify_download_integrity fn -    return +  def verify_download_integrity(_fn) +    nil    end  end @@ -272,7 +272,7 @@ class BottleSpecification      @collector = BottleCollector.new    end -  def root_url(var=nil) +  def root_url(var = nil)      if var.nil?        @root_url ||= "#{DEFAULT_DOMAIN}/#{Bintray.repository(tap)}"      else @@ -304,7 +304,7 @@ class BottleSpecification    def checksums      checksums = {}      os_versions = collector.keys -    os_versions.map! {|osx| MacOS::Version.from_symbol osx rescue nil }.compact! +    os_versions.map! { |osx| MacOS::Version.from_symbol osx rescue nil }.compact!      os_versions.sort.reverse_each do |os_version|        osx = os_version.to_sym        checksum = collector[osx] diff --git a/Library/Homebrew/tab.rb b/Library/Homebrew/tab.rb index e5eaa5139..f2dceb7fa 100644 --- a/Library/Homebrew/tab.rb +++ b/Library/Homebrew/tab.rb @@ -1,14 +1,14 @@ -require 'cxxstdlib' -require 'ostruct' -require 'options' -require 'utils/json' +require "cxxstdlib" +require "ostruct" +require "options" +require "utils/json"  # Inherit from OpenStruct to gain a generic initialization method that takes a  # hash and creates an attribute for each key and value. `Tab.new` probably  # should not be called directly, instead use one of the class methods like  # `Tab.create`.  class Tab < OpenStruct -  FILENAME = 'INSTALL_RECEIPT.json' +  FILENAME = "INSTALL_RECEIPT.json"    def self.create(formula, compiler, stdlib, build)      attributes = { @@ -24,18 +24,18 @@ class Tab < OpenStruct        "source" => {          "path" => formula.path.to_s,          "tap" => formula.tap, -        "spec" => formula.active_spec_sym.to_s, -      }, +        "spec" => formula.active_spec_sym.to_s +      }      }      new(attributes)    end -  def self.from_file path +  def self.from_file(path)      from_file_content(File.read(path), path)    end -  def self.from_file_content content, path +  def self.from_file_content(content, path)      attributes = Utils::JSON.load(content)      attributes["tabfile"] = path      attributes["source"] ||= {} @@ -61,7 +61,7 @@ class Tab < OpenStruct      new(attributes)    end -  def self.for_keg keg +  def self.for_keg(keg)      path = keg.join(FILENAME)      if path.exist? @@ -71,11 +71,11 @@ class Tab < OpenStruct      end    end -  def self.for_name name +  def self.for_name(name)      for_formula(Formulary.factory(name))    end -  def self.remap_deprecated_options deprecated_options, options +  def self.remap_deprecated_options(deprecated_options, options)      deprecated_options.each do |deprecated_option|        option = options.find { |o| o.name == deprecated_option.old }        next unless option @@ -85,7 +85,7 @@ class Tab < OpenStruct      options    end -  def self.for_formula f +  def self.for_formula(f)      paths = []      if f.opt_prefix.symlink? && f.opt_prefix.directory? @@ -130,23 +130,23 @@ class Tab < OpenStruct        "source" => {          "path" => nil,          "tap" => nil, -        "spec" => "stable", -      }, +        "spec" => "stable" +      }      }      new(attributes)    end -  def with? val +  def with?(val)      name = val.respond_to?(:option_name) ? val.option_name : val      include?("with-#{name}") || unused_options.include?("without-#{name}")    end -  def without? name -    not with? name +  def without?(name) +    !with? name    end -  def include? opt +  def include?(opt)      used_options.include? opt    end @@ -210,7 +210,7 @@ class Tab < OpenStruct        "HEAD" => self.HEAD,        "stdlib" => (stdlib.to_s if stdlib),        "compiler" => (compiler.to_s if compiler), -      "source" => source, +      "source" => source      }      Utils::JSON.dump(attributes) diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb index 27777e431..217261eca 100644 --- a/Library/Homebrew/tap.rb +++ b/Library/Homebrew/tap.rb @@ -41,8 +41,6 @@ class Tap          @path.cd do            Utils.popen_read("git", "config", "--get", "remote.origin.url").chomp          end -      else -        nil        end      else        raise TapUnavailableError, name @@ -113,7 +111,7 @@ class Tap        "custom_remote" => custom_remote?,        "formula_names" => formula_names,        "formula_files" => formula_files.map(&:to_s), -      "command_files" => command_files.map(&:to_s), +      "command_files" => command_files.map(&:to_s)      }    end diff --git a/Library/Homebrew/tap_migrations.rb b/Library/Homebrew/tap_migrations.rb index bba3ba0e3..662629ecc 100644 --- a/Library/Homebrew/tap_migrations.rb +++ b/Library/Homebrew/tap_migrations.rb @@ -234,5 +234,5 @@ TAP_MIGRATIONS = {    "xspringies" => "homebrew/x11",    "yarp" => "homebrew/x11",    "ydict" => "homebrew/boneyard", -  "zenity" => "homebrew/x11", +  "zenity" => "homebrew/x11"  } diff --git a/Library/Homebrew/test.rb b/Library/Homebrew/test.rb index 163abe93a..796ce0901 100644 --- a/Library/Homebrew/test.rb +++ b/Library/Homebrew/test.rb @@ -24,7 +24,7 @@ begin    formula.extend(Debrew::Formula) if ARGV.debug?    # tests can also return false to indicate failure -  Timeout::timeout TEST_TIMEOUT_SECONDS do +  Timeout.timeout TEST_TIMEOUT_SECONDS do      raise "test returned false" if formula.run_test == false    end  rescue Exception => e diff --git a/Library/Homebrew/test/Rakefile b/Library/Homebrew/test/Rakefile index b9dfe3ebb..056da3015 100644 --- a/Library/Homebrew/test/Rakefile +++ b/Library/Homebrew/test/Rakefile @@ -1,5 +1,5 @@ -require 'rake' -require 'rake/testtask' +require "rake" +require "rake/testtask"  TEST_DIRECTORY = File.dirname(File.expand_path(__FILE__))  TEST_FILES = Dir["#{TEST_DIRECTORY}/test_*.rb"] diff --git a/Library/Homebrew/test/test_ARGV.rb b/Library/Homebrew/test/test_ARGV.rb index e02c7040e..4dc3f2677 100644 --- a/Library/Homebrew/test/test_ARGV.rb +++ b/Library/Homebrew/test/test_ARGV.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'extend/ARGV' +require "testing_env" +require "extend/ARGV"  class ArgvExtensionTests < Homebrew::TestCase    def setup @@ -7,19 +7,19 @@ class ArgvExtensionTests < Homebrew::TestCase    end    def test_argv_formulae -    @argv.unshift 'mxcl' +    @argv.unshift "mxcl"      assert_raises(FormulaUnavailableError) { @argv.formulae }    end    def test_argv_casks -    @argv.unshift 'mxcl' +    @argv.unshift "mxcl"      assert_equal [], @argv.casks    end    def test_argv_kegs      keg = HOMEBREW_CELLAR + "mxcl/10.0"      keg.mkpath -    @argv << 'mxcl' +    @argv << "mxcl"      assert_equal 1, @argv.kegs.length    ensure      keg.parent.rmtree @@ -49,8 +49,8 @@ class ArgvExtensionTests < Homebrew::TestCase    def test_switch?      @argv << "-ns" << "-i" << "--bar" -    %w{n s i}.each { |s| assert @argv.switch?(s) } -    %w{b ns bar --bar -n}.each { |s| assert !@argv.switch?(s) } +    %w[n s i].each { |s| assert @argv.switch?(s) } +    %w[b ns bar --bar -n].each { |s| assert !@argv.switch?(s) }    end    def test_flag? diff --git a/Library/Homebrew/test/test_ENV.rb b/Library/Homebrew/test/test_ENV.rb index 1e0568604..1d3290b5b 100644 --- a/Library/Homebrew/test/test_ENV.rb +++ b/Library/Homebrew/test/test_ENV.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'extend/ENV' +require "testing_env" +require "extend/ENV"  module SharedEnvTests    def setup @@ -9,16 +9,16 @@ module SharedEnvTests    def test_switching_compilers      @env.llvm      @env.clang -    assert_nil @env['LD'] -    assert_equal @env['OBJC'], @env['CC'] +    assert_nil @env["LD"] +    assert_equal @env["OBJC"], @env["CC"]    end    def test_with_build_environment_restores_env      before = @env.dup      @env.with_build_environment do -      @env['foo'] = 'bar' +      @env["foo"] = "bar"      end -    assert_nil @env['foo'] +    assert_nil @env["foo"]      assert_equal before, @env    end @@ -26,12 +26,12 @@ module SharedEnvTests      before = @env.dup      begin        @env.with_build_environment do -        @env['foo'] = 'bar' +        @env["foo"] = "bar"          raise Exception        end      rescue Exception      end -    assert_nil @env['foo'] +    assert_nil @env["foo"]      assert_equal before, @env    end @@ -46,63 +46,63 @@ module SharedEnvTests    end    def test_append_existing_key -    @env['foo'] = 'bar' -    @env.append 'foo', '1' -    assert_equal 'bar 1', @env['foo'] +    @env["foo"] = "bar" +    @env.append "foo", "1" +    assert_equal "bar 1", @env["foo"]    end    def test_append_existing_key_empty -    @env['foo'] = '' -    @env.append 'foo', '1' -    assert_equal '1', @env['foo'] +    @env["foo"] = "" +    @env.append "foo", "1" +    assert_equal "1", @env["foo"]    end    def test_append_missing_key -    @env.append 'foo', '1' -    assert_equal '1', @env['foo'] +    @env.append "foo", "1" +    assert_equal "1", @env["foo"]    end    def test_prepend_existing_key -    @env['foo'] = 'bar' -    @env.prepend 'foo', '1' -    assert_equal '1 bar', @env['foo'] +    @env["foo"] = "bar" +    @env.prepend "foo", "1" +    assert_equal "1 bar", @env["foo"]    end    def test_prepend_existing_key_empty -    @env['foo'] = '' -    @env.prepend 'foo', '1' -    assert_equal '1', @env['foo'] +    @env["foo"] = "" +    @env.prepend "foo", "1" +    assert_equal "1", @env["foo"]    end    def test_prepend_missing_key -    @env.prepend 'foo', '1' -    assert_equal '1', @env['foo'] +    @env.prepend "foo", "1" +    assert_equal "1", @env["foo"]    end    # NOTE: this may be a wrong behavior; we should probably reject objects that    # do not respond to #to_str. For now this documents existing behavior.    def test_append_coerces_value_to_string -    @env.append 'foo', 42 -    assert_equal '42', @env['foo'] +    @env.append "foo", 42 +    assert_equal "42", @env["foo"]    end    def test_prepend_coerces_value_to_string -    @env.prepend 'foo', 42 -    assert_equal '42', @env['foo'] +    @env.prepend "foo", 42 +    assert_equal "42", @env["foo"]    end    def test_append_path -    @env.append_path 'FOO', '/usr/bin' -    assert_equal '/usr/bin', @env['FOO'] -    @env.append_path 'FOO', '/bin' -    assert_equal "/usr/bin#{File::PATH_SEPARATOR}/bin", @env['FOO'] +    @env.append_path "FOO", "/usr/bin" +    assert_equal "/usr/bin", @env["FOO"] +    @env.append_path "FOO", "/bin" +    assert_equal "/usr/bin#{File::PATH_SEPARATOR}/bin", @env["FOO"]    end    def test_prepend_path -    @env.prepend_path 'FOO', '/usr/bin' -    assert_equal '/usr/bin', @env['FOO'] -    @env.prepend_path 'FOO', '/bin' -    assert_equal "/bin#{File::PATH_SEPARATOR}/usr/bin", @env['FOO'] +    @env.prepend_path "FOO", "/usr/bin" +    assert_equal "/usr/bin", @env["FOO"] +    @env.prepend_path "FOO", "/bin" +    assert_equal "/bin#{File::PATH_SEPARATOR}/usr/bin", @env["FOO"]    end    def test_switching_compilers_updates_compiler @@ -113,11 +113,11 @@ module SharedEnvTests    end    def test_deparallelize_block_form_restores_makeflags -    @env['MAKEFLAGS'] = '-j4' +    @env["MAKEFLAGS"] = "-j4"      @env.deparallelize do -      assert_nil @env['MAKEFLAGS'] +      assert_nil @env["MAKEFLAGS"]      end -    assert_equal '-j4', @env['MAKEFLAGS'] +    assert_equal "-j4", @env["MAKEFLAGS"]    end  end diff --git a/Library/Homebrew/test/test_bottle_collector.rb b/Library/Homebrew/test/test_bottle_collector.rb index 34efe3efd..2621d1272 100644 --- a/Library/Homebrew/test/test_bottle_collector.rb +++ b/Library/Homebrew/test/test_bottle_collector.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'bottles' +require "testing_env" +require "bottles"  class BottleCollectorTests < Homebrew::TestCase    def setup @@ -13,7 +13,7 @@ class BottleCollectorTests < Homebrew::TestCase    def test_collector_returns_passed_tags      @collector[:lion] = "foo"      @collector[:mountain_lion] = "bar" -    assert_equal ['bar', :mountain_lion], checksum_for(:mountain_lion) +    assert_equal ["bar", :mountain_lion], checksum_for(:mountain_lion)    end    def test_collector_returns_when_empty @@ -32,21 +32,21 @@ class BottleCollectorTests < Homebrew::TestCase    def test_collector_finds_or_later_tags      @collector[:lion_or_later] = "foo" -    assert_equal ['foo', :lion_or_later], checksum_for(:mountain_lion) +    assert_equal ["foo", :lion_or_later], checksum_for(:mountain_lion)      assert_nil checksum_for(:snow_leopard)    end    def test_collector_prefers_exact_matches      @collector[:lion_or_later] = "foo"      @collector[:mountain_lion] = "bar" -    assert_equal ['bar', :mountain_lion], checksum_for(:mountain_lion) +    assert_equal ["bar", :mountain_lion], checksum_for(:mountain_lion)    end    def test_collector_finds_altivec_tags      @collector[:tiger_altivec] = "foo" -    assert_equal ['foo', :tiger_altivec], checksum_for(:tiger_g4) -    assert_equal ['foo', :tiger_altivec], checksum_for(:tiger_g4e) -    assert_equal ['foo', :tiger_altivec], checksum_for(:tiger_g5) +    assert_equal ["foo", :tiger_altivec], checksum_for(:tiger_g4) +    assert_equal ["foo", :tiger_altivec], checksum_for(:tiger_g4e) +    assert_equal ["foo", :tiger_altivec], checksum_for(:tiger_g5)      assert_nil checksum_for(:tiger_g3)    end  end diff --git a/Library/Homebrew/test/test_bottle_filename.rb b/Library/Homebrew/test/test_bottle_filename.rb index 0c5fdec1a..1d8cced8b 100644 --- a/Library/Homebrew/test/test_bottle_filename.rb +++ b/Library/Homebrew/test/test_bottle_filename.rb @@ -20,10 +20,10 @@ class BottleFilenameTests < Homebrew::TestCase    end    def test_create -    f = formula { +    f = formula do        url "https://example.com/foo.tar.gz"        version "1.0" -    } +    end      expected = "formula_name-1.0.tag.bottle.tar.gz"      assert_equal expected, Bottle::Filename.create(f, :tag, 0).to_s diff --git a/Library/Homebrew/test/test_bottle_hooks.rb b/Library/Homebrew/test/test_bottle_hooks.rb index 0b6c031bf..f2ae5a6b7 100644 --- a/Library/Homebrew/test/test_bottle_hooks.rb +++ b/Library/Homebrew/test/test_bottle_hooks.rb @@ -1,12 +1,16 @@ -require 'testing_env' -require 'formula_installer' -require 'hooks/bottles' +require "testing_env" +require "formula_installer" +require "hooks/bottles"  class BottleHookTests < Homebrew::TestCase    class FormulaDouble      def bottle; end      def local_bottle_path; end -    def some_random_method; true; end + +    def some_random_method +      true +    end +      def file_modified?; end    end @@ -15,9 +19,7 @@ class BottleHookTests < Homebrew::TestCase    end    def test_has_bottle -    Homebrew::Hooks::Bottles.setup_formula_has_bottle do |f| -      f.some_random_method -    end +    Homebrew::Hooks::Bottles.setup_formula_has_bottle(&:some_random_method)      assert_predicate @fi, :pour_bottle?    end @@ -29,13 +31,11 @@ class BottleHookTests < Homebrew::TestCase    end    def test_pour_formula_bottle -    Homebrew::Hooks::Bottles.setup_formula_has_bottle do |f| +    Homebrew::Hooks::Bottles.setup_formula_has_bottle do |_f|        true      end -    Homebrew::Hooks::Bottles.setup_pour_formula_bottle do |f| -      f.some_random_method -    end +    Homebrew::Hooks::Bottles.setup_pour_formula_bottle(&:some_random_method)      @fi.pour    end diff --git a/Library/Homebrew/test/test_bottle_tag.rb b/Library/Homebrew/test/test_bottle_tag.rb index e99ef462b..2bcbbf26d 100644 --- a/Library/Homebrew/test/test_bottle_tag.rb +++ b/Library/Homebrew/test/test_bottle_tag.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'bottles' +require "testing_env" +require "bottles"  class BottleTagTests < Homebrew::TestCase    def test_tag_tiger_ppc diff --git a/Library/Homebrew/test/test_build_environment.rb b/Library/Homebrew/test/test_build_environment.rb index 001d332a8..73a1c95f7 100644 --- a/Library/Homebrew/test/test_build_environment.rb +++ b/Library/Homebrew/test/test_build_environment.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'build_environment' +require "testing_env" +require "build_environment"  class BuildEnvironmentTests < Homebrew::TestCase    def setup diff --git a/Library/Homebrew/test/test_build_options.rb b/Library/Homebrew/test/test_build_options.rb index 7d2c952d9..6508e3112 100644 --- a/Library/Homebrew/test/test_build_options.rb +++ b/Library/Homebrew/test/test_build_options.rb @@ -4,8 +4,8 @@ require "options"  class BuildOptionsTests < Homebrew::TestCase    def setup -    args = Options.create(%w(--with-foo --with-bar --without-qux)) -    opts = Options.create(%w(--with-foo --with-bar --without-baz --without-qux)) +    args = Options.create(%w[--with-foo --with-bar --without-qux]) +    opts = Options.create(%w[--with-foo --with-bar --without-baz --without-qux])      @build = BuildOptions.new(args, opts)    end diff --git a/Library/Homebrew/test/test_caveats.rb b/Library/Homebrew/test/test_caveats.rb index 5708ebc03..c9e242abd 100644 --- a/Library/Homebrew/test/test_caveats.rb +++ b/Library/Homebrew/test/test_caveats.rb @@ -1,4 +1,4 @@ -require 'testing_env' +require "testing_env"  class CaveatsTests < Homebrew::TestCase    def setup diff --git a/Library/Homebrew/test/test_checksum.rb b/Library/Homebrew/test/test_checksum.rb index 5e765b78a..72ddb81a3 100644 --- a/Library/Homebrew/test/test_checksum.rb +++ b/Library/Homebrew/test/test_checksum.rb @@ -1,9 +1,9 @@ -require 'testing_env' -require 'checksum' +require "testing_env" +require "checksum"  class ChecksumTests < Homebrew::TestCase    def test_empty? -    assert_empty Checksum.new(:sha1, '') +    assert_empty Checksum.new(:sha1, "")    end    def test_equality diff --git a/Library/Homebrew/test/test_checksum_verification.rb b/Library/Homebrew/test/test_checksum_verification.rb index c4846af14..cda35e3aa 100644 --- a/Library/Homebrew/test/test_checksum_verification.rb +++ b/Library/Homebrew/test/test_checksum_verification.rb @@ -1,4 +1,4 @@ -require 'testing_env' +require "testing_env"  class ChecksumVerificationTests < Homebrew::TestCase    def assert_checksum_good @@ -22,7 +22,7 @@ class ChecksumVerificationTests < Homebrew::TestCase    def test_good_sha1      formula do -      sha1 '482e737739d946b7c8cbaf127d9ee9c148b999f5' +      sha1 "482e737739d946b7c8cbaf127d9ee9c148b999f5"      end      assert_checksum_good @@ -30,7 +30,7 @@ class ChecksumVerificationTests < Homebrew::TestCase    def test_bad_sha1      formula do -      sha1 '7ea8a98acb8f918df723c2ae73fe67d5664bfd7e' +      sha1 "7ea8a98acb8f918df723c2ae73fe67d5664bfd7e"      end      assert_checksum_bad @@ -38,7 +38,7 @@ class ChecksumVerificationTests < Homebrew::TestCase    def test_good_sha256      formula do -      sha256 '1dfb13ce0f6143fe675b525fc9e168adb2215c5d5965c9f57306bb993170914f' +      sha256 "1dfb13ce0f6143fe675b525fc9e168adb2215c5d5965c9f57306bb993170914f"      end      assert_checksum_good @@ -46,7 +46,7 @@ class ChecksumVerificationTests < Homebrew::TestCase    def test_bad_sha256      formula do -      sha256 'dcbf5f44743b74add648c7e35e414076632fa3b24463d68d1f6afc5be77024f8' +      sha256 "dcbf5f44743b74add648c7e35e414076632fa3b24463d68d1f6afc5be77024f8"      end      assert_checksum_bad diff --git a/Library/Homebrew/test/test_cleaner.rb b/Library/Homebrew/test/test_cleaner.rb index ce297fc7d..1b214c2d1 100644 --- a/Library/Homebrew/test/test_cleaner.rb +++ b/Library/Homebrew/test/test_cleaner.rb @@ -1,12 +1,12 @@ -require 'testing_env' -require 'cleaner' -require 'formula' +require "testing_env" +require "cleaner" +require "formula"  class CleanerTests < Homebrew::TestCase    include FileUtils    def setup -    @f = formula("cleaner_test") { url 'foo-1.0' } +    @f = formula("cleaner_test") { url "foo-1.0" }      @f.prefix.mkpath    end @@ -22,10 +22,10 @@ class CleanerTests < Homebrew::TestCase      Cleaner.new(@f).clean -    assert_equal 0100555, (@f.bin/'a.out').stat.mode -    assert_equal 0100444, (@f.lib/'fat.dylib').stat.mode -    assert_equal 0100444, (@f.lib/'x86_64.dylib').stat.mode -    assert_equal 0100444, (@f.lib/'i386.dylib').stat.mode +    assert_equal 0100555, (@f.bin/"a.out").stat.mode +    assert_equal 0100444, (@f.lib/"fat.dylib").stat.mode +    assert_equal 0100444, (@f.lib/"x86_64.dylib").stat.mode +    assert_equal 0100444, (@f.lib/"i386.dylib").stat.mode    end    def test_prunes_prefix_if_empty @@ -34,7 +34,7 @@ class CleanerTests < Homebrew::TestCase    end    def test_prunes_empty_directories -    subdir = @f.bin/'subdir' +    subdir = @f.bin/"subdir"      subdir.mkpath      Cleaner.new(@f).clean @@ -44,7 +44,7 @@ class CleanerTests < Homebrew::TestCase    end    def test_skip_clean_empty_directory -    @f.class.skip_clean 'bin' +    @f.class.skip_clean "bin"      @f.bin.mkpath      Cleaner.new(@f).clean @@ -53,8 +53,8 @@ class CleanerTests < Homebrew::TestCase    end    def test_skip_clean_directory_with_empty_subdir -    @f.class.skip_clean 'bin' -    subdir = @f.bin/'subdir' +    @f.class.skip_clean "bin" +    subdir = @f.bin/"subdir"      subdir.mkpath      Cleaner.new(@f).clean @@ -64,8 +64,8 @@ class CleanerTests < Homebrew::TestCase    end    def test_removes_symlink_when_target_was_pruned_first -    dir = @f.prefix/'b' -    symlink = @f.prefix/'a' +    dir = @f.prefix/"b" +    symlink = @f.prefix/"a"      dir.mkpath      ln_s dir.basename, symlink @@ -78,8 +78,8 @@ class CleanerTests < Homebrew::TestCase    end    def test_removes_symlink_pointing_to_empty_directory -    dir = @f.prefix/'b' -    symlink = @f.prefix/'c' +    dir = @f.prefix/"b" +    symlink = @f.prefix/"c"      dir.mkpath      ln_s dir.basename, symlink @@ -92,8 +92,8 @@ class CleanerTests < Homebrew::TestCase    end    def test_removes_broken_symlinks -    symlink = @f.prefix/'symlink' -    ln_s 'target', symlink +    symlink = @f.prefix/"symlink" +    ln_s "target", symlink      Cleaner.new(@f).clean @@ -101,9 +101,9 @@ class CleanerTests < Homebrew::TestCase    end    def test_skip_clean_broken_symlink -    @f.class.skip_clean 'symlink' -    symlink = @f.prefix/'symlink' -    ln_s 'target', symlink +    @f.class.skip_clean "symlink" +    symlink = @f.prefix/"symlink" +    ln_s "target", symlink      Cleaner.new(@f).clean @@ -111,9 +111,9 @@ class CleanerTests < Homebrew::TestCase    end    def test_skip_clean_symlink_pointing_to_empty_directory -    @f.class.skip_clean 'c' -    dir = @f.prefix/'b' -    symlink = @f.prefix/'c' +    @f.class.skip_clean "c" +    dir = @f.prefix/"b" +    symlink = @f.prefix/"c"      dir.mkpath      ln_s dir.basename, symlink @@ -126,9 +126,9 @@ class CleanerTests < Homebrew::TestCase    end    def test_skip_clean_symlink_when_target_pruned -    @f.class.skip_clean 'a' -    dir = @f.prefix/'b' -    symlink = @f.prefix/'a' +    @f.class.skip_clean "a" +    dir = @f.prefix/"b" +    symlink = @f.prefix/"a"      dir.mkpath      ln_s dir.basename, symlink @@ -141,7 +141,7 @@ class CleanerTests < Homebrew::TestCase    end    def test_removes_la_files -    file = @f.lib/'foo.la' +    file = @f.lib/"foo.la"      @f.lib.mkpath      touch file @@ -152,7 +152,7 @@ class CleanerTests < Homebrew::TestCase    end    def test_skip_clean_la -    file = @f.lib/'foo.la' +    file = @f.lib/"foo.la"      @f.class.skip_clean :la      @f.lib.mkpath @@ -164,7 +164,7 @@ class CleanerTests < Homebrew::TestCase    end    def test_remove_charset_alias -    file = @f.lib/'charset.alias' +    file = @f.lib/"charset.alias"      @f.lib.mkpath      touch file @@ -175,8 +175,8 @@ class CleanerTests < Homebrew::TestCase    end    def test_skip_clean_subdir -    dir = @f.lib/'subdir' -    @f.class.skip_clean 'lib/subdir' +    dir = @f.lib/"subdir" +    @f.class.skip_clean "lib/subdir"      dir.mkpath @@ -186,10 +186,10 @@ class CleanerTests < Homebrew::TestCase    end    def test_skip_clean_paths_are_anchored_to_prefix -    dir1 = @f.bin/'a' -    dir2 = @f.lib/'bin/a' +    dir1 = @f.bin/"a" +    dir2 = @f.lib/"bin/a" -    @f.class.skip_clean 'bin/a' +    @f.class.skip_clean "bin/a"      dir1.mkpath      dir2.mkpath diff --git a/Library/Homebrew/test/test_cmd_cleanup.rb b/Library/Homebrew/test/test_cmd_cleanup.rb index ebbff129e..109f27eba 100644 --- a/Library/Homebrew/test/test_cmd_cleanup.rb +++ b/Library/Homebrew/test/test_cmd_cleanup.rb @@ -1,6 +1,6 @@ -require 'testing_env' -require 'testball' -require 'cmd/cleanup' +require "testing_env" +require "testball" +require "cmd/cleanup"  class CleanupTests < Homebrew::TestCase    def test_cleanup diff --git a/Library/Homebrew/test/test_compiler_failure.rb b/Library/Homebrew/test/test_compiler_failure.rb index da656de7f..d907c93a3 100644 --- a/Library/Homebrew/test/test_compiler_failure.rb +++ b/Library/Homebrew/test/test_compiler_failure.rb @@ -32,7 +32,7 @@ class CompilerFailureTests < Homebrew::TestCase    end    def test_create_with_block_without_build -    failure = create(:clang) { } +    failure = create(:clang) {}      assert_fails_with compiler(:clang, 425), failure    end diff --git a/Library/Homebrew/test/test_compiler_selector.rb b/Library/Homebrew/test/test_compiler_selector.rb index a4a2986a0..907252b68 100644 --- a/Library/Homebrew/test/test_compiler_selector.rb +++ b/Library/Homebrew/test/test_compiler_selector.rb @@ -1,6 +1,6 @@ -require 'testing_env' -require 'compilers' -require 'software_spec' +require "testing_env" +require "compilers" +require "software_spec"  class CompilerSelectorTests < Homebrew::TestCase    class Double < SoftwareSpec diff --git a/Library/Homebrew/test/test_dependencies.rb b/Library/Homebrew/test/test_dependencies.rb index 7e4812ff7..db3b78226 100644 --- a/Library/Homebrew/test/test_dependencies.rb +++ b/Library/Homebrew/test/test_dependencies.rb @@ -1,7 +1,7 @@ -require 'testing_env' -require 'dependencies' -require 'dependency' -require 'requirements' +require "testing_env" +require "dependencies" +require "dependency" +require "requirements"  class DependenciesTests < Homebrew::TestCase    def setup @@ -25,7 +25,7 @@ class DependenciesTests < Homebrew::TestCase    def test_repetition      @deps << Dependency.new("foo")      @deps << Dependency.new("bar") -    assert_equal %q{foo, bar}, @deps*', ' +    assert_equal "foo, bar", @deps*", "    end    def test_to_a @@ -109,7 +109,7 @@ class RequirementsTests < Homebrew::TestCase    end    def test_comparison_does_not_merge_smaller -    @reqs << X11Requirement.new("x11", %w{2.6}) << X11Requirement.new +    @reqs << X11Requirement.new("x11", %w[2.6]) << X11Requirement.new      assert_equal [X11Requirement.new("x11", %w[2.6])], @reqs.to_a    end  end diff --git a/Library/Homebrew/test/test_dependency.rb b/Library/Homebrew/test/test_dependency.rb index 6f9038eae..a841467b6 100644 --- a/Library/Homebrew/test/test_dependency.rb +++ b/Library/Homebrew/test/test_dependency.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'dependency' +require "testing_env" +require "dependency"  class DependableTests < Homebrew::TestCase    def setup @@ -8,7 +8,7 @@ class DependableTests < Homebrew::TestCase    end    def test_options -    assert_equal %w{--foo --bar}.sort, @dep.options.as_flags.sort +    assert_equal %w[--foo --bar].sort, @dep.options.as_flags.sort    end    def test_interrogation @@ -20,13 +20,13 @@ end  class DependencyTests < Homebrew::TestCase    def test_accepts_single_tag -    dep = Dependency.new("foo", %w{bar}) -    assert_equal %w{bar}, dep.tags +    dep = Dependency.new("foo", %w[bar]) +    assert_equal %w[bar], dep.tags    end    def test_accepts_multiple_tags -    dep = Dependency.new("foo", %w{bar baz}) -    assert_equal %w{bar baz}.sort, dep.tags.sort +    dep = Dependency.new("foo", %w[bar baz]) +    assert_equal %w[bar baz].sort, dep.tags.sort    end    def test_preserves_symbol_tags diff --git a/Library/Homebrew/test/test_dependency_collector.rb b/Library/Homebrew/test/test_dependency_collector.rb index 1f4ffc784..460c60b8d 100644 --- a/Library/Homebrew/test/test_dependency_collector.rb +++ b/Library/Homebrew/test/test_dependency_collector.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'dependency_collector' +require "testing_env" +require "dependency_collector"  class DependencyCollectorTests < Homebrew::TestCase    def find_dependency(name) @@ -19,22 +19,22 @@ class DependencyCollectorTests < Homebrew::TestCase    end    def test_dependency_creation -    @d.add 'foo' => :build -    @d.add 'bar' => ['--universal', :optional] +    @d.add "foo" => :build +    @d.add "bar" => ["--universal", :optional]      assert_instance_of Dependency, find_dependency("foo")      assert_equal 2, find_dependency("bar").tags.length    end    def test_add_returns_created_dep -    ret = @d.add 'foo' -    assert_equal Dependency.new('foo'), ret +    ret = @d.add "foo" +    assert_equal Dependency.new("foo"), ret    end    def test_dependency_tags -    assert_predicate Dependency.new('foo', [:build]), :build? -    assert_predicate Dependency.new('foo', [:build, :optional]), :optional? -    assert_includes Dependency.new('foo', ["universal"]).options, "--universal" -    assert_empty Dependency.new('foo').tags +    assert_predicate Dependency.new("foo", [:build]), :build? +    assert_predicate Dependency.new("foo", [:build, :optional]), :optional? +    assert_includes Dependency.new("foo", ["universal"]).options, "--universal" +    assert_empty Dependency.new("foo").tags    end    def test_requirement_creation @@ -48,7 +48,7 @@ class DependencyCollectorTests < Homebrew::TestCase    end    def test_requirement_tags -    @d.add :x11 => '2.5.1' +    @d.add :x11 => "2.5.1"      @d.add :xcode => :build      assert_empty find_requirement(X11Requirement).tags      assert_predicate find_requirement(XcodeRequirement), :build? @@ -60,7 +60,7 @@ class DependencyCollectorTests < Homebrew::TestCase    end    def test_x11_min_version -    @d.add :x11 => '2.5.1' +    @d.add :x11 => "2.5.1"      assert_equal "2.5.1", find_requirement(X11Requirement).min_version.to_s    end @@ -70,9 +70,9 @@ class DependencyCollectorTests < Homebrew::TestCase    end    def test_x11_min_version_and_tag -    @d.add :x11 => ['2.5.1', :optional] +    @d.add :x11 => ["2.5.1", :optional]      dep = find_requirement(X11Requirement) -    assert_equal '2.5.1', dep.min_version.to_s +    assert_equal "2.5.1", dep.min_version.to_s      assert_predicate dep, :optional?    end @@ -95,7 +95,7 @@ class DependencyCollectorTests < Homebrew::TestCase    end    def test_does_not_mutate_dependency_spec -    spec = { 'foo' => :optional } +    spec = { "foo" => :optional }      copy = spec.dup      @d.add(spec)      assert_equal copy, spec diff --git a/Library/Homebrew/test/test_dependency_expansion.rb b/Library/Homebrew/test/test_dependency_expansion.rb index b653dc1bb..a542bfa93 100644 --- a/Library/Homebrew/test/test_dependency_expansion.rb +++ b/Library/Homebrew/test/test_dependency_expansion.rb @@ -1,8 +1,8 @@ -require 'testing_env' -require 'dependency' +require "testing_env" +require "dependency"  class DependencyExpansionTests < Homebrew::TestCase -  def build_dep(name, tags=[], deps=[]) +  def build_dep(name, tags = [], deps = [])      dep = Dependency.new(name.to_s, tags)      dep.stubs(:to_formula).returns(stub(:deps => deps, :name => name))      dep @@ -36,7 +36,7 @@ class DependencyExpansionTests < Homebrew::TestCase    def test_expand_selective_pruning      deps = Dependency.expand(@f) do |_, dep| -      Dependency.prune if dep.name == 'foo' +      Dependency.prune if dep.name == "foo"      end      assert_equal [@bar, @baz, @qux], deps @@ -60,8 +60,8 @@ class DependencyExpansionTests < Homebrew::TestCase    end    def test_merges_repeated_deps_with_differing_options -    @foo2 = build_dep(:foo, ['option']) -    @baz2 = build_dep(:baz, ['option']) +    @foo2 = build_dep(:foo, ["option"]) +    @baz2 = build_dep(:baz, ["option"])      @deps << @foo2 << @baz2      deps = [@foo2, @bar, @baz2, @qux]      deps.zip(Dependency.expand(@f)) do |expected, actual| @@ -79,21 +79,21 @@ class DependencyExpansionTests < Homebrew::TestCase    end    def test_merged_tags_no_dupes -    @foo2 = build_dep(:foo, ['option']) -    @foo3 = build_dep(:foo, ['option']) +    @foo2 = build_dep(:foo, ["option"]) +    @foo3 = build_dep(:foo, ["option"])      @deps << @foo2 << @foo3 -    assert_equal %w{option}, Dependency.expand(@f).first.tags +    assert_equal %w[option], Dependency.expand(@f).first.tags    end    def test_skip_skips_parent_but_yields_children      f = stub(:name => "f", :deps => [        build_dep(:foo, [], [@bar, @baz]), -      build_dep(:foo, [], [@baz]), +      build_dep(:foo, [], [@baz])      ]) -    deps = Dependency.expand(f) do |dependent, dep| -      Dependency.skip if %w{foo qux}.include? dep.name +    deps = Dependency.expand(f) do |_dependent, dep| +      Dependency.skip if %w[foo qux].include? dep.name      end      assert_equal [@bar, @baz], deps @@ -104,7 +104,7 @@ class DependencyExpansionTests < Homebrew::TestCase      baz = build_dep(:baz, [:build])      f = stub(:name => "f", :deps => [foo, baz]) -    deps = Dependency.expand(f) do |dependent, dep| +    deps = Dependency.expand(f) do |_dependent, dep|        Dependency.keep_but_prune_recursive_deps if dep.build?      end diff --git a/Library/Homebrew/test/test_download_strategies.rb b/Library/Homebrew/test/test_download_strategies.rb index 2f4a324ef..26ae8d822 100644 --- a/Library/Homebrew/test/test_download_strategies.rb +++ b/Library/Homebrew/test/test_download_strategies.rb @@ -1,10 +1,10 @@ -require 'testing_env' -require 'download_strategy' +require "testing_env" +require "download_strategy"  class ResourceDouble    attr_reader :url, :specs, :version -  def initialize(url="http://example.com/foo.tar.gz", specs={}) +  def initialize(url = "http://example.com/foo.tar.gz", specs = {})      @url = url      @specs = specs    end @@ -15,23 +15,23 @@ class AbstractDownloadStrategyTests < Homebrew::TestCase      @name = "foo"      @resource = ResourceDouble.new      @strategy = AbstractDownloadStrategy.new(@name, @resource) -    @args = %w{foo bar baz} +    @args = %w[foo bar baz]    end    def test_expand_safe_system_args_with_explicit_quiet_flag -    @args << { :quiet_flag => '--flag' } +    @args << { :quiet_flag => "--flag" }      expanded_args = @strategy.expand_safe_system_args(@args) -    assert_equal %w{foo bar baz --flag}, expanded_args +    assert_equal %w[foo bar baz --flag], expanded_args    end    def test_expand_safe_system_args_with_implicit_quiet_flag      expanded_args = @strategy.expand_safe_system_args(@args) -    assert_equal %w{foo bar -q baz}, expanded_args +    assert_equal %w[foo bar -q baz], expanded_args    end    def test_expand_safe_system_args_does_not_mutate_argument      result = @strategy.expand_safe_system_args(@args) -    assert_equal %w{foo bar baz}, @args +    assert_equal %w[foo bar baz], @args      refute_same @args, result    end  end @@ -39,7 +39,11 @@ end  class VCSDownloadStrategyTests < Homebrew::TestCase    def test_cache_filename      resource = ResourceDouble.new("http://example.com/bar") -    strategy = Class.new(VCSDownloadStrategy) { def cache_tag; "foo"; end } +    strategy = Class.new(VCSDownloadStrategy) do +      def cache_tag +        "foo" +                                     end +    end      downloader = strategy.new("baz", resource)      assert_equal HOMEBREW_CACHE.join("baz--foo"), downloader.cached_location    end diff --git a/Library/Homebrew/test/test_formula.rb b/Library/Homebrew/test/test_formula.rb index 3ba9c0f68..d61b0d820 100644 --- a/Library/Homebrew/test/test_formula.rb +++ b/Library/Homebrew/test/test_formula.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'testball' +require "testing_env" +require "testball"  class FormulaTests < Homebrew::TestCase    def test_formula_instantiation @@ -16,19 +16,19 @@ class FormulaTests < Homebrew::TestCase    def test_prefix      f = Testball.new -    assert_equal HOMEBREW_CELLAR/f.name/'0.1', f.prefix +    assert_equal HOMEBREW_CELLAR/f.name/"0.1", f.prefix      assert_kind_of Pathname, f.prefix    end    def test_revised_prefix      f = Class.new(Testball) { revision 1 }.new -    assert_equal HOMEBREW_CELLAR/f.name/'0.1_1', f.prefix +    assert_equal HOMEBREW_CELLAR/f.name/"0.1_1", f.prefix    end    def test_any_version_installed?      f = formula do -      url 'foo' -      version '1.0' +      url "foo" +      version "1.0"      end      refute_predicate f, :any_version_installed?      prefix = HOMEBREW_CELLAR+f.name+"0.1" @@ -62,10 +62,10 @@ class FormulaTests < Homebrew::TestCase    def test_installed_prefix_head_installed      f = formula do -      head 'foo' +      head "foo"        devel do -        url 'foo' -        version '1.0' +        url "foo" +        version "1.0"        end      end      prefix = HOMEBREW_CELLAR+f.name+f.head.version @@ -77,10 +77,10 @@ class FormulaTests < Homebrew::TestCase    def test_installed_prefix_devel_installed      f = formula do -      head 'foo' +      head "foo"        devel do -        url 'foo' -        version '1.0' +        url "foo" +        version "1.0"        end      end      prefix = HOMEBREW_CELLAR+f.name+f.devel.version @@ -92,10 +92,10 @@ class FormulaTests < Homebrew::TestCase    def test_installed_prefix_stable_installed      f = formula do -      head 'foo' +      head "foo"        devel do -        url 'foo' -        version '1.0-devel' +        url "foo" +        version "1.0-devel"        end      end      prefix = HOMEBREW_CELLAR+f.name+f.version @@ -107,10 +107,10 @@ class FormulaTests < Homebrew::TestCase    def test_installed_prefix_head      f = formula("test", Pathname.new(__FILE__).expand_path, :head) do -      head 'foo' +      head "foo"        devel do -        url 'foo' -        version '1.0-devel' +        url "foo" +        version "1.0-devel"        end      end      prefix = HOMEBREW_CELLAR+f.name+f.head.version @@ -119,10 +119,10 @@ class FormulaTests < Homebrew::TestCase    def test_installed_prefix_devel      f = formula("test", Pathname.new(__FILE__).expand_path, :devel) do -      head 'foo' +      head "foo"        devel do -        url 'foo' -        version '1.0-devel' +        url "foo" +        version "1.0-devel"        end      end      prefix = HOMEBREW_CELLAR+f.name+f.devel.version @@ -154,31 +154,31 @@ class FormulaTests < Homebrew::TestCase    end    def test_class_naming -    assert_equal 'ShellFm', Formulary.class_s('shell.fm') -    assert_equal 'Fooxx', Formulary.class_s('foo++') -    assert_equal 'SLang', Formulary.class_s('s-lang') -    assert_equal 'PkgConfig', Formulary.class_s('pkg-config') -    assert_equal 'FooBar', Formulary.class_s('foo_bar') +    assert_equal "ShellFm", Formulary.class_s("shell.fm") +    assert_equal "Fooxx", Formulary.class_s("foo++") +    assert_equal "SLang", Formulary.class_s("s-lang") +    assert_equal "PkgConfig", Formulary.class_s("pkg-config") +    assert_equal "FooBar", Formulary.class_s("foo_bar")    end    def test_formula_spec_integration      f = formula do -      homepage 'http://example.com' -      url 'http://example.com/test-0.1.tbz' -      mirror 'http://example.org/test-0.1.tbz' +      homepage "http://example.com" +      url "http://example.com/test-0.1.tbz" +      mirror "http://example.org/test-0.1.tbz"        sha1 TEST_SHA1 -      head 'http://example.com/test.git', :tag => 'foo' +      head "http://example.com/test.git", :tag => "foo"        devel do -        url 'http://example.com/test-0.2.tbz' -        mirror 'http://example.org/test-0.2.tbz' +        url "http://example.com/test-0.2.tbz" +        mirror "http://example.org/test-0.2.tbz"          sha256 TEST_SHA256        end      end -    assert_equal 'http://example.com', f.homepage -    assert_version_equal '0.1', f.version +    assert_equal "http://example.com", f.homepage +    assert_version_equal "0.1", f.version      assert_predicate f, :stable?      assert_version_equal "0.1", f.stable.version @@ -188,13 +188,13 @@ class FormulaTests < Homebrew::TestCase    def test_formula_set_active_spec      f = formula do -      url 'foo' -      version '1.0' +      url "foo" +      version "1.0"        revision 1        devel do -        url 'foo' -        version '1.0beta' +        url "foo" +        version "1.0beta"        end      end      assert_equal :stable, f.active_spec_sym @@ -208,20 +208,20 @@ class FormulaTests < Homebrew::TestCase    end    def test_path -    name = 'foo-bar' +    name = "foo-bar"      assert_equal Pathname.new("#{HOMEBREW_LIBRARY}/Formula/#{name}.rb"), Formulary.core_path(name)    end    def test_factory -    name = 'foo-bar' +    name = "foo-bar"      path = HOMEBREW_PREFIX+"Library/Formula/#{name}.rb"      path.dirname.mkpath -    File.open(path, 'w') do |f| -      f << %{ +    File.open(path, "w") do |f| +      f << %(          class #{Formulary.class_s(name)} < Formula            url 'foo-1.0'          end -      } +            )      end      assert_kind_of Formula, Formulary.factory(name)    ensure @@ -229,52 +229,52 @@ class FormulaTests < Homebrew::TestCase    end    def test_class_specs_are_always_initialized -    f = formula { url 'foo-1.0' } +    f = formula { url "foo-1.0" } -    %w{stable devel head}.each do |spec| +    %w[stable devel head].each do |spec|        assert_kind_of SoftwareSpec, f.class.send(spec)      end    end    def test_incomplete_instance_specs_are_not_accessible -    f = formula { url 'foo-1.0' } +    f = formula { url "foo-1.0" } -    %w{devel head}.each { |spec| assert_nil f.send(spec) } +    %w[devel head].each { |spec| assert_nil f.send(spec) }    end    def test_honors_attributes_declared_before_specs      f = formula do -      url 'foo-1.0' -      depends_on 'foo' -      devel { url 'foo-1.1' } +      url "foo-1.0" +      depends_on "foo" +      devel { url "foo-1.1" }      end -    %w{stable devel head}.each do |spec| -      assert_equal 'foo', f.class.send(spec).deps.first.name +    %w[stable devel head].each do |spec| +      assert_equal "foo", f.class.send(spec).deps.first.name      end    end    def test_simple_version -    assert_equal PkgVersion.parse('1.0'), formula { url 'foo-1.0.bar' }.pkg_version +    assert_equal PkgVersion.parse("1.0"), formula { url "foo-1.0.bar" }.pkg_version    end    def test_version_with_revision      f = formula do -      url 'foo-1.0.bar' +      url "foo-1.0.bar"        revision 1      end -    assert_equal PkgVersion.parse('1.0_1'), f.pkg_version +    assert_equal PkgVersion.parse("1.0_1"), f.pkg_version    end    def test_head_ignores_revisions      f = formula("test", Pathname.new(__FILE__).expand_path, :head) do -      url 'foo-1.0.bar' +      url "foo-1.0.bar"        revision 1 -      head 'foo' +      head "foo"      end -    assert_equal PkgVersion.parse('HEAD'), f.pkg_version +    assert_equal PkgVersion.parse("HEAD"), f.pkg_version    end    def test_legacy_options @@ -306,7 +306,7 @@ class FormulaTests < Homebrew::TestCase      f1 = formula do        url "foo-1.0" -      def post_install;end +      def post_install; end      end      f2 = formula do diff --git a/Library/Homebrew/test/test_formula_installer.rb b/Library/Homebrew/test/test_formula_installer.rb index 599099fd9..1bf3e43ba 100644 --- a/Library/Homebrew/test/test_formula_installer.rb +++ b/Library/Homebrew/test/test_formula_installer.rb @@ -40,7 +40,7 @@ class InstallTests < Homebrew::TestCase        assert_predicate f.libexec, :directory?        assert_equal 1, f.libexec.children.length -      refute_predicate f.prefix+'main.c', :exist? +      refute_predicate f.prefix+"main.c", :exist?        # Test that things make it into the Cellar        keg = Keg.new f.prefix diff --git a/Library/Homebrew/test/test_formula_lock.rb b/Library/Homebrew/test/test_formula_lock.rb index 1cc76d0a1..542f0d3f3 100644 --- a/Library/Homebrew/test/test_formula_lock.rb +++ b/Library/Homebrew/test/test_formula_lock.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'formula_lock' +require "testing_env" +require "formula_lock"  class FormulaLockTests < Homebrew::TestCase    def setup diff --git a/Library/Homebrew/test/test_formula_pin.rb b/Library/Homebrew/test/test_formula_pin.rb index 6dbf3e173..ebc51123c 100644 --- a/Library/Homebrew/test/test_formula_pin.rb +++ b/Library/Homebrew/test/test_formula_pin.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'formula_pin' +require "testing_env" +require "formula_pin"  class FormulaPinTests < Homebrew::TestCase    class FormulaDouble @@ -23,12 +23,12 @@ class FormulaPinTests < Homebrew::TestCase    end    def test_pinnable_if_kegs_exist -    (@f.rack+'0.1').mkpath +    (@f.rack+"0.1").mkpath      assert_predicate @pin, :pinnable?    end    def test_unpin -    (@f.rack+'0.1').mkpath +    (@f.rack+"0.1").mkpath      @pin.pin      assert_predicate @pin, :pinned? diff --git a/Library/Homebrew/test/test_formula_spec_selection.rb b/Library/Homebrew/test/test_formula_spec_selection.rb index 12b290b1e..4cfcd504c 100644 --- a/Library/Homebrew/test/test_formula_spec_selection.rb +++ b/Library/Homebrew/test/test_formula_spec_selection.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'formula' +require "testing_env" +require "formula"  class FormulaSpecSelectionTests < Homebrew::TestCase    def test_selects_stable_by_default diff --git a/Library/Homebrew/test/test_formula_validation.rb b/Library/Homebrew/test/test_formula_validation.rb index 796282206..159b7ddd8 100644 --- a/Library/Homebrew/test/test_formula_validation.rb +++ b/Library/Homebrew/test/test_formula_validation.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'formula' +require "testing_env" +require "formula"  class FormulaValidationTests < Homebrew::TestCase    def assert_invalid(attr, &block) @@ -9,7 +9,7 @@ class FormulaValidationTests < Homebrew::TestCase    def test_cant_override_brew      e = assert_raises(RuntimeError) { formula { def brew; end } } -    assert_match %r{You cannot override Formula#brew}, e.message +    assert_match /You cannot override Formula#brew/, e.message    end    def test_validates_name diff --git a/Library/Homebrew/test/test_hardware.rb b/Library/Homebrew/test/test_hardware.rb index 95313583d..7d1a256a9 100644 --- a/Library/Homebrew/test/test_hardware.rb +++ b/Library/Homebrew/test/test_hardware.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'hardware' +require "testing_env" +require "hardware"  class HardwareTests < Homebrew::TestCase    def test_hardware_cpu_type diff --git a/Library/Homebrew/test/test_inreplace.rb b/Library/Homebrew/test/test_inreplace.rb index e7917f67f..7b0dfe64d 100644 --- a/Library/Homebrew/test/test_inreplace.rb +++ b/Library/Homebrew/test/test_inreplace.rb @@ -94,20 +94,20 @@ class InreplaceTest < Homebrew::TestCase      open("test", "w") { |f| f.write "a\nb\nc\n" } -    assert_raises(Utils::InreplaceError) { +    assert_raises(Utils::InreplaceError) do        inreplace "test", "d", "f" -    } +    end -    assert_raises(Utils::InreplaceError) { +    assert_raises(Utils::InreplaceError) do        inreplace("test") { |s| s.gsub! "d", "f" } -    } +    end -    assert_raises(Utils::InreplaceError) { -      inreplace("test") { |s| +    assert_raises(Utils::InreplaceError) do +      inreplace("test") do |s|          s.change_make_var! "VAR", "value"          s.remove_make_var! "VAR2" -      } -    } +      end +    end    ensure      File.unlink("test")    end diff --git a/Library/Homebrew/test/test_integration_cmds.rb b/Library/Homebrew/test/test_integration_cmds.rb index 82686b8cb..5538cc3ee 100644 --- a/Library/Homebrew/test/test_integration_cmds.rb +++ b/Library/Homebrew/test/test_integration_cmds.rb @@ -1,11 +1,11 @@  require "testing_env"  class IntegrationCommandTests < Homebrew::TestCase -  def cmd_output *args +  def cmd_output(*args)      cmd_args = %W[ -     -W0 -     -I#{HOMEBREW_LIBRARY_PATH}/test/lib -     -rconfig +      -W0 +      -I#{HOMEBREW_LIBRARY_PATH}/test/lib +      -rconfig      ]      cmd_args << "-rsimplecov" if ENV["HOMEBREW_TESTS_COVERAGE"]      cmd_args << (HOMEBREW_LIBRARY_PATH/"../brew.rb").resolved_path.to_s @@ -18,13 +18,13 @@ class IntegrationCommandTests < Homebrew::TestCase      end    end -  def cmd *args +  def cmd(*args)      output = cmd_output(*args)      assert_equal 0, $?.exitstatus      output    end -  def cmd_fail *args +  def cmd_fail(*args)      output = cmd_output(*args)      assert_equal 1, $?.exitstatus      output diff --git a/Library/Homebrew/test/test_json.rb b/Library/Homebrew/test/test_json.rb index c3d17a773..5724cf41f 100644 --- a/Library/Homebrew/test/test_json.rb +++ b/Library/Homebrew/test/test_json.rb @@ -1,16 +1,16 @@ -require 'testing_env' -require 'utils/json' +require "testing_env" +require "utils/json"  class JsonSmokeTest < Homebrew::TestCase    def test_encode      hash = { "foo" => ["bar", "baz"] } -    json = %q|{"foo":["bar","baz"]}| +    json = '{"foo":["bar","baz"]}'      assert_equal json, Utils::JSON.dump(hash)    end    def test_decode      hash = { "foo" => ["bar", "baz"], "qux" => 1 } -    json = %q|{"foo":["bar","baz"],"qux":1}| +    json = '{"foo":["bar","baz"],"qux":1}'      assert_equal hash, Utils::JSON.load(json)    end  end diff --git a/Library/Homebrew/test/test_keg.rb b/Library/Homebrew/test/test_keg.rb index 28cadf1c4..41f085a8c 100644 --- a/Library/Homebrew/test/test_keg.rb +++ b/Library/Homebrew/test/test_keg.rb @@ -1,6 +1,6 @@ -require 'testing_env' -require 'keg' -require 'stringio' +require "testing_env" +require "keg" +require "stringio"  class LinkTests < Homebrew::TestCase    include FileUtils @@ -9,7 +9,7 @@ class LinkTests < Homebrew::TestCase      keg = HOMEBREW_CELLAR.join("foo", "1.0")      keg.join("bin").mkpath -    %w{hiworld helloworld goodbye_cruel_world}.each do |file| +    %w[hiworld helloworld goodbye_cruel_world].each do |file|        touch keg.join("bin", file)      end @@ -54,7 +54,7 @@ class LinkTests < Homebrew::TestCase      assert_equal 0, @keg.link(@mode)      refute_predicate @keg, :linked? -    ['hiworld', 'helloworld', 'goodbye_cruel_world'].each do |file| +    ["hiworld", "helloworld", "goodbye_cruel_world"].each do |file|        assert_match "#{HOMEBREW_PREFIX}/bin/#{file}", $stdout.string      end      assert_equal 3, $stdout.string.lines.count diff --git a/Library/Homebrew/test/test_language_module_requirement.rb b/Library/Homebrew/test/test_language_module_requirement.rb index bdc8dd3fc..9ffe05dbd 100644 --- a/Library/Homebrew/test/test_language_module_requirement.rb +++ b/Library/Homebrew/test/test_language_module_requirement.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'requirements/language_module_requirement' +require "testing_env" +require "requirements/language_module_requirement"  class LanguageModuleRequirementTests < Homebrew::TestCase    parallelize_me! diff --git a/Library/Homebrew/test/test_mach.rb b/Library/Homebrew/test/test_mach.rb index 0472ca141..a1f62dcf3 100644 --- a/Library/Homebrew/test/test_mach.rb +++ b/Library/Homebrew/test/test_mach.rb @@ -1,4 +1,4 @@ -require 'testing_env' +require "testing_env"  class MachOPathnameTests < Homebrew::TestCase    def dylib_path(name) @@ -173,7 +173,7 @@ class TextExecutableTests < Homebrew::TestCase    end    def test_simple_shebang -    pn.write '#!/bin/sh' +    pn.write "#!/bin/sh"      refute_predicate pn, :universal?      refute_predicate pn, :i386?      refute_predicate pn, :x86_64? @@ -187,7 +187,7 @@ class TextExecutableTests < Homebrew::TestCase    end    def test_shebang_with_options -    pn.write '#! /usr/bin/perl -w' +    pn.write "#! /usr/bin/perl -w"      refute_predicate pn, :universal?      refute_predicate pn, :i386?      refute_predicate pn, :x86_64? @@ -201,7 +201,7 @@ class TextExecutableTests < Homebrew::TestCase    end    def test_malformed_shebang -    pn.write ' #!' +    pn.write " #!"      refute_predicate pn, :universal?      refute_predicate pn, :i386?      refute_predicate pn, :x86_64? diff --git a/Library/Homebrew/test/test_mpi_requirement.rb b/Library/Homebrew/test/test_mpi_requirement.rb index 0b8555cd4..e0f97e8ee 100644 --- a/Library/Homebrew/test/test_mpi_requirement.rb +++ b/Library/Homebrew/test/test_mpi_requirement.rb @@ -1,10 +1,10 @@ -require 'testing_env' -require 'requirements/mpi_requirement' +require "testing_env" +require "requirements/mpi_requirement"  class MPIRequirementTests < Homebrew::TestCase    def test_initialize_untangles_tags_and_wrapper_symbols      wrappers = [:cc, :cxx, :f77] -    tags = [:optional, 'some-other-tag'] +    tags = [:optional, "some-other-tag"]      dep = MPIRequirement.new(*wrappers + tags)      assert_equal wrappers, dep.lang_list      assert_equal tags, dep.tags diff --git a/Library/Homebrew/test/test_options.rb b/Library/Homebrew/test/test_options.rb index 604727961..9b123bc3c 100644 --- a/Library/Homebrew/test/test_options.rb +++ b/Library/Homebrew/test/test_options.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'options' +require "testing_env" +require "options"  class OptionTests < Homebrew::TestCase    def setup @@ -96,7 +96,7 @@ class OptionsTests < Homebrew::TestCase    def test_as_flags      @options << Option.new("foo") -    assert_equal %w{--foo}, @options.as_flags +    assert_equal %w[--foo], @options.as_flags    end    def test_to_a @@ -112,14 +112,14 @@ class OptionsTests < Homebrew::TestCase    end    def test_intersection -    foo, bar, baz = %w{foo bar baz}.map { |o| Option.new(o) } +    foo, bar, baz = %w[foo bar baz].map { |o| Option.new(o) }      options = Options.new << foo << bar      @options << foo << baz      assert_equal [foo], (@options & options).to_a    end    def test_set_union -    foo, bar, baz = %w{foo bar baz}.map { |o| Option.new(o) } +    foo, bar, baz = %w[foo bar baz].map { |o| Option.new(o) }      options = Options.new << foo << bar      @options << foo << baz      assert_equal [foo, bar, baz].sort, (@options | options).sort @@ -131,7 +131,7 @@ class OptionsTests < Homebrew::TestCase    end    def test_create_with_array -    array = %w{--foo --bar} +    array = %w[--foo --bar]      option1 = Option.new("foo")      option2 = Option.new("bar")      assert_equal [option1, option2].sort, Options.create(array).sort diff --git a/Library/Homebrew/test/test_patch.rb b/Library/Homebrew/test/test_patch.rb index a70d581d8..214955ef1 100644 --- a/Library/Homebrew/test/test_patch.rb +++ b/Library/Homebrew/test/test_patch.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'patch' +require "testing_env" +require "patch"  class PatchTests < Homebrew::TestCase    def test_create_simple @@ -47,7 +47,7 @@ class LegacyPatchTests < Homebrew::TestCase    def test_patch_array      patches = Patch.normalize_legacy_patches( -      %w{http://example.com/patch1.diff http://example.com/patch2.diff} +      %w[http://example.com/patch1.diff http://example.com/patch2.diff]      )      assert_equal 2, patches.length @@ -79,8 +79,8 @@ class LegacyPatchTests < Homebrew::TestCase        :p0 => "http://example.com/patch0.diff"      )      assert_equal 2, patches.length -    assert_equal 1, patches.select { |p| p.strip == :p0 }.length -    assert_equal 1, patches.select { |p| p.strip == :p1 }.length +    assert_equal 1, patches.count { |p| p.strip == :p0 } +    assert_equal 1, patches.count { |p| p.strip == :p1 }    end    def test_mixed_hash_to_arrays @@ -92,8 +92,8 @@ class LegacyPatchTests < Homebrew::TestCase      )      assert_equal 4, patches.length -    assert_equal 2, patches.select { |p| p.strip == :p0 }.length -    assert_equal 2, patches.select { |p| p.strip == :p1 }.length +    assert_equal 2, patches.count { |p| p.strip == :p0 } +    assert_equal 2, patches.count { |p| p.strip == :p1 }    end    def test_nil diff --git a/Library/Homebrew/test/test_patching.rb b/Library/Homebrew/test/test_patching.rb index 02c73ef8e..a0e7acec0 100644 --- a/Library/Homebrew/test/test_patching.rb +++ b/Library/Homebrew/test/test_patching.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'formula' +require "testing_env" +require "formula"  class PatchingTests < Homebrew::TestCase    PATCH_URL_A = "file://#{TEST_DIRECTORY}/patches/noop-a.diff" @@ -80,19 +80,35 @@ class PatchingTests < Homebrew::TestCase    end    def test_patch_p0 -    assert_patched formula { def patches; { :p0 => PATCH_URL_B }; end } +    assert_patched formula { +      def patches +        { :p0 => PATCH_URL_B } +              end +    }    end    def test_patch_array -    assert_patched formula { def patches; [PATCH_URL_A]; end } +    assert_patched formula { +      def patches +        [PATCH_URL_A] +              end +    }    end    def test_patch_hash -    assert_patched formula { def patches; { :p1 => PATCH_URL_A }; end } +    assert_patched formula { +      def patches +        { :p1 => PATCH_URL_A } +              end +    }    end    def test_patch_hash_array -    assert_patched formula { def patches; { :p1 => [PATCH_URL_A] } end } +    assert_patched formula { +      def patches +        { :p1 => [PATCH_URL_A] } +              end +    }    end    def test_patch_string diff --git a/Library/Homebrew/test/test_pathname.rb b/Library/Homebrew/test/test_pathname.rb index e7f5fd896..0f36038dc 100644 --- a/Library/Homebrew/test/test_pathname.rb +++ b/Library/Homebrew/test/test_pathname.rb @@ -1,7 +1,7 @@ -require 'testing_env' -require 'tmpdir' -require 'extend/pathname' -require 'install_renamed' +require "testing_env" +require "tmpdir" +require "extend/pathname" +require "install_renamed"  module PathnameTestExtension    include FileUtils @@ -9,8 +9,8 @@ module PathnameTestExtension    def setup      @src  = Pathname.new(mktmpdir)      @dst  = Pathname.new(mktmpdir) -    @file = @src+'foo' -    @dir  = @src+'bar' +    @file = @src+"foo" +    @dir  = @src+"bar"    end    def teardown @@ -24,41 +24,41 @@ class PathnameTests < Homebrew::TestCase    def test_rmdir_if_possible      mkdir_p @dir -    touch @dir+'foo' +    touch @dir+"foo"      assert !@dir.rmdir_if_possible      assert_predicate @dir, :directory? -    rm_f @dir+'foo' +    rm_f @dir+"foo"      assert @dir.rmdir_if_possible      refute_predicate @dir, :exist?    end    def test_rmdir_if_possible_ignore_DS_Store      mkdir_p @dir -    touch @dir+'.DS_Store' +    touch @dir+".DS_Store"      assert @dir.rmdir_if_possible      refute_predicate @dir, :exist?    end    def test_write -    @file.write('CONTENT') -    assert_equal 'CONTENT', File.read(@file) +    @file.write("CONTENT") +    assert_equal "CONTENT", File.read(@file)    end    def test_write_does_not_overwrite      touch @file -    assert_raises(RuntimeError) { @file.write('CONTENT') } +    assert_raises(RuntimeError) { @file.write("CONTENT") }    end    def test_atomic_write      touch @file -    @file.atomic_write('CONTENT') -    assert_equal 'CONTENT', File.read(@file) +    @file.atomic_write("CONTENT") +    assert_equal "CONTENT", File.read(@file)    end    def test_atomic_write_preserves_permissions -    File.open(@file, "w", 0100777) { } +    File.open(@file, "w", 0100777) {}      @file.atomic_write("CONTENT")      assert_equal 0100777 & ~File.umask, @file.stat.mode    end @@ -78,13 +78,13 @@ class PathnameTests < Homebrew::TestCase    end    def test_extname -    assert_equal '.tar.gz', Pathname('foo-0.1.tar.gz').extname -    assert_equal '.cpio.gz', Pathname('foo-0.1.cpio.gz').extname +    assert_equal ".tar.gz", Pathname("foo-0.1.tar.gz").extname +    assert_equal ".cpio.gz", Pathname("foo-0.1.cpio.gz").extname    end    def test_stem -    assert_equal 'foo-0.1', Pathname('foo-0.1.tar.gz').stem -    assert_equal 'foo-0.1', Pathname('foo-0.1.cpio.gz').stem +    assert_equal "foo-0.1", Pathname("foo-0.1.tar.gz").stem +    assert_equal "foo-0.1", Pathname("foo-0.1.cpio.gz").stem    end    def test_install_missing_file diff --git a/Library/Homebrew/test/test_pkg_version.rb b/Library/Homebrew/test/test_pkg_version.rb index f802380d7..da2fe8ebc 100644 --- a/Library/Homebrew/test/test_pkg_version.rb +++ b/Library/Homebrew/test/test_pkg_version.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'pkg_version' +require "testing_env" +require "pkg_version"  class PkgVersionTests < Homebrew::TestCase    def v(version) diff --git a/Library/Homebrew/test/test_requirement.rb b/Library/Homebrew/test/test_requirement.rb index a4400feb3..ee64cbba4 100644 --- a/Library/Homebrew/test/test_requirement.rb +++ b/Library/Homebrew/test/test_requirement.rb @@ -1,15 +1,15 @@ -require 'testing_env' -require 'requirement' +require "testing_env" +require "requirement"  class RequirementTests < Homebrew::TestCase    def test_accepts_single_tag -    dep = Requirement.new(%w{bar}) -    assert_equal %w{bar}, dep.tags +    dep = Requirement.new(%w[bar]) +    assert_equal %w[bar], dep.tags    end    def test_accepts_multiple_tags -    dep = Requirement.new(%w{bar baz}) -    assert_equal %w{bar baz}.sort, dep.tags.sort +    dep = Requirement.new(%w[bar baz]) +    assert_equal %w[bar baz].sort, dep.tags.sort    end    def test_preserves_symbol_tags @@ -100,20 +100,20 @@ class RequirementTests < Homebrew::TestCase    end    def test_dsl_default_formula -    req = Class.new(Requirement) { default_formula 'foo' }.new +    req = Class.new(Requirement) { default_formula "foo" }.new      assert_predicate req, :default_formula?    end    def test_to_dependency -    req = Class.new(Requirement) { default_formula 'foo' }.new -    assert_equal Dependency.new('foo'), req.to_dependency +    req = Class.new(Requirement) { default_formula "foo" }.new +    assert_equal Dependency.new("foo"), req.to_dependency    end    def test_to_dependency_calls_requirement_modify_build_environment      error = Class.new(StandardError)      req = Class.new(Requirement) do -      default_formula 'foo' +      default_formula "foo"        satisfy { true }        env { raise error }      end.new @@ -128,14 +128,16 @@ class RequirementTests < Homebrew::TestCase    end    def test_eql -    a, b = Requirement.new, Requirement.new +    a = Requirement.new +    b = Requirement.new      assert_equal a, b      assert_eql a, b      assert_equal a.hash, b.hash    end    def test_not_eql -    a, b = Requirement.new([:optional]), Requirement.new +    a = Requirement.new([:optional]) +    b = Requirement.new      refute_equal a, b      refute_eql a, b      refute_equal a.hash, b.hash diff --git a/Library/Homebrew/test/test_resource.rb b/Library/Homebrew/test/test_resource.rb index ac72836e2..55845eac3 100644 --- a/Library/Homebrew/test/test_resource.rb +++ b/Library/Homebrew/test/test_resource.rb @@ -1,40 +1,40 @@ -require 'testing_env' -require 'resource' +require "testing_env" +require "resource"  class ResourceTests < Homebrew::TestCase    def setup -    @resource = Resource.new('test') +    @resource = Resource.new("test")    end    def test_url -    @resource.url('foo') -    assert_equal 'foo', @resource.url +    @resource.url("foo") +    assert_equal "foo", @resource.url    end    def test_url_with_specs -    @resource.url('foo', :branch => 'master') -    assert_equal 'foo', @resource.url -    assert_equal({ :branch => 'master' }, @resource.specs) +    @resource.url("foo", :branch => "master") +    assert_equal "foo", @resource.url +    assert_equal({ :branch => "master" }, @resource.specs)    end    def test_url_with_custom_download_strategy_class      strategy = Class.new(AbstractDownloadStrategy) -    @resource.url('foo', :using => strategy) -    assert_equal 'foo', @resource.url +    @resource.url("foo", :using => strategy) +    assert_equal "foo", @resource.url      assert_equal strategy, @resource.download_strategy    end    def test_url_with_specs_and_download_strategy      strategy = Class.new(AbstractDownloadStrategy) -    @resource.url('foo', :using => strategy, :branch => 'master') -    assert_equal 'foo', @resource.url -    assert_equal({ :branch => 'master' }, @resource.specs) +    @resource.url("foo", :using => strategy, :branch => "master") +    assert_equal "foo", @resource.url +    assert_equal({ :branch => "master" }, @resource.specs)      assert_equal strategy, @resource.download_strategy    end    def test_url_with_custom_download_strategy_symbol -    @resource.url('foo', :using => :git) -    assert_equal 'foo', @resource.url +    @resource.url("foo", :using => :git) +    assert_equal "foo", @resource.url      assert_equal GitDownloadStrategy, @resource.download_strategy    end @@ -43,35 +43,35 @@ class ResourceTests < Homebrew::TestCase    end    def test_does_not_mutate_specs_hash -    specs = { :using => :git, :branch => 'master' } -    @resource.url('foo', specs) -    assert_equal({ :branch => 'master' }, @resource.specs) +    specs = { :using => :git, :branch => "master" } +    @resource.url("foo", specs) +    assert_equal({ :branch => "master" }, @resource.specs)      assert_equal(:git, @resource.using) -    assert_equal({ :using => :git, :branch => 'master' }, specs) +    assert_equal({ :using => :git, :branch => "master" }, specs)    end    def test_version -    @resource.version('1.0') -    assert_version_equal '1.0', @resource.version +    @resource.version("1.0") +    assert_version_equal "1.0", @resource.version      refute_predicate @resource.version, :detected_from_url?    end    def test_version_from_url -    @resource.url('http://example.com/foo-1.0.tar.gz') -    assert_version_equal '1.0', @resource.version +    @resource.url("http://example.com/foo-1.0.tar.gz") +    assert_version_equal "1.0", @resource.version      assert_predicate @resource.version, :detected_from_url?    end    def test_version_with_scheme      klass = Class.new(Version)      @resource.version klass.new("1.0") -    assert_version_equal '1.0', @resource.version +    assert_version_equal "1.0", @resource.version      assert_instance_of klass, @resource.version    end    def test_version_from_tag -    @resource.url('http://example.com/foo-1.0.tar.gz', :tag => 'v1.0.2') -    assert_version_equal '1.0.2', @resource.version +    @resource.url("http://example.com/foo-1.0.tar.gz", :tag => "v1.0.2") +    assert_version_equal "1.0.2", @resource.version      assert_predicate @resource.version, :detected_from_url?    end @@ -87,9 +87,9 @@ class ResourceTests < Homebrew::TestCase    def test_mirrors      assert_empty @resource.mirrors -    @resource.mirror('foo') -    @resource.mirror('bar') -    assert_equal %w{foo bar}, @resource.mirrors +    @resource.mirror("foo") +    @resource.mirror("bar") +    assert_equal %w[foo bar], @resource.mirrors    end    def test_checksum_setters @@ -109,7 +109,7 @@ class ResourceTests < Homebrew::TestCase    end    def test_verify_download_integrity_missing -    fn = Pathname.new('test') +    fn = Pathname.new("test")      fn.stubs(:file? => true)      fn.expects(:verify_checksum).raises(ChecksumMissingError) diff --git a/Library/Homebrew/test/test_software_spec.rb b/Library/Homebrew/test/test_software_spec.rb index eb828f95c..71eb3762f 100644 --- a/Library/Homebrew/test/test_software_spec.rb +++ b/Library/Homebrew/test/test_software_spec.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'software_spec' +require "testing_env" +require "software_spec"  class SoftwareSpecTests < Homebrew::TestCase    def setup @@ -7,54 +7,62 @@ class SoftwareSpecTests < Homebrew::TestCase    end    def test_resource -    @spec.resource('foo') { url 'foo-1.0' } +    @spec.resource("foo") { url "foo-1.0" }      assert @spec.resource_defined?("foo")    end    def test_raises_when_duplicate_resources_are_defined -    @spec.resource('foo') { url 'foo-1.0' } +    @spec.resource("foo") { url "foo-1.0" }      assert_raises(DuplicateResourceError) do -      @spec.resource('foo') { url 'foo-1.0' } +      @spec.resource("foo") { url "foo-1.0" }      end    end    def test_raises_when_accessing_missing_resources      @spec.owner = Class.new do -      def name; "test"; end -      def full_name; "test"; end -      def tap; "Homebrew/homebrew"; end +      def name +        "test" +      end + +      def full_name +        "test" +      end + +      def tap +        "Homebrew/homebrew" +      end      end.new -    assert_raises(ResourceMissingError) { @spec.resource('foo') } +    assert_raises(ResourceMissingError) { @spec.resource("foo") }    end    def test_set_owner -    owner = stub :name => 'some_name', -                 :full_name => 'some_name', +    owner = stub :name => "some_name", +                 :full_name => "some_name",                   :tap => "Homebrew/homebrew"      @spec.owner = owner      assert_equal owner, @spec.owner    end    def test_resource_owner -    @spec.resource('foo') { url 'foo-1.0' } -    @spec.owner = stub :name => 'some_name', -                       :full_name => 'some_name', +    @spec.resource("foo") { url "foo-1.0" } +    @spec.owner = stub :name => "some_name", +                       :full_name => "some_name",                         :tap => "Homebrew/homebrew" -    assert_equal 'some_name', @spec.name +    assert_equal "some_name", @spec.name      @spec.resources.each_value { |r| assert_equal @spec, r.owner }    end    def test_resource_without_version_receives_owners_version -    @spec.url('foo-42') -    @spec.resource('bar') { url 'bar' } -    @spec.owner = stub :name => 'some_name', -                       :full_name => 'some_name', +    @spec.url("foo-42") +    @spec.resource("bar") { url "bar" } +    @spec.owner = stub :name => "some_name", +                       :full_name => "some_name",                         :tap => "Homebrew/homebrew" -    assert_version_equal '42', @spec.resource('bar').version +    assert_version_equal "42", @spec.resource("bar").version    end    def test_option -    @spec.option('foo') +    @spec.option("foo")      assert @spec.option_defined?("foo")    end @@ -83,14 +91,14 @@ class SoftwareSpecTests < Homebrew::TestCase    end    def test_deprecated_option -    @spec.deprecated_option('foo' => 'bar') +    @spec.deprecated_option("foo" => "bar")      refute_empty @spec.deprecated_options      assert_equal "foo", @spec.deprecated_options.first.old      assert_equal "bar", @spec.deprecated_options.first.current    end    def test_deprecated_options -    @spec.deprecated_option(['foo1', 'foo2'] => 'bar1', 'foo3' => ['bar2', 'bar3']) +    @spec.deprecated_option(["foo1", "foo2"] => "bar1", "foo3" => ["bar2", "bar3"])      assert_includes @spec.deprecated_options, DeprecatedOption.new("foo1", "bar1")      assert_includes @spec.deprecated_options, DeprecatedOption.new("foo2", "bar1")      assert_includes @spec.deprecated_options, DeprecatedOption.new("foo3", "bar2") @@ -102,20 +110,20 @@ class SoftwareSpecTests < Homebrew::TestCase    end    def test_depends_on -    @spec.depends_on('foo') -    assert_equal 'foo', @spec.deps.first.name +    @spec.depends_on("foo") +    assert_equal "foo", @spec.deps.first.name    end    def test_dependency_option_integration -    @spec.depends_on 'foo' => :optional -    @spec.depends_on 'bar' => :recommended +    @spec.depends_on "foo" => :optional +    @spec.depends_on "bar" => :recommended      assert @spec.option_defined?("with-foo")      assert @spec.option_defined?("without-bar")    end    def test_explicit_options_override_default_dep_option_description -    @spec.option('with-foo', 'blah') -    @spec.depends_on('foo' => :optional) +    @spec.option("with-foo", "blah") +    @spec.depends_on("foo" => :optional)      assert_equal "blah", @spec.options.first.description    end @@ -132,7 +140,7 @@ class HeadSoftwareSpecTests < Homebrew::TestCase    end    def test_version -    assert_version_equal 'HEAD', @spec.version +    assert_version_equal "HEAD", @spec.version    end    def test_verify_download_integrity @@ -147,10 +155,10 @@ class BottleSpecificationTests < Homebrew::TestCase    def test_checksum_setters      checksums = { -      :snow_leopard_32 => 'deadbeef'*5, -      :snow_leopard    => 'faceb00c'*5, -      :lion            => 'baadf00d'*5, -      :mountain_lion   => '8badf00d'*5, +      :snow_leopard_32 => "deadbeef"*5, +      :snow_leopard    => "faceb00c"*5, +      :lion            => "baadf00d"*5, +      :mountain_lion   => "8badf00d"*5      }      checksums.each_pair do |cat, sha1| @@ -158,14 +166,14 @@ class BottleSpecificationTests < Homebrew::TestCase      end      checksums.each_pair do |cat, sha1| -      checksum, _ = @spec.checksum_for(cat) +      checksum, = @spec.checksum_for(cat)        assert_equal Checksum.new(:sha1, sha1), checksum      end    end    def test_other_setters      double = Object.new -    %w{root_url prefix cellar revision}.each do |method| +    %w[root_url prefix cellar revision].each do |method|        @spec.send(method, double)        assert_equal double, @spec.send(method)      end diff --git a/Library/Homebrew/test/test_stdlib.rb b/Library/Homebrew/test/test_stdlib.rb index 9ed69d3b7..eb423f283 100644 --- a/Library/Homebrew/test/test_stdlib.rb +++ b/Library/Homebrew/test/test_stdlib.rb @@ -1,6 +1,6 @@ -require 'testing_env' -require 'formula' -require 'cxxstdlib' +require "testing_env" +require "formula" +require "cxxstdlib"  class CxxStdlibTests < Homebrew::TestCase    def setup @@ -8,8 +8,8 @@ class CxxStdlibTests < Homebrew::TestCase      @gcc   = CxxStdlib.create(:libstdcxx, :gcc)      @llvm  = CxxStdlib.create(:libstdcxx, :llvm)      @gcc4  = CxxStdlib.create(:libstdcxx, :gcc_4_0) -    @gcc48 = CxxStdlib.create(:libstdcxx, 'gcc-4.8') -    @gcc49 = CxxStdlib.create(:libstdcxx, 'gcc-4.9') +    @gcc48 = CxxStdlib.create(:libstdcxx, "gcc-4.8") +    @gcc49 = CxxStdlib.create(:libstdcxx, "gcc-4.9")      @lcxx  = CxxStdlib.create(:libcxx, :clang)      @purec = CxxStdlib.create(nil, :clang)    end diff --git a/Library/Homebrew/test/test_string.rb b/Library/Homebrew/test/test_string.rb index 7de81d56d..1d8c3c246 100644 --- a/Library/Homebrew/test/test_string.rb +++ b/Library/Homebrew/test/test_string.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'extend/string' +require "testing_env" +require "extend/string"  class StringTest < Homebrew::TestCase    def test_undent diff --git a/Library/Homebrew/test/test_tab.rb b/Library/Homebrew/test/test_tab.rb index af537267c..453f8984c 100644 --- a/Library/Homebrew/test/test_tab.rb +++ b/Library/Homebrew/test/test_tab.rb @@ -4,24 +4,22 @@ require "formula"  class TabTests < Homebrew::TestCase    def setup -    @used = Options.create(%w(--with-foo --without-bar)) -    @unused = Options.create(%w(--with-baz --without-qux)) - -    @tab = Tab.new({ -      "used_options"       => @used.as_flags, -      "unused_options"     => @unused.as_flags, -      "built_as_bottle"    => false, -      "poured_from_bottle" => true, -      "time"               => nil, -      "HEAD"               => TEST_SHA1, -      "compiler"           => "clang", -      "stdlib"             => "libcxx", -      "source"             => { -        "tap" => "Homebrew/homebrew", -        "path" => nil, -        "spec" => "stable", -      }, -    }) +    @used = Options.create(%w[--with-foo --without-bar]) +    @unused = Options.create(%w[--with-baz --without-qux]) + +    @tab = Tab.new("used_options"       => @used.as_flags, +                   "unused_options"     => @unused.as_flags, +                   "built_as_bottle"    => false, +                   "poured_from_bottle" => true, +                   "time"               => nil, +                   "HEAD"               => TEST_SHA1, +                   "compiler"           => "clang", +                   "stdlib"             => "libcxx", +                   "source"             => { +                     "tap" => "Homebrew/homebrew", +                     "path" => nil, +                     "spec" => "stable" +                   })    end    def test_defaults diff --git a/Library/Homebrew/test/test_updater.rb b/Library/Homebrew/test/test_updater.rb index 374910cad..9c3c02979 100644 --- a/Library/Homebrew/test/test_updater.rb +++ b/Library/Homebrew/test/test_updater.rb @@ -1,7 +1,7 @@ -require 'testing_env' -require 'cmd/update' +require "testing_env" +require "cmd/update"  require "formula_versions" -require 'yaml' +require "yaml"  class UpdaterTests < Homebrew::TestCase    class UpdaterMock < ::Updater @@ -14,14 +14,14 @@ class UpdaterTests < Homebrew::TestCase        @called = []      end -    def in_repo_expect(cmd, output = '') +    def in_repo_expect(cmd, output = "")        @expected << cmd        @outputs[cmd] << output      end      def `(*args)        cmd = args.join(" ") -      if @expected.include?(cmd) and !@outputs[cmd].empty? +      if @expected.include?(cmd) && !@outputs[cmd].empty?          @called << cmd          @outputs[cmd].shift        else @@ -53,7 +53,7 @@ class UpdaterTests < Homebrew::TestCase      FileUtils.rm_rf HOMEBREW_LIBRARY.join("Taps")    end -  def perform_update(fixture_name="") +  def perform_update(fixture_name = "")      Formulary.stubs(:factory).returns(stub(:pkg_version => "1.0"))      FormulaVersions.stubs(:new).returns(stub(:formula_at_revision => "2.0"))      @updater.diff = fixture(fixture_name) @@ -82,13 +82,13 @@ class UpdaterTests < Homebrew::TestCase    def test_update_homebrew_with_formulae_changes      perform_update("update_git_diff_output_with_formulae_changes") -    assert_equal %w{ xar yajl }, @report.select_formula(:M) -    assert_equal %w{ antiword bash-completion ddrescue dict lua }, @report.select_formula(:A) +    assert_equal %w[xar yajl], @report.select_formula(:M) +    assert_equal %w[antiword bash-completion ddrescue dict lua], @report.select_formula(:A)    end    def test_update_homebrew_with_removed_formulae      perform_update("update_git_diff_output_with_removed_formulae") -    assert_equal %w{libgsasl}, @report.select_formula(:D) +    assert_equal %w[libgsasl], @report.select_formula(:D)    end    def test_update_homebrew_with_changed_filetype @@ -102,7 +102,7 @@ class UpdaterTests < Homebrew::TestCase      perform_update("update_git_diff_output_with_restructured_tap") -    assert_equal %w{foo/bar/git foo/bar/lua}, @report.select_formula(:A) +    assert_equal %w[foo/bar/git foo/bar/lua], @report.select_formula(:A)      assert_empty @report.select_formula(:D)    end @@ -114,7 +114,7 @@ class UpdaterTests < Homebrew::TestCase      perform_update("update_git_diff_simulate_homebrew_php_restructuring")      assert_empty @report.select_formula(:A) -    assert_equal %w{foo/bar/git foo/bar/lua}, @report.select_formula(:D) +    assert_equal %w[foo/bar/git foo/bar/lua], @report.select_formula(:D)    end    def test_update_homebrew_with_tap_formulae_changes @@ -124,8 +124,8 @@ class UpdaterTests < Homebrew::TestCase      perform_update("update_git_diff_output_with_tap_formulae_changes") -    assert_equal %w{foo/bar/lua}, @report.select_formula(:A) -    assert_equal %w{foo/bar/git}, @report.select_formula(:M) +    assert_equal %w[foo/bar/lua], @report.select_formula(:A) +    assert_equal %w[foo/bar/git], @report.select_formula(:M)      assert_empty @report.select_formula(:D)    end  end diff --git a/Library/Homebrew/test/test_utils.rb b/Library/Homebrew/test/test_utils.rb index 120ef6541..07bb65c90 100644 --- a/Library/Homebrew/test/test_utils.rb +++ b/Library/Homebrew/test/test_utils.rb @@ -1,4 +1,4 @@ -require 'testing_env' +require "testing_env"  class UtilTests < Homebrew::TestCase    def test_put_columns_empty diff --git a/Library/Homebrew/test/test_version_subclasses.rb b/Library/Homebrew/test/test_version_subclasses.rb index 75ee2f286..b2f226efa 100644 --- a/Library/Homebrew/test/test_version_subclasses.rb +++ b/Library/Homebrew/test/test_version_subclasses.rb @@ -1,6 +1,6 @@ -require 'testing_env' -require 'version' -require 'os/mac/version' +require "testing_env" +require "version" +require "os/mac/version"  class MacOSVersionTests < Homebrew::TestCase    def setup diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb index 2c8fc6463..b39dbcb3b 100644 --- a/Library/Homebrew/test/test_versions.rb +++ b/Library/Homebrew/test/test_versions.rb @@ -1,10 +1,10 @@ -require 'testing_env' -require 'version' +require "testing_env" +require "version"  class VersionTests < Homebrew::TestCase    def test_accepts_objects_responding_to_to_str -    value = stub(:to_str => '0.1') -    assert_equal '0.1', Version.new(value).to_s +    value = stub(:to_str => "0.1") +    assert_equal "0.1", Version.new(value).to_s    end    def test_raises_for_non_string_objects @@ -16,39 +16,39 @@ end  class VersionComparisonTests < Homebrew::TestCase    def test_version_comparisons -    assert_operator version('0.1'), :==, version('0.1.0') -    assert_operator version('0.1'), :<, version('0.2') -    assert_operator version('1.2.3'), :>, version('1.2.2') -    assert_operator version('1.2.4'), :<, version('1.2.4.1') +    assert_operator version("0.1"), :==, version("0.1.0") +    assert_operator version("0.1"), :<, version("0.2") +    assert_operator version("1.2.3"), :>, version("1.2.2") +    assert_operator version("1.2.4"), :<, version("1.2.4.1")    end    def test_patchlevel -    assert_operator version('1.2.3-p34'), :>, version('1.2.3-p33') -    assert_operator version('1.2.3-p33'), :<, version('1.2.3-p34') -    assert_operator version('1.2.3-p10'), :>, version('1.2.3-p9') +    assert_operator version("1.2.3-p34"), :>, version("1.2.3-p33") +    assert_operator version("1.2.3-p33"), :<, version("1.2.3-p34") +    assert_operator version("1.2.3-p10"), :>, version("1.2.3-p9")    end    def test_HEAD -    assert_operator version('HEAD'), :>, version('1.2.3') -    assert_operator version('1.2.3'), :<, version('HEAD') +    assert_operator version("HEAD"), :>, version("1.2.3") +    assert_operator version("1.2.3"), :<, version("HEAD")    end    def test_alpha_beta_rc -    assert_operator version('3.2.0b4'), :<, version('3.2.0') -    assert_operator version('1.0beta6'), :<, version('1.0b7') -    assert_operator version('1.0b6'), :<, version('1.0beta7') -    assert_operator version('1.1alpha4'), :<, version('1.1beta2') -    assert_operator version('1.1beta2'), :<, version('1.1rc1') -    assert_operator version('1.0.0beta7'), :<, version('1.0.0') -    assert_operator version('3.2.1'), :>, version('3.2beta4') +    assert_operator version("3.2.0b4"), :<, version("3.2.0") +    assert_operator version("1.0beta6"), :<, version("1.0b7") +    assert_operator version("1.0b6"), :<, version("1.0beta7") +    assert_operator version("1.1alpha4"), :<, version("1.1beta2") +    assert_operator version("1.1beta2"), :<, version("1.1rc1") +    assert_operator version("1.0.0beta7"), :<, version("1.0.0") +    assert_operator version("3.2.1"), :>, version("3.2beta4")    end    def test_comparing_unevenly_padded_versions -    assert_operator version('2.1.0-p194'), :<, version('2.1-p195') -    assert_operator version('2.1-p195'), :>, version('2.1.0-p194') -    assert_operator version('2.1-p194'), :<, version('2.1.0-p195') -    assert_operator version('2.1.0-p195'), :>, version('2.1-p194') -    assert_operator version('2-p194'), :<, version('2.1-p195') +    assert_operator version("2.1.0-p194"), :<, version("2.1-p195") +    assert_operator version("2.1-p195"), :>, version("2.1.0-p194") +    assert_operator version("2.1-p194"), :<, version("2.1.0-p195") +    assert_operator version("2.1.0-p195"), :>, version("2.1-p194") +    assert_operator version("2-p194"), :<, version("2.1-p195")    end    def test_comparison_returns_nil_for_non_version @@ -58,19 +58,19 @@ class VersionComparisonTests < Homebrew::TestCase    end    def test_compare_patchlevel_to_non_patchlevel -    assert_operator version('9.9.3-P1'), :>, version('9.9.3') +    assert_operator version("9.9.3-P1"), :>, version("9.9.3")    end    def test_erlang_version -    versions = %w{R16B R15B03-1 R15B03 R15B02 R15B01 R14B04 R14B03 -                  R14B02 R14B01 R14B R13B04 R13B03 R13B02-1}.reverse +    versions = %w[R16B R15B03-1 R15B03 R15B02 R15B01 R14B04 R14B03 +                  R14B02 R14B01 R14B R13B04 R13B03 R13B02-1].reverse      assert_equal versions, versions.sort_by { |v| version(v) }    end    def test_hash_equality -    v1 = version('0.1.0') -    v2 = version('0.1.0') -    v3 = version('0.1.1') +    v1 = version("0.1.0") +    v2 = version("0.1.0") +    v3 = version("0.1.1")      assert_eql v1, v2      refute_eql v1, v3 @@ -83,271 +83,271 @@ end  class VersionParsingTests < Homebrew::TestCase    def test_pathname_version -    d = HOMEBREW_CELLAR/'foo-0.1.9' +    d = HOMEBREW_CELLAR/"foo-0.1.9"      d.mkpath -    assert_equal version('0.1.9'), d.version +    assert_equal version("0.1.9"), d.version    ensure      d.unlink    end    def test_no_version -    assert_version_nil 'http://example.com/blah.tar' -    assert_version_nil 'foo' +    assert_version_nil "http://example.com/blah.tar" +    assert_version_nil "foo"    end    def test_version_all_dots -    assert_version_detected '1.14', 'http://example.com/foo.bar.la.1.14.zip' +    assert_version_detected "1.14", "http://example.com/foo.bar.la.1.14.zip"    end    def test_version_underscore_separator -    assert_version_detected '1.1', 'http://example.com/grc_1.1.tar.gz' +    assert_version_detected "1.1", "http://example.com/grc_1.1.tar.gz"    end    def test_boost_version_style -    assert_version_detected '1.39.0', 'http://example.com/boost_1_39_0.tar.bz2' +    assert_version_detected "1.39.0", "http://example.com/boost_1_39_0.tar.bz2"    end    def test_erlang_version_style -    assert_version_detected 'R13B', 'http://erlang.org/download/otp_src_R13B.tar.gz' +    assert_version_detected "R13B", "http://erlang.org/download/otp_src_R13B.tar.gz"    end    def test_another_erlang_version_style -    assert_version_detected 'R15B01', 'https://github.com/erlang/otp/tarball/OTP_R15B01' +    assert_version_detected "R15B01", "https://github.com/erlang/otp/tarball/OTP_R15B01"    end    def test_yet_another_erlang_version_style -    assert_version_detected 'R15B03-1', 'https://github.com/erlang/otp/tarball/OTP_R15B03-1' +    assert_version_detected "R15B03-1", "https://github.com/erlang/otp/tarball/OTP_R15B03-1"    end    def test_p7zip_version_style -    assert_version_detected '9.04', -      'http://kent.dl.sourceforge.net/sourceforge/p7zip/p7zip_9.04_src_all.tar.bz2' +    assert_version_detected "9.04", +      "http://kent.dl.sourceforge.net/sourceforge/p7zip/p7zip_9.04_src_all.tar.bz2"    end    def test_new_github_style -    assert_version_detected '1.1.4', 'https://github.com/sam-github/libnet/tarball/libnet-1.1.4' +    assert_version_detected "1.1.4", "https://github.com/sam-github/libnet/tarball/libnet-1.1.4"    end    def test_gloox_beta_style -    assert_version_detected '1.0-beta7', 'http://camaya.net/download/gloox-1.0-beta7.tar.bz2' +    assert_version_detected "1.0-beta7", "http://camaya.net/download/gloox-1.0-beta7.tar.bz2"    end    def test_sphinx_beta_style -    assert_version_detected '1.10-beta', 'http://sphinxsearch.com/downloads/sphinx-1.10-beta.tar.gz' +    assert_version_detected "1.10-beta", "http://sphinxsearch.com/downloads/sphinx-1.10-beta.tar.gz"    end    def test_astyle_verson_style -    assert_version_detected '1.23', 'http://kent.dl.sourceforge.net/sourceforge/astyle/astyle_1.23_macosx.tar.gz' +    assert_version_detected "1.23", "http://kent.dl.sourceforge.net/sourceforge/astyle/astyle_1.23_macosx.tar.gz"    end    def test_version_dos2unix -    assert_version_detected '3.1', 'http://www.sfr-fresh.com/linux/misc/dos2unix-3.1.tar.gz' +    assert_version_detected "3.1", "http://www.sfr-fresh.com/linux/misc/dos2unix-3.1.tar.gz"    end    def test_version_internal_dash -    assert_version_detected '1.1-2', 'http://example.com/foo-arse-1.1-2.tar.gz' +    assert_version_detected "1.1-2", "http://example.com/foo-arse-1.1-2.tar.gz"    end    def test_version_single_digit -    assert_version_detected '45', 'http://example.com/foo_bar.45.tar.gz' +    assert_version_detected "45", "http://example.com/foo_bar.45.tar.gz"    end    def test_noseparator_single_digit -    assert_version_detected '45', 'http://example.com/foo_bar45.tar.gz' +    assert_version_detected "45", "http://example.com/foo_bar45.tar.gz"    end    def test_version_developer_that_hates_us_format -    assert_version_detected '1.2.3', 'http://example.com/foo-bar-la.1.2.3.tar.gz' +    assert_version_detected "1.2.3", "http://example.com/foo-bar-la.1.2.3.tar.gz"    end    def test_version_regular -    assert_version_detected '1.21', 'http://example.com/foo_bar-1.21.tar.gz' +    assert_version_detected "1.21", "http://example.com/foo_bar-1.21.tar.gz"    end    def test_version_sourceforge_download -    assert_version_detected '1.21', 'http://sourceforge.net/foo_bar-1.21.tar.gz/download' -    assert_version_detected '1.21', 'http://sf.net/foo_bar-1.21.tar.gz/download' +    assert_version_detected "1.21", "http://sourceforge.net/foo_bar-1.21.tar.gz/download" +    assert_version_detected "1.21", "http://sf.net/foo_bar-1.21.tar.gz/download"    end    def test_version_github -    assert_version_detected '1.0.5', 'http://github.com/lloyd/yajl/tarball/1.0.5' +    assert_version_detected "1.0.5", "http://github.com/lloyd/yajl/tarball/1.0.5"    end    def test_version_github_with_high_patch_number -    assert_version_detected '1.2.34', 'http://github.com/lloyd/yajl/tarball/v1.2.34' +    assert_version_detected "1.2.34", "http://github.com/lloyd/yajl/tarball/v1.2.34"    end    def test_yet_another_version -    assert_version_detected '0.15.1b', 'http://example.com/mad-0.15.1b.tar.gz' +    assert_version_detected "0.15.1b", "http://example.com/mad-0.15.1b.tar.gz"    end    def test_lame_version_style -    assert_version_detected '398-2', 'http://kent.dl.sourceforge.net/sourceforge/lame/lame-398-2.tar.gz' +    assert_version_detected "398-2", "http://kent.dl.sourceforge.net/sourceforge/lame/lame-398-2.tar.gz"    end    def test_ruby_version_style -    assert_version_detected '1.9.1-p243', 'ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz' +    assert_version_detected "1.9.1-p243", "ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz"    end    def test_omega_version_style -    assert_version_detected '0.80.2', 'http://www.alcyone.com/binaries/omega/omega-0.80.2-src.tar.gz' +    assert_version_detected "0.80.2", "http://www.alcyone.com/binaries/omega/omega-0.80.2-src.tar.gz"    end    def test_rc_style -    assert_version_detected '1.2.2rc1', 'http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.2rc1.tar.bz2' +    assert_version_detected "1.2.2rc1", "http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.2rc1.tar.bz2"    end    def test_dash_rc_style -    assert_version_detected '1.8.0-rc1', 'http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz' +    assert_version_detected "1.8.0-rc1", "http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz"    end    def test_angband_version_style -    assert_version_detected '3.0.9b', 'http://rephial.org/downloads/3.0/angband-3.0.9b-src.tar.gz' +    assert_version_detected "3.0.9b", "http://rephial.org/downloads/3.0/angband-3.0.9b-src.tar.gz"    end    def test_stable_suffix -    assert_version_detected '1.4.14b', 'http://www.monkey.org/~provos/libevent-1.4.14b-stable.tar.gz' +    assert_version_detected "1.4.14b", "http://www.monkey.org/~provos/libevent-1.4.14b-stable.tar.gz"    end    def test_debian_style_1 -    assert_version_detected '3.03', 'http://ftp.de.debian.org/debian/pool/main/s/sl/sl_3.03.orig.tar.gz' +    assert_version_detected "3.03", "http://ftp.de.debian.org/debian/pool/main/s/sl/sl_3.03.orig.tar.gz"    end    def test_debian_style_2 -    assert_version_detected '1.01b', 'http://ftp.de.debian.org/debian/pool/main/m/mmv/mmv_1.01b.orig.tar.gz' +    assert_version_detected "1.01b", "http://ftp.de.debian.org/debian/pool/main/m/mmv/mmv_1.01b.orig.tar.gz"    end    def test_bottle_style -    assert_version_detected '4.8.0', 'https://homebrew.bintray.com/bottles/qt-4.8.0.lion.bottle.tar.gz' +    assert_version_detected "4.8.0", "https://homebrew.bintray.com/bottles/qt-4.8.0.lion.bottle.tar.gz"    end    def test_versioned_bottle_style -    assert_version_detected '4.8.1', 'https://homebrew.bintray.com/bottles/qt-4.8.1.lion.bottle.1.tar.gz' +    assert_version_detected "4.8.1", "https://homebrew.bintray.com/bottles/qt-4.8.1.lion.bottle.1.tar.gz"    end    def test_erlang_bottle_style -    assert_version_detected 'R15B', 'https://homebrew.bintray.com/bottles/erlang-R15B.lion.bottle.tar.gz' +    assert_version_detected "R15B", "https://homebrew.bintray.com/bottles/erlang-R15B.lion.bottle.tar.gz"    end    def test_another_erlang_bottle_style -    assert_version_detected 'R15B01', 'https://homebrew.bintray.com/bottles/erlang-R15B01.mountain_lion.bottle.tar.gz' +    assert_version_detected "R15B01", "https://homebrew.bintray.com/bottles/erlang-R15B01.mountain_lion.bottle.tar.gz"    end    def test_yet_another_erlang_bottle_style -    assert_version_detected 'R15B03-1', 'https://homebrew.bintray.com/bottles/erlang-R15B03-1.mountainlion.bottle.tar.gz' +    assert_version_detected "R15B03-1", "https://homebrew.bintray.com/bottles/erlang-R15B03-1.mountainlion.bottle.tar.gz"    end    def test_imagemagick_style -    assert_version_detected '6.7.5-7', 'http://downloads.sf.net/project/machomebrew/mirror/ImageMagick-6.7.5-7.tar.bz2' +    assert_version_detected "6.7.5-7", "http://downloads.sf.net/project/machomebrew/mirror/ImageMagick-6.7.5-7.tar.bz2"    end    def test_imagemagick_bottle_style -    assert_version_detected '6.7.5-7', 'https://homebrew.bintray.com/bottles/imagemagick-6.7.5-7.lion.bottle.tar.gz' +    assert_version_detected "6.7.5-7", "https://homebrew.bintray.com/bottles/imagemagick-6.7.5-7.lion.bottle.tar.gz"    end    def test_imagemagick_versioned_bottle_style -    assert_version_detected '6.7.5-7', 'https://homebrew.bintray.com/bottles/imagemagick-6.7.5-7.lion.bottle.1.tar.gz' +    assert_version_detected "6.7.5-7", "https://homebrew.bintray.com/bottles/imagemagick-6.7.5-7.lion.bottle.1.tar.gz"    end    def test_dash_version_dash_style -    assert_version_detected '3.4', 'http://www.antlr.org/download/antlr-3.4-complete.jar' +    assert_version_detected "3.4", "http://www.antlr.org/download/antlr-3.4-complete.jar"    end    def test_jenkins_version_style -    assert_version_detected '1.486', 'http://mirrors.jenkins-ci.org/war/1.486/jenkins.war' +    assert_version_detected "1.486", "http://mirrors.jenkins-ci.org/war/1.486/jenkins.war"    end    def test_apache_version_style -    assert_version_detected '1.2.0-rc2', 'http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin.tar.gz' +    assert_version_detected "1.2.0-rc2", "http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin.tar.gz"    end    def test_jpeg_style -    assert_version_detected '8d', 'http://www.ijg.org/files/jpegsrc.v8d.tar.gz' +    assert_version_detected "8d", "http://www.ijg.org/files/jpegsrc.v8d.tar.gz"    end    def test_version_ghc_style -    assert_version_detected '7.0.4', 'http://www.haskell.org/ghc/dist/7.0.4/ghc-7.0.4-x86_64-apple-darwin.tar.bz2' -    assert_version_detected '7.0.4', 'http://www.haskell.org/ghc/dist/7.0.4/ghc-7.0.4-i386-apple-darwin.tar.bz2' +    assert_version_detected "7.0.4", "http://www.haskell.org/ghc/dist/7.0.4/ghc-7.0.4-x86_64-apple-darwin.tar.bz2" +    assert_version_detected "7.0.4", "http://www.haskell.org/ghc/dist/7.0.4/ghc-7.0.4-i386-apple-darwin.tar.bz2"    end    def test_pypy_version -    assert_version_detected '1.4.1', 'http://pypy.org/download/pypy-1.4.1-osx.tar.bz2' +    assert_version_detected "1.4.1", "http://pypy.org/download/pypy-1.4.1-osx.tar.bz2"    end    def test_openssl_version -    assert_version_detected '0.9.8s', 'http://www.openssl.org/source/openssl-0.9.8s.tar.gz' +    assert_version_detected "0.9.8s", "http://www.openssl.org/source/openssl-0.9.8s.tar.gz"    end    def test_xaw3d_version -    assert_version_detected '1.5E', 'ftp://ftp.visi.com/users/hawkeyd/X/Xaw3d-1.5E.tar.gz' +    assert_version_detected "1.5E", "ftp://ftp.visi.com/users/hawkeyd/X/Xaw3d-1.5E.tar.gz"    end    def test_assimp_version -    assert_version_detected '2.0.863', 'http://downloads.sourceforge.net/project/assimp/assimp-2.0/assimp--2.0.863-sdk.zip' +    assert_version_detected "2.0.863", "http://downloads.sourceforge.net/project/assimp/assimp-2.0/assimp--2.0.863-sdk.zip"    end    def test_cmucl_version -    assert_version_detected '20c', 'http://common-lisp.net/project/cmucl/downloads/release/20c/cmucl-20c-x86-darwin.tar.bz2' +    assert_version_detected "20c", "http://common-lisp.net/project/cmucl/downloads/release/20c/cmucl-20c-x86-darwin.tar.bz2"    end    def test_fann_version -    assert_version_detected '2.1.0beta', 'http://downloads.sourceforge.net/project/fann/fann/2.1.0beta/fann-2.1.0beta.zip' +    assert_version_detected "2.1.0beta", "http://downloads.sourceforge.net/project/fann/fann/2.1.0beta/fann-2.1.0beta.zip"    end    def test_grads_version -    assert_version_detected '2.0.1', 'ftp://iges.org/grads/2.0/grads-2.0.1-bin-darwin9.8-intel.tar.gz' +    assert_version_detected "2.0.1", "ftp://iges.org/grads/2.0/grads-2.0.1-bin-darwin9.8-intel.tar.gz"    end    def test_haxe_version -    assert_version_detected '2.08', 'http://haxe.org/file/haxe-2.08-osx.tar.gz' +    assert_version_detected "2.08", "http://haxe.org/file/haxe-2.08-osx.tar.gz"    end    def test_imap_version -    assert_version_detected '2007f', 'ftp://ftp.cac.washington.edu/imap/imap-2007f.tar.gz' +    assert_version_detected "2007f", "ftp://ftp.cac.washington.edu/imap/imap-2007f.tar.gz"    end    def test_suite3270_version -    assert_version_detected '3.3.12ga7', 'http://downloads.sourceforge.net/project/x3270/x3270/3.3.12ga7/suite3270-3.3.12ga7-src.tgz' +    assert_version_detected "3.3.12ga7", "http://downloads.sourceforge.net/project/x3270/x3270/3.3.12ga7/suite3270-3.3.12ga7-src.tgz"    end    def test_wwwoffle_version -    assert_version_detected '2.9h', 'http://www.gedanken.demon.co.uk/download-wwwoffle/wwwoffle-2.9h.tgz' +    assert_version_detected "2.9h", "http://www.gedanken.demon.co.uk/download-wwwoffle/wwwoffle-2.9h.tgz"    end    def test_synergy_version -    assert_version_detected '1.3.6p2', 'http://synergy.googlecode.com/files/synergy-1.3.6p2-MacOSX-Universal.zip' +    assert_version_detected "1.3.6p2", "http://synergy.googlecode.com/files/synergy-1.3.6p2-MacOSX-Universal.zip"    end    def test_fontforge_version -    assert_version_detected '20120731', 'http://downloads.sourceforge.net/project/fontforge/fontforge-source/fontforge_full-20120731-b.tar.bz2' +    assert_version_detected "20120731", "http://downloads.sourceforge.net/project/fontforge/fontforge-source/fontforge_full-20120731-b.tar.bz2"    end    def test_ezlupdate_version -    assert_version_detected '2011.10', 'https://github.com/downloads/ezsystems/ezpublish-legacy/ezpublish_community_project-2011.10-with_ezc.tar.bz2' +    assert_version_detected "2011.10", "https://github.com/downloads/ezsystems/ezpublish-legacy/ezpublish_community_project-2011.10-with_ezc.tar.bz2"    end    def test_aespipe_version_style -    assert_version_detected '2.4c', -      'http://loop-aes.sourceforge.net/aespipe/aespipe-v2.4c.tar.bz2' +    assert_version_detected "2.4c", +      "http://loop-aes.sourceforge.net/aespipe/aespipe-v2.4c.tar.bz2"    end    def test_win_style -    assert_version_detected '0.9.17', -      'http://ftpmirror.gnu.org/libmicrohttpd/libmicrohttpd-0.9.17-w32.zip' -    assert_version_detected '1.29', -      'http://ftpmirror.gnu.org/libidn/libidn-1.29-win64.zip' +    assert_version_detected "0.9.17", +      "http://ftpmirror.gnu.org/libmicrohttpd/libmicrohttpd-0.9.17-w32.zip" +    assert_version_detected "1.29", +      "http://ftpmirror.gnu.org/libidn/libidn-1.29-win64.zip"    end    def test_with_arch -    assert_version_detected '4.0.18-1', -      'http://ftpmirror.gnu.org/mtools/mtools-4.0.18-1.i686.rpm' -    assert_version_detected '5.5.7-5', -      'http://ftpmirror.gnu.org/autogen/autogen-5.5.7-5.i386.rpm' -    assert_version_detected '2.8', -      'http://ftpmirror.gnu.org/libtasn1/libtasn1-2.8-x86.zip' -    assert_version_detected '2.8', -      'http://ftpmirror.gnu.org/libtasn1/libtasn1-2.8-x64.zip' -    assert_version_detected '4.0.18', -      'http://ftpmirror.gnu.org/mtools/mtools_4.0.18_i386.deb' +    assert_version_detected "4.0.18-1", +      "http://ftpmirror.gnu.org/mtools/mtools-4.0.18-1.i686.rpm" +    assert_version_detected "5.5.7-5", +      "http://ftpmirror.gnu.org/autogen/autogen-5.5.7-5.i386.rpm" +    assert_version_detected "2.8", +      "http://ftpmirror.gnu.org/libtasn1/libtasn1-2.8-x86.zip" +    assert_version_detected "2.8", +      "http://ftpmirror.gnu.org/libtasn1/libtasn1-2.8-x64.zip" +    assert_version_detected "4.0.18", +      "http://ftpmirror.gnu.org/mtools/mtools_4.0.18_i386.deb"    end  end diff --git a/Library/Homebrew/test/test_x11_requirement.rb b/Library/Homebrew/test/test_x11_requirement.rb index 0f7ffe004..fff43b71f 100644 --- a/Library/Homebrew/test/test_x11_requirement.rb +++ b/Library/Homebrew/test/test_x11_requirement.rb @@ -1,5 +1,5 @@ -require 'testing_env' -require 'requirements/x11_requirement' +require "testing_env" +require "requirements/x11_requirement"  class X11RequirementTests < Homebrew::TestCase    def test_eql_instances_are_eql diff --git a/Library/Homebrew/test/testball.rb b/Library/Homebrew/test/testball.rb index 53ba83221..276296023 100644 --- a/Library/Homebrew/test/testball.rb +++ b/Library/Homebrew/test/testball.rb @@ -1,11 +1,12 @@  class Testball < Formula -  def initialize(name="testball", path=Pathname.new(__FILE__).expand_path, spec=:stable) +  def initialize(name = "testball", path = Pathname.new(__FILE__).expand_path, spec = :stable)      self.class.instance_eval do        stable.url "file://#{File.expand_path("..", __FILE__)}/tarballs/testball-0.1.tbz"        stable.sha256 "1dfb13ce0f6143fe675b525fc9e168adb2215c5d5965c9f57306bb993170914f"      end      super    end +    def install      prefix.install "bin"      prefix.install "libexec" diff --git a/Library/Homebrew/test/testing_env.rb b/Library/Homebrew/test/testing_env.rb index e5913627a..b13dbb81f 100644 --- a/Library/Homebrew/test/testing_env.rb +++ b/Library/Homebrew/test/testing_env.rb @@ -5,8 +5,8 @@ require "simplecov" if ENV["HOMEBREW_TESTS_COVERAGE"]  require "global"  # Test environment setup -%w{ENV Formula}.each { |d| HOMEBREW_LIBRARY.join(d).mkpath } -%w{cache formula_cache cellar logs}.each { |d| HOMEBREW_PREFIX.parent.join(d).mkpath } +%w[ENV Formula].each { |d| HOMEBREW_LIBRARY.join(d).mkpath } +%w[cache formula_cache cellar logs].each { |d| HOMEBREW_PREFIX.parent.join(d).mkpath }  # Test fixtures and files can be found relative to this path  TEST_DIRECTORY = File.dirname(File.expand_path(__FILE__)) @@ -21,19 +21,19 @@ end  module Homebrew    module VersionAssertions -    def version v +    def version(v)        Version.new(v)      end -    def assert_version_equal expected, actual +    def assert_version_equal(expected, actual)        assert_equal Version.new(expected), actual      end -    def assert_version_detected expected, url +    def assert_version_detected(expected, url)        assert_equal expected, Version.parse(url).to_s      end -    def assert_version_nil url +    def assert_version_nil(url)        assert_nil Version.parse(url)      end    end @@ -68,7 +68,7 @@ module Homebrew      TEST_SHA1   = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef".freeze      TEST_SHA256 = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef".freeze -    def formula(name="formula_name", path=Formulary.core_path(name), spec=:stable, &block) +    def formula(name = "formula_name", path = Formulary.core_path(name), spec = :stable, &block)        @_f = Class.new(Formula, &block).new(name, path, spec)      end @@ -88,7 +88,7 @@ module Homebrew        end      end -    def mktmpdir(prefix_suffix=nil, &block) +    def mktmpdir(prefix_suffix = nil, &block)        Dir.mktmpdir(prefix_suffix, HOMEBREW_TEMP, &block)      end @@ -96,12 +96,12 @@ module Homebrew        yield      end -    def assert_eql(exp, act, msg=nil) +    def assert_eql(exp, act, msg = nil)        msg = message(msg, "") { diff exp, act }        assert exp.eql?(act), msg      end -    def refute_eql(exp, act, msg=nil) +    def refute_eql(exp, act, msg = nil)        msg = message(msg) {          "Expected #{mu_pp(act)} to not be eql to #{mu_pp(exp)}"        } diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index 1c3127f49..a6c47b27a 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -1,22 +1,45 @@ -require 'pathname' -require 'exceptions' -require 'os/mac' -require 'utils/json' -require 'utils/inreplace' -require 'utils/popen' -require 'utils/fork' -require 'open-uri' +require "pathname" +require "exceptions" +require "os/mac" +require "utils/json" +require "utils/inreplace" +require "utils/popen" +require "utils/fork" +require "open-uri"  class Tty    class << self -    def blue; bold 34; end -    def white; bold 39; end -    def red; underline 31; end -    def yellow; underline 33; end -    def reset; escape 0; end -    def em; underline 39; end -    def green; bold 32; end -    def gray; bold 30; end +    def blue +      bold 34 +    end + +    def white +      bold 39 +    end + +    def red +      underline 31 +    end + +    def yellow +      underline 33 +    end + +    def reset +      escape 0 +    end + +    def em +      underline 39 +    end + +    def green +      bold 32 +    end + +    def gray +      bold 30 +    end      def width        `/usr/bin/tput cols`.strip.to_i @@ -28,71 +51,74 @@ class Tty      private -    def color n +    def color(n)        escape "0;#{n}"      end -    def bold n + +    def bold(n)        escape "1;#{n}"      end -    def underline n + +    def underline(n)        escape "4;#{n}"      end -    def escape n + +    def escape(n)        "\033[#{n}m" if $stdout.tty?      end    end  end -def ohai title, *sput +def ohai(title, *sput)    title = Tty.truncate(title) if $stdout.tty? && !ARGV.verbose?    puts "#{Tty.blue}==>#{Tty.white} #{title}#{Tty.reset}"    puts sput  end -def oh1 title +def oh1(title)    title = Tty.truncate(title) if $stdout.tty? && !ARGV.verbose?    puts "#{Tty.green}==>#{Tty.white} #{title}#{Tty.reset}"  end -def opoo warning +def opoo(warning)    $stderr.puts "#{Tty.yellow}Warning#{Tty.reset}: #{warning}"  end -def onoe error +def onoe(error)    $stderr.puts "#{Tty.red}Error#{Tty.reset}: #{error}"  end -def ofail error +def ofail(error)    onoe error    Homebrew.failed = true  end -def odie error +def odie(error)    onoe error    exit 1  end -def pretty_duration s +def pretty_duration(s)    return "2 seconds" if s < 3 # avoids the plural problem ;)    return "#{s.to_i} seconds" if s < 120 -  return "%.1f minutes" % (s/60) +  "%.1f minutes" % (s/60)  end -def plural n, s="s" +def plural(n, s = "s")    (n == 1) ? "" : s  end -def interactive_shell f=nil +def interactive_shell(f = nil)    unless f.nil? -    ENV['HOMEBREW_DEBUG_PREFIX'] = f.prefix -    ENV['HOMEBREW_DEBUG_INSTALL'] = f.full_name +    ENV["HOMEBREW_DEBUG_PREFIX"] = f.prefix +    ENV["HOMEBREW_DEBUG_INSTALL"] = f.full_name    end    if ENV["SHELL"].include?("zsh") && ENV["HOME"].start_with?(HOMEBREW_TEMP.resolved_path.to_s)      FileUtils.touch "#{ENV["HOME"]}/.zshrc"    end -  Process.wait fork { exec ENV['SHELL'] } +  Process.wait fork { exec ENV["SHELL"] }    if $?.success?      return @@ -105,11 +131,11 @@ def interactive_shell f=nil  end  module Homebrew -  def self.system cmd, *args -    puts "#{cmd} #{args*' '}" if ARGV.verbose? +  def self.system(cmd, *args) +    puts "#{cmd} #{args*" "}" if ARGV.verbose?      pid = fork do        yield if block_given? -      args.collect!{|arg| arg.to_s} +      args.collect!(&:to_s)        exec(cmd, *args) rescue nil        exit! 1 # never gets here unless exec failed      end @@ -125,7 +151,7 @@ module Homebrew      HOMEBREW_REPOSITORY.cd { `git show -s --format="%cr" HEAD 2>/dev/null`.chuzzle }    end -  def self.install_gem_setup_path! gem, version=nil, executable=gem +  def self.install_gem_setup_path!(gem, version = nil, executable = gem)      require "rubygems"      ENV["PATH"] = "#{Gem.user_dir}/bin:#{ENV["PATH"]}" @@ -147,87 +173,85 @@ module Homebrew  end  def with_system_path -  old_path = ENV['PATH'] -  ENV['PATH'] = '/usr/bin:/bin' +  old_path = ENV["PATH"] +  ENV["PATH"] = "/usr/bin:/bin"    yield  ensure -  ENV['PATH'] = old_path +  ENV["PATH"] = old_path  end -def run_as_not_developer(&block) -  begin -    old = ENV.delete "HOMEBREW_DEVELOPER" -    yield -  ensure -    ENV["HOMEBREW_DEVELOPER"] = old -  end +def run_as_not_developer(&_block) +  old = ENV.delete "HOMEBREW_DEVELOPER" +  yield +ensure +  ENV["HOMEBREW_DEVELOPER"] = old  end  # Kernel.system but with exceptions -def safe_system cmd, *args -  Homebrew.system(cmd, *args) or raise ErrorDuringExecution.new(cmd, args) +def safe_system(cmd, *args) +  Homebrew.system(cmd, *args) || raise(ErrorDuringExecution.new(cmd, args))  end  # prints no output -def quiet_system cmd, *args +def quiet_system(cmd, *args)    Homebrew.system(cmd, *args) do      # Redirect output streams to `/dev/null` instead of closing as some programs      # will fail to execute if they can't write to an open stream. -    $stdout.reopen('/dev/null') -    $stderr.reopen('/dev/null') +    $stdout.reopen("/dev/null") +    $stderr.reopen("/dev/null")    end  end -def curl *args +def curl(*args)    brewed_curl = HOMEBREW_PREFIX/"opt/curl/bin/curl"    curl = if MacOS.version <= "10.6" && brewed_curl.exist?      brewed_curl    else -    Pathname.new '/usr/bin/curl' +    Pathname.new "/usr/bin/curl"    end -  raise "#{curl} is not executable" unless curl.exist? and curl.executable? +  raise "#{curl} is not executable" unless curl.exist? && curl.executable?    flags = HOMEBREW_CURL_ARGS    flags = flags.delete("#") if ARGV.verbose?    args = [flags, HOMEBREW_USER_AGENT, *args] -  args << "--verbose" if ENV['HOMEBREW_CURL_VERBOSE'] +  args << "--verbose" if ENV["HOMEBREW_CURL_VERBOSE"]    args << "--silent" unless $stdout.tty?    safe_system curl, *args  end -def puts_columns items, star_items=[] +def puts_columns(items, star_items = [])    return if items.empty?    if star_items && star_items.any? -    items = items.map{|item| star_items.include?(item) ? "#{item}*" : item} +    items = items.map { |item| star_items.include?(item) ? "#{item}*" : item }    end    if $stdout.tty?      # determine the best width to display for different console sizes      console_width = `/bin/stty size`.chomp.split(" ").last.to_i      console_width = 80 if console_width <= 0 -    longest = items.sort_by { |item| item.length }.last +    longest = items.sort_by(&:length).last      optimal_col_width = (console_width.to_f / (longest.length + 2).to_f).floor      cols = optimal_col_width > 1 ? optimal_col_width : 1 -    IO.popen("/usr/bin/pr -#{cols} -t -w#{console_width}", "w"){|io| io.puts(items) } +    IO.popen("/usr/bin/pr -#{cols} -t -w#{console_width}", "w") { |io| io.puts(items) }    else      puts items    end  end -def which cmd, path=ENV['PATH'] +def which(cmd, path = ENV["PATH"])    path.split(File::PATH_SEPARATOR).each do |p|      pcmd = File.expand_path(cmd, p)      return Pathname.new(pcmd) if File.file?(pcmd) && File.executable?(pcmd)    end -  return nil +  nil  end  def which_editor -  editor = ENV.values_at('HOMEBREW_EDITOR', 'VISUAL', 'EDITOR').compact.first +  editor = ENV.values_at("HOMEBREW_EDITOR", "VISUAL", "EDITOR").compact.first    return editor unless editor.nil?    # Find Textmate @@ -248,31 +272,31 @@ def which_editor    editor  end -def exec_editor *args +def exec_editor(*args)    safe_exec(which_editor, *args)  end -def exec_browser *args -  browser = ENV['HOMEBREW_BROWSER'] || ENV['BROWSER'] || OS::PATH_OPEN +def exec_browser(*args) +  browser = ENV["HOMEBREW_BROWSER"] || ENV["BROWSER"] || OS::PATH_OPEN    safe_exec(browser, *args)  end -def safe_exec cmd, *args +def safe_exec(cmd, *args)    # This buys us proper argument quoting and evaluation    # of environment variables in the cmd parameter.    exec "/bin/sh", "-c", "#{cmd} \"$@\"", "--", *args  end  # GZips the given paths, and returns the gzipped paths -def gzip *paths +def gzip(*paths)    paths.collect do |path| -    with_system_path { safe_system 'gzip', path } +    with_system_path { safe_system "gzip", path }      Pathname.new("#{path}.gz")    end  end  # Returns array of architectures that the given command or library is built for. -def archs_for_command cmd +def archs_for_command(cmd)    cmd = which(cmd) unless Pathname.new(cmd).absolute?    Pathname.new(cmd).archs  end @@ -302,9 +326,9 @@ def nostdout  end  def paths -  @paths ||= ENV['PATH'].split(File::PATH_SEPARATOR).collect do |p| +  @paths ||= ENV["PATH"].split(File::PATH_SEPARATOR).collect do |p|      begin -      File.expand_path(p).chomp('/') +      File.expand_path(p).chomp("/")      rescue ArgumentError        onoe "The following PATH component is invalid: #{p}"      end @@ -321,7 +345,8 @@ def shell_profile    end  end -module GitHub extend self +module GitHub +  extend self    ISSUES_URI = URI.parse("https://api.github.com/search/issues")    Error = Class.new(RuntimeError) @@ -334,7 +359,7 @@ module GitHub extend self          Try again in #{pretty_ratelimit_reset(reset)}, or create an personal access token:            https://github.com/settings/tokens          and then set the token as: HOMEBREW_GITHUB_API_TOKEN -        EOS +                    EOS      end      def pretty_ratelimit_reset(reset) @@ -352,19 +377,19 @@ module GitHub extend self          GitHub #{error}          HOMEBREW_GITHUB_API_TOKEN may be invalid or expired, check:            https://github.com/settings/tokens -        EOS +                    EOS      end    end -  def open(url, &block) +  def open(url, &_block)      # This is a no-op if the user is opting out of using the GitHub API. -    return if ENV['HOMEBREW_NO_GITHUB_API'] +    return if ENV["HOMEBREW_NO_GITHUB_API"]      require "net/https"      headers = {        "User-Agent" => HOMEBREW_USER_AGENT, -      "Accept"     => "application/vnd.github.v3+json", +      "Accept"     => "application/vnd.github.v3+json"      }      headers["Authorization"] = "token #{HOMEBREW_GITHUB_API_TOKEN}" if HOMEBREW_GITHUB_API_TOKEN @@ -397,7 +422,7 @@ module GitHub extend self      end    end -  def issues_matching(query, qualifiers={}) +  def issues_matching(query, qualifiers = {})      uri = ISSUES_URI.dup      uri.query = build_query_string(query, qualifiers)      open(uri) { |json| json["items"] } @@ -416,10 +441,10 @@ module GitHub extend self    def build_search_qualifier_string(qualifiers)      {        :repo => "Homebrew/homebrew", -      :in => "title", -    }.update(qualifiers).map { |qualifier, value| +      :in => "title" +    }.update(qualifiers).map do |qualifier, value|        "#{qualifier}:#{value}" -    }.join("+") +    end.join("+")    end    def uri_escape(query) @@ -431,17 +456,17 @@ module GitHub extend self      end    end -  def issues_for_formula name +  def issues_for_formula(name)      issues_matching(name, :state => "open")    end    def print_pull_requests_matching(query) -    return [] if ENV['HOMEBREW_NO_GITHUB_API'] +    return [] if ENV["HOMEBREW_NO_GITHUB_API"]      ohai "Searching pull requests..."      open_or_closed_prs = issues_matching(query, :type => "pr") -    open_prs = open_or_closed_prs.select {|i| i["state"] == "open" } +    open_prs = open_or_closed_prs.select { |i| i["state"] == "open" }      if open_prs.any?        puts "Open pull requests:"        prs = open_prs diff --git a/Library/Homebrew/utils/fork.rb b/Library/Homebrew/utils/fork.rb index 5c364713b..35a55980e 100644 --- a/Library/Homebrew/utils/fork.rb +++ b/Library/Homebrew/utils/fork.rb @@ -2,7 +2,7 @@ require "fcntl"  require "socket"  module Utils -  def self.safe_fork(&block) +  def self.safe_fork(&_block)      Dir.mktmpdir("homebrew", HOMEBREW_TEMP) do |tmpdir|        UNIXServer.open("#{tmpdir}/socket") do |server|          read, write = IO.pipe @@ -36,7 +36,7 @@ module Utils            data = read.read            read.close            Process.wait(pid) unless socket.nil? -          raise Marshal.load(data) unless data.nil? or data.empty? +          raise Marshal.load(data) unless data.nil? || data.empty?            raise Interrupt if $?.exitstatus == 130            raise "Suspicious failure" unless $?.success?          end diff --git a/Library/Homebrew/utils/inreplace.rb b/Library/Homebrew/utils/inreplace.rb index 02372d214..8ed32bc5b 100644 --- a/Library/Homebrew/utils/inreplace.rb +++ b/Library/Homebrew/utils/inreplace.rb @@ -8,7 +8,7 @@ module Utils    end    module Inreplace -    def inreplace paths, before=nil, after=nil +    def inreplace(paths, before = nil, after = nil)        errors = {}        Array(paths).each do |path| diff --git a/Library/Homebrew/utils/json.rb b/Library/Homebrew/utils/json.rb index 0548a5cb3..8a8cb6847 100644 --- a/Library/Homebrew/utils/json.rb +++ b/Library/Homebrew/utils/json.rb @@ -1,4 +1,4 @@ -require 'vendor/okjson' +require "vendor/okjson"  module Utils    module JSON diff --git a/Library/Homebrew/version.rb b/Library/Homebrew/version.rb index cb1502070..5c9030cd7 100644 --- a/Library/Homebrew/version.rb +++ b/Library/Homebrew/version.rb @@ -24,7 +24,7 @@ class Version    end    class NullToken < Token -    def initialize(value=nil) +    def initialize(value = nil)        super      end @@ -172,7 +172,7 @@ class Version    end    def self.detect(url, specs) -    if specs.has_key?(:tag) +    if specs.key?(:tag)        FromURL.new(specs[:tag][/((?:\d+\.)*\d+)/, 1])      else        FromURL.parse(url) @@ -227,7 +227,7 @@ class Version        end      end -    return 0 +    0    end    alias_method :eql?, :== @@ -267,19 +267,19 @@ class Version      end    end -  def self.parse spec +  def self.parse(spec)      version = _parse(spec)      new(version) unless version.nil?    end -  def self._parse spec +  def self._parse(spec)      spec = Pathname.new(spec) unless spec.is_a? Pathname      spec_s = spec.to_s      stem = if spec.directory?        spec.basename.to_s -    elsif %r[((?:sourceforge.net|sf.net)/.*)/download$].match(spec_s) +    elsif %r{((?:sourceforge.net|sf.net)/.*)/download$}.match(spec_s)        Pathname.new(spec.dirname).stem      else        spec.stem @@ -290,7 +290,7 @@ class Version      # e.g. https://github.com/sam-github/libnet/tarball/libnet-1.1.4      # e.g. https://github.com/isaacs/npm/tarball/v0.2.5-1      # e.g. https://github.com/petdance/ack/tarball/1.93_02 -    m = %r[github.com/.+/(?:zip|tar)ball/(?:v|\w+-)?((?:\d+[-._])+\d*)$].match(spec_s) +    m = %r{github.com/.+/(?:zip|tar)ball/(?:v|\w+-)?((?:\d+[-._])+\d*)$}.match(spec_s)      return m.captures.first unless m.nil?      # e.g. https://github.com/erlang/otp/tarball/OTP_R15B01 (erlang style) @@ -299,7 +299,7 @@ class Version      # e.g. boost_1_39_0      m = /((?:\d+_)+\d+)$/.match(stem) -    return m.captures.first.gsub('_', '.') unless m.nil? +    return m.captures.first.gsub("_", ".") unless m.nil?      # e.g. foobar-4.5.1-1      # e.g. unrtf_0.20.4-1 diff --git a/Library/brew.rb b/Library/brew.rb index 24b72fc9d..f2ea30110 100755 --- a/Library/brew.rb +++ b/Library/brew.rb @@ -2,22 +2,22 @@  std_trap = trap("INT") { exit! 130 } # no backtrace thanks -HOMEBREW_BREW_FILE = ENV['HOMEBREW_BREW_FILE'] +HOMEBREW_BREW_FILE = ENV["HOMEBREW_BREW_FILE"] -if ARGV == %w{--prefix} +if ARGV == %w[--prefix]    puts File.dirname(File.dirname(HOMEBREW_BREW_FILE))    exit 0  end -require 'pathname' +require "pathname"  HOMEBREW_LIBRARY_PATH = Pathname.new(__FILE__).realpath.parent.join("Homebrew")  $:.unshift(HOMEBREW_LIBRARY_PATH.to_s) -require 'global' +require "global" -if ARGV.first == '--version' +if ARGV.first == "--version"    puts HOMEBREW_VERSION    exit 0 -elsif ARGV.first == '-v' +elsif ARGV.first == "-v"    puts "Homebrew #{HOMEBREW_VERSION}"    # Shift the -v to the end of the parameter list    ARGV << ARGV.shift @@ -39,9 +39,9 @@ if OS.mac? && MacOS.version < :mavericks && MacOS.active_developer_dir == "/"    EOS  end -case HOMEBREW_PREFIX.to_s when '/', '/usr' -  # it may work, but I only see pain this route and don't want to support it -  abort "Cowardly refusing to continue at this prefix: #{HOMEBREW_PREFIX}" +case HOMEBREW_PREFIX.to_s when "/", "/usr" +                            # it may work, but I only see pain this route and don't want to support it +                            abort "Cowardly refusing to continue at this prefix: #{HOMEBREW_PREFIX}"  end  if OS.mac? and MacOS.version < "10.6"    abort <<-EOABORT.undent @@ -54,10 +54,10 @@ end  # odd exceptions. Reduce our support burden by showing a user-friendly error.  Dir.getwd rescue abort "The current working directory doesn't exist, cannot proceed." -def require? path +def require?(path)    require path  rescue LoadError => e -  # HACK :( because we should raise on syntax errors but +  # HACK: ( because we should raise on syntax errors but    # not if the file doesn't exist. TODO make robust!    raise unless e.to_s.include? path  end @@ -115,14 +115,14 @@ begin    # arguments themselves.    if empty_argv || (help_flag && (cmd.nil? || internal_cmd)) -    # TODO - `brew help cmd` should display subcommand help -    require 'cmd/help' +    # TODO: - `brew help cmd` should display subcommand help +    require "cmd/help"      puts ARGV.usage      exit ARGV.any? ? 0 : 1    end    if internal_cmd -    Homebrew.send cmd.to_s.gsub('-', '_').downcase +    Homebrew.send cmd.to_s.gsub("-", "_").downcase    elsif which "brew-#{cmd}"      %w[CACHE CELLAR LIBRARY_PATH PREFIX REPOSITORY].each do |e|        ENV["HOMEBREW_#{e}"] = Object.const_get("HOMEBREW_#{e}").to_s  | 
