diff options
Diffstat (limited to 'Library/Homebrew')
39 files changed, 223 insertions, 126 deletions
diff --git a/Library/Homebrew/brew.rb b/Library/Homebrew/brew.rb index 84f755688..7222f7e87 100644 --- a/Library/Homebrew/brew.rb +++ b/Library/Homebrew/brew.rb @@ -49,20 +49,24 @@ begin    end    path = PATH.new(ENV["PATH"]) +  homebrew_path = PATH.new(ENV["HOMEBREW_PATH"])    # Add contributed commands to PATH before checking. -  path.append(Pathname.glob(Tap::TAP_DIRECTORY/"*/*/cmd")) +  tap_cmds = Pathname.glob(Tap::TAP_DIRECTORY/"*/*/cmd") +  path.append(tap_cmds) +  homebrew_path.append(tap_cmds)    # Add SCM wrappers.    path.append(HOMEBREW_SHIMS_PATH/"scm") +  homebrew_path.append(HOMEBREW_SHIMS_PATH/"scm")    ENV["PATH"] = path    if cmd -    internal_cmd = require? HOMEBREW_LIBRARY_PATH.join("cmd", cmd) +    internal_cmd = require? HOMEBREW_LIBRARY_PATH/"cmd"/cmd      unless internal_cmd -      internal_cmd = require? HOMEBREW_LIBRARY_PATH.join("dev-cmd", cmd) +      internal_cmd = require? HOMEBREW_LIBRARY_PATH/"dev-cmd"/cmd        if internal_cmd && !ARGV.homebrew_developer?          system "git", "config", "--file=#{HOMEBREW_REPOSITORY}/.git/config",                                  "--replace-all", "homebrew.devcmdrun", "true" @@ -89,6 +93,9 @@ begin      system(HOMEBREW_BREW_FILE, "uninstall", "--force", "brew-cask")    end +  # External commands expect a normal PATH +  ENV["PATH"] = homebrew_path unless internal_cmd +    if internal_cmd      Homebrew.send cmd.to_s.tr("-", "_").downcase    elsif which "brew-#{cmd}" diff --git a/Library/Homebrew/cask/lib/hbc/cli/info.rb b/Library/Homebrew/cask/lib/hbc/cli/info.rb index 2b0b49cd3..623c4b737 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/info.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/info.rb @@ -23,7 +23,7 @@ module Hbc          puts "#{cask.token}: #{cask.version}"          puts Formatter.url(cask.homepage) if cask.homepage          installation_info(cask) -        puts "From: #{Formatter.url(repo_info(cask))}" +        repo_info(cask)          name_info(cask)          artifact_info(cask)          Installer.print_caveats(cask) @@ -55,13 +55,18 @@ module Hbc        def self.repo_info(cask)          user, repo, token = QualifiedToken.parse(Hbc.all_tokens.detect { |t| t.split("/").last == cask.token }) + +        return if user.nil? || repo.nil? +          remote_tap = Tap.fetch(user, repo) -        if remote_tap.custom_remote? && !remote_tap.remote.nil? -          return remote_tap.remote.to_s +        url = if remote_tap.custom_remote? && !remote_tap.remote.nil? +          remote_tap.remote +        else +          "#{remote_tap.default_remote}/blob/master/Casks/#{token}.rb"          end -        "#{remote_tap.default_remote}/blob/master/Casks/#{token}.rb" +        puts "From: #{Formatter.url(url)}"        end        def self.artifact_info(cask) diff --git a/Library/Homebrew/cask/lib/hbc/cli/internal_appcast_checkpoint.rb b/Library/Homebrew/cask/lib/hbc/cli/internal_appcast_checkpoint.rb index ceb202bb7..cd2679782 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/internal_appcast_checkpoint.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/internal_appcast_checkpoint.rb @@ -43,7 +43,7 @@ module Hbc              if checkpoint.nil?                onoe "Could not retrieve `appcast` checkpoint for cask '#{cask}': #{result[:command_result].stderr}"              else -              puts((cask_tokens.count > 1) ? "#{checkpoint}  #{cask}": checkpoint) +              puts((cask_tokens.count > 1) ? "#{checkpoint}  #{cask}" : checkpoint)                count += 1              end            end diff --git a/Library/Homebrew/cask/lib/hbc/download_strategy.rb b/Library/Homebrew/cask/lib/hbc/download_strategy.rb index 4bc38e3f6..5b32b4840 100644 --- a/Library/Homebrew/cask/lib/hbc/download_strategy.rb +++ b/Library/Homebrew/cask/lib/hbc/download_strategy.rb @@ -216,7 +216,7 @@ module Hbc      end      def repo_valid? -      @clone.join(".svn").directory? +      (@clone/".svn").directory?      end      def repo_url diff --git a/Library/Homebrew/cask/lib/hbc/dsl/appcast.rb b/Library/Homebrew/cask/lib/hbc/dsl/appcast.rb index e27870622..d302d0946 100644 --- a/Library/Homebrew/cask/lib/hbc/dsl/appcast.rb +++ b/Library/Homebrew/cask/lib/hbc/dsl/appcast.rb @@ -12,7 +12,7 @@ module Hbc        end        def calculate_checkpoint -        result = SystemCommand.run("/usr/bin/curl", args: ["--compressed", "--location", "--user-agent", URL::FAKE_USER_AGENT, @uri], print_stderr: false) +        result = SystemCommand.run("/usr/bin/curl", args: ["--compressed", "--location", "--user-agent", URL::FAKE_USER_AGENT, "--fail", @uri], print_stderr: false)          checkpoint = if result.success?            processed_appcast_text = result.stdout.gsub(%r{<pubDate>[^<]*</pubDate>}m, "") diff --git a/Library/Homebrew/cmd/list.rb b/Library/Homebrew/cmd/list.rb index 790d858aa..f5c4e68ac 100644 --- a/Library/Homebrew/cmd/list.rb +++ b/Library/Homebrew/cmd/list.rb @@ -129,7 +129,7 @@ module Homebrew        names.each do |d|          versions = d.subdirs.map { |pn| pn.basename.to_s }          next if ARGV.include?("--multiple") && versions.length < 2 -        puts "#{d.basename} #{versions*" "}" +        puts "#{d.basename} #{versions * " "}"        end      end    end diff --git a/Library/Homebrew/cmd/search.rb b/Library/Homebrew/cmd/search.rb index f71a14ba1..2b35dfc36 100644 --- a/Library/Homebrew/cmd/search.rb +++ b/Library/Homebrew/cmd/search.rb @@ -107,14 +107,14 @@ module Homebrew        dirname, filename = File.split(match["path"])        next unless valid_dirnames.include?(dirname)        tap = Tap.fetch(match["repository"]["full_name"]) -      next if tap.installed? +      next if tap.installed? && match["repository"]["owner"]["login"] != "caskroom"        "#{tap.name}/#{File.basename(filename, ".rb")}"      end.compact    end    def search_formulae(regex)      aliases = Formula.alias_full_names -    results = (Formula.full_names+aliases).grep(regex).sort +    results = (Formula.full_names + aliases).grep(regex).sort      results.map do |name|        begin diff --git a/Library/Homebrew/cmd/switch.rb b/Library/Homebrew/cmd/switch.rb index 6eed1fd96..a40b4d88e 100644 --- a/Library/Homebrew/cmd/switch.rb +++ b/Library/Homebrew/cmd/switch.rb @@ -25,7 +25,7 @@ module Homebrew      end      # Does the target version exist? -    unless (rack+version).directory? +    unless (rack/version).directory?        onoe "#{name} does not have a version \"#{version}\" in the Cellar."        versions = rack.subdirs.map { |d| Keg.new(d).version } @@ -41,7 +41,7 @@ module Homebrew        keg.unlink      end -    keg = Keg.new(rack+version) +    keg = Keg.new(rack/version)      # Link new version, if not keg-only      if keg_only?(rack) diff --git a/Library/Homebrew/cmd/unpack.rb b/Library/Homebrew/cmd/unpack.rb index 89992e1f0..51c2b59f0 100644 --- a/Library/Homebrew/cmd/unpack.rb +++ b/Library/Homebrew/cmd/unpack.rb @@ -29,7 +29,7 @@ module Homebrew      raise "Cannot write to #{unpack_dir}" unless unpack_dir.writable_real?      formulae.each do |f| -      stage_dir = unpack_dir.join("#{f.name}-#{f.version}") +      stage_dir = unpack_dir/"#{f.name}-#{f.version}"        if stage_dir.exist?          raise "Destination #{stage_dir} already exists!" unless ARGV.force? diff --git a/Library/Homebrew/debrew.rb b/Library/Homebrew/debrew.rb index 668a0b4d2..7ff2c0360 100644 --- a/Library/Homebrew/debrew.rb +++ b/Library/Homebrew/debrew.rb @@ -50,7 +50,7 @@ module Debrew        choice = nil        while choice.nil? -        menu.entries.each_with_index { |e, i| puts "#{i+1}. #{e.name}" } +        menu.entries.each_with_index { |e, i| puts "#{i + 1}. #{e.name}" }          print menu.prompt unless menu.prompt.nil?          input = $stdin.gets || exit @@ -58,7 +58,7 @@ module Debrew          i = input.to_i          if i > 0 -          choice = menu.entries[i-1] +          choice = menu.entries[i - 1]          else            possible = menu.entries.find_all { |e| e.name.start_with?(input) } diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index bf7d2fc79..62ea300e1 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -868,7 +868,7 @@ class FormulaAuditor    def audit_lines      text.without_patch.split("\n").each_with_index do |line, lineno| -      line_problems(line, lineno+1) +      line_problems(line, lineno + 1)      end    end diff --git a/Library/Homebrew/dev-cmd/bottle.rb b/Library/Homebrew/dev-cmd/bottle.rb index e301cc423..d8aefc4c0 100644 --- a/Library/Homebrew/dev-cmd/bottle.rb +++ b/Library/Homebrew/dev-cmd/bottle.rb @@ -248,7 +248,7 @@ module Homebrew            mv "#{relocatable_tar_path}.gz", bottle_path          end -        if bottle_path.size > 1*1024*1024 +        if bottle_path.size > 1 * 1024 * 1024            ohai "Detecting if #{filename} is relocatable..."          end diff --git a/Library/Homebrew/dev-cmd/edit.rb b/Library/Homebrew/dev-cmd/edit.rb index a8612fc63..b3a319088 100644 --- a/Library/Homebrew/dev-cmd/edit.rb +++ b/Library/Homebrew/dev-cmd/edit.rb @@ -24,9 +24,9 @@ module Homebrew        if ["mate", "subl"].include?(editor)          # 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+".gitignore", +        exec_editor HOMEBREW_REPOSITORY/"bin/brew", +                    HOMEBREW_REPOSITORY/"README.md", +                    HOMEBREW_REPOSITORY/".gitignore",                      *library_folders        else          exec_editor HOMEBREW_REPOSITORY diff --git a/Library/Homebrew/development_tools.rb b/Library/Homebrew/development_tools.rb index 8f417b082..996dea87c 100644 --- a/Library/Homebrew/development_tools.rb +++ b/Library/Homebrew/development_tools.rb @@ -50,8 +50,8 @@ class DevelopmentTools      def gcc_4_2_build_version        @gcc_4_2_build_version ||= begin -        gcc = locate("gcc-4.2") || HOMEBREW_PREFIX.join("opt/apple-gcc42/bin/gcc-4.2") -        if gcc.exist? && !gcc.realpath.basename.to_s.start_with?("llvm")&& +        gcc = locate("gcc-4.2") || HOMEBREW_PREFIX/"opt/apple-gcc42/bin/gcc-4.2" +        if gcc.exist? && !gcc.realpath.basename.to_s.start_with?("llvm") &&             build_version = `#{gcc} --version 2>/dev/null`[/build (\d{4,})/, 1]            Version.new build_version          else @@ -96,7 +96,7 @@ class DevelopmentTools      def non_apple_gcc_version(cc)        (@non_apple_gcc_version ||= {}).fetch(cc) do -        path = HOMEBREW_PREFIX.join("opt", "gcc", "bin", cc) +        path = HOMEBREW_PREFIX/"opt/gcc/bin"/cc          path = locate(cc) unless path.exist?          version = if path &&                       build_version = `#{path} --version`[/gcc(?:-\d(?:\.\d)? \(.+\))? (\d\.\d\.\d)/, 1] diff --git a/Library/Homebrew/diagnostic.rb b/Library/Homebrew/diagnostic.rb index 5aa4d788b..2741184cc 100644 --- a/Library/Homebrew/diagnostic.rb +++ b/Library/Homebrew/diagnostic.rb @@ -158,7 +158,7 @@ module Homebrew            "libosxfuse_i32.2.dylib", # OSXFuse            "libosxfuse_i64.2.dylib", # OSXFuse            "libosxfuse.2.dylib", # OSXFuse -          "libTrAPI.dylib", # TrAPI / Endpoint Security VPN +          "libTrAPI.dylib", # TrAPI/Endpoint Security VPN            "libntfs-3g.*.dylib", # NTFS-3G            "libntfs.*.dylib", # NTFS-3G            "libublio.*.dylib", # NTFS-3G @@ -470,7 +470,7 @@ module Homebrew          return if $seen_prefix_sbin          # Don't complain about sbin not being in the path if it doesn't exist -        sbin = (HOMEBREW_PREFIX+"sbin") +        sbin = HOMEBREW_PREFIX/"sbin"          return unless sbin.directory? && !sbin.children.empty?          <<-EOS.undent diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb index d74efe0bb..9ca30bb9c 100644 --- a/Library/Homebrew/download_strategy.rb +++ b/Library/Homebrew/download_strategy.rb @@ -139,7 +139,7 @@ class VCSDownloadStrategy < AbstractDownloadStrategy      super      @ref_type, @ref = extract_ref(meta)      @revision = meta[:revision] -    @clone = HOMEBREW_CACHE.join(cache_filename) +    @clone = HOMEBREW_CACHE/cache_filename    end    def fetch @@ -322,7 +322,7 @@ class CurlDownloadStrategy < AbstractFileDownloadStrategy    def initialize(name, resource)      super      @mirrors = resource.mirrors.dup -    @tarball_path = HOMEBREW_CACHE.join("#{name}-#{version}#{ext}") +    @tarball_path = HOMEBREW_CACHE/"#{name}-#{version}#{ext}"      @temporary_path = Pathname.new("#{cached_location}.incomplete")    end @@ -698,7 +698,7 @@ class SubversionDownloadStrategy < VCSDownloadStrategy    end    def repo_valid? -    cached_location.join(".svn").directory? +    (cached_location/".svn").directory?    end    def clone_repo @@ -711,7 +711,7 @@ class SubversionDownloadStrategy < VCSDownloadStrategy        fetch_repo cached_location, @url, main_revision, true        externals do |external_name, external_url| -        fetch_repo cached_location+external_name, external_url, @ref[external_name], true +        fetch_repo cached_location/external_name, external_url, @ref[external_name], true        end      else        fetch_repo cached_location, @url @@ -773,7 +773,7 @@ class GitDownloadStrategy < VCSDownloadStrategy    end    def shallow_dir? -    git_dir.join("shallow").exist? +    (git_dir/"shallow").exist?    end    def support_depth? @@ -781,7 +781,7 @@ class GitDownloadStrategy < VCSDownloadStrategy    end    def git_dir -    cached_location.join(".git") +    cached_location/".git"    end    def ref? @@ -797,7 +797,7 @@ class GitDownloadStrategy < VCSDownloadStrategy    end    def submodules? -    cached_location.join(".gitmodules").exist? +    (cached_location/".gitmodules").exist?    end    def clone_args @@ -987,7 +987,7 @@ class CVSDownloadStrategy < VCSDownloadStrategy    end    def repo_valid? -    cached_location.join("CVS").directory? +    (cached_location/"CVS").directory?    end    def clone_repo @@ -1004,8 +1004,8 @@ class CVSDownloadStrategy < VCSDownloadStrategy    def split_url(in_url)      parts = in_url.split(/:/) -    mod=parts.pop -    url=parts.join(":") +    mod = parts.pop +    url = parts.join(":")      [mod, url]    end  end @@ -1045,7 +1045,7 @@ class MercurialDownloadStrategy < VCSDownloadStrategy    end    def repo_valid? -    cached_location.join(".hg").directory? +    (cached_location/".hg").directory?    end    def clone_repo @@ -1085,7 +1085,7 @@ class BazaarDownloadStrategy < VCSDownloadStrategy    end    def repo_valid? -    cached_location.join(".bzr").directory? +    (cached_location/".bzr").directory?    end    def clone_repo diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb index 5001c550d..488ef7064 100644 --- a/Library/Homebrew/exceptions.rb +++ b/Library/Homebrew/exceptions.rb @@ -328,7 +328,7 @@ class FormulaConflictError < RuntimeError      message << "Cannot install #{formula.full_name} because conflicting formulae are installed."      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 diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index 8cc2ccbc0..c6cb54f5d 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -138,7 +138,7 @@ module HomebrewArgvExtension    end    def next -    at(@n+1) || raise(UsageError) +    at(@n + 1) || raise(UsageError)    end    def value(name) diff --git a/Library/Homebrew/extend/ENV/std.rb b/Library/Homebrew/extend/ENV/std.rb index 91189f53a..4a871f9bb 100644 --- a/Library/Homebrew/extend/ENV/std.rb +++ b/Library/Homebrew/extend/ENV/std.rb @@ -98,7 +98,7 @@ module Stdenv    # @private    def determine_cxx      dir, base = determine_cc.split -    dir / base.to_s.sub("gcc", "g++").sub("clang", "clang++") +    dir/base.to_s.sub("gcc", "g++").sub("clang", "clang++")    end    def gcc_4_0 diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb index 4853ecf0c..dd273cfbc 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb @@ -7,7 +7,7 @@ module Stdenv        # Mountain Lion's sed is stricter, and errors out when        # it encounters files with mixed character sets        delete("LC_ALL") -      self["LC_CTYPE"]="C" +      self["LC_CTYPE"] = "C"      end      # Add lib and include etc. from the current macosxsdk to compiler flags: diff --git a/Library/Homebrew/extend/os/mac/keg_relocate.rb b/Library/Homebrew/extend/os/mac/keg_relocate.rb index e541df839..707710be6 100644 --- a/Library/Homebrew/extend/os/mac/keg_relocate.rb +++ b/Library/Homebrew/extend/os/mac/keg_relocate.rb @@ -89,7 +89,7 @@ class Keg      # the basename of the file itself.      basename = File.basename(file.dylib_id)      relative_dirname = file.dirname.relative_path_from(path) -    opt_record.join(relative_dirname, basename).to_s +    (opt_record/relative_dirname/basename).to_s    end    # Matches framework references like `XXX.framework/Versions/YYY/XXX` and diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index 93b1c720b..767d83ff9 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -246,7 +246,7 @@ class Pathname      rmdir      true    rescue Errno::ENOTEMPTY -    if (ds_store = self+".DS_Store").exist? && children.length == 1 +    if (ds_store = join(".DS_Store")).exist? && children.length == 1        ds_store.unlink        retry      else @@ -343,7 +343,7 @@ class Pathname    # @private    def resolved_path -    symlink? ? dirname+readlink : self +    symlink? ? dirname.join(readlink) : self    end    # @private @@ -353,7 +353,7 @@ class Pathname      # The link target contains NUL bytes      false    else -    (dirname+link).exist? +    dirname.join(link).exist?    end    # @private @@ -367,7 +367,7 @@ class Pathname        if !other.respond_to?(:to_str) && !other.respond_to?(:to_path)          odeprecated "Pathname#/ with #{other.class}", "a String or a Pathname"        end -      self + other.to_s +      join(other.to_s)      end    end @@ -403,7 +403,7 @@ class Pathname      mkpath      targets.each do |target|        target = Pathname.new(target) # allow pathnames or strings -      (self+target.basename).write <<-EOS.undent +      join(target.basename).write <<-EOS.undent          #!/bin/bash          exec "#{target}" "$@"        EOS @@ -427,7 +427,7 @@ class Pathname      Pathname.glob("#{self}/*") do |file|        next if file.directory?        dst.install(file) -      new_file = dst+file.basename +      new_file = dst.join(file.basename)        file.write_env_script(new_file, env)      end    end @@ -435,7 +435,7 @@ class Pathname    # Writes an exec script that invokes a java jar    def write_jar_script(target_jar, script_name, java_opts = "")      mkpath -    (self+script_name).write <<-EOS.undent +    join(script_name).write <<-EOS.undent        #!/bin/bash        exec java #{java_opts} -jar #{target_jar} "$@"      EOS diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 52702eaca..d9254d23d 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -621,14 +621,14 @@ class Formula    # No `make install` available?    # <pre>bin.install "binary1"</pre>    def bin -    prefix+"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 +    share/"doc"/name    end    # The directory where the formula's headers should be installed. @@ -638,14 +638,14 @@ class Formula    # No `make install` available?    # <pre>include.install "example.h"</pre>    def include -    prefix+"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" +    share/"info"    end    # The directory where the formula's libraries should be installed. @@ -655,7 +655,7 @@ class Formula    # No `make install` available?    # <pre>lib.install "example.dylib"</pre>    def lib -    prefix+"lib" +    prefix/"lib"    end    # The directory where the formula's binaries should be installed. @@ -664,7 +664,7 @@ class Formula    # 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" +    prefix/"libexec"    end    # The root directory where the formula's manual pages should be installed. @@ -673,7 +673,7 @@ class Formula    # Often one of the more specific `man` functions should be used instead    # e.g. {#man1}    def man -    share+"man" +    share/"man"    end    # The directory where the formula's man1 pages should be installed. @@ -683,14 +683,14 @@ class Formula    # No `make install` available?    # <pre>man1.install "example.1"</pre>    def man1 -    man+"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" +    man/"man2"    end    # The directory where the formula's man3 pages should be installed. @@ -700,42 +700,42 @@ class Formula    # No `make install` available?    # <pre>man3.install "man.3"</pre>    def man3 -    man+"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" +    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" +    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" +    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" +    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" +    man/"man8"    end    # The directory where the formula's `sbin` binaries should be installed. @@ -743,7 +743,7 @@ class Formula    # `brew link` for formulae that are not keg-only.    # Generally we try to migrate these to {#bin} instead.    def sbin -    prefix+"sbin" +    prefix/"sbin"    end    # The directory where the formula's shared files should be installed. @@ -762,7 +762,7 @@ class Formula    # Install `./example_code/simple/ones` to share/demos/examples    # <pre>(share/"demos").install "example_code/simple/ones" => "examples"</pre>    def share -    prefix+"share" +    prefix/"share"    end    # The directory where the formula's shared files should be installed, @@ -773,7 +773,7 @@ class Formula    # No `make install` available?    # <pre>pkgshare.install "examples"</pre>    def pkgshare -    prefix+"share"+name +    prefix/"share"/name    end    # The directory where Emacs Lisp files should be installed, with the @@ -782,7 +782,7 @@ class Formula    # Install an Emacs mode included with a software package:    # <pre>elisp.install "contrib/emacs/example-mode.el"</pre>    def elisp -    prefix+"share/emacs/site-lisp"+name +    prefix/"share/emacs/site-lisp"/name    end    # The directory where the formula's Frameworks should be installed. @@ -790,7 +790,7 @@ class Formula    # `brew link` for formulae that are not keg-only.    # This is not symlinked into `HOMEBREW_PREFIX`.    def frameworks -    prefix+"Frameworks" +    prefix/"Frameworks"    end    # The directory where the formula's kernel extensions should be installed. @@ -798,7 +798,7 @@ class Formula    # `brew link` for formulae that are not keg-only.    # This is not symlinked into `HOMEBREW_PREFIX`.    def kext_prefix -    prefix+"Library/Extensions" +    prefix/"Library/Extensions"    end    # The directory where the formula's configuration files should be installed. @@ -807,14 +807,14 @@ class Formula    # This directory is not inside the `HOMEBREW_CELLAR` so it is persisted    # across upgrades.    def etc -    (HOMEBREW_PREFIX+"etc").extend(InstallRenamed) +    (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" +    HOMEBREW_PREFIX/"var"    end    # The directory where the formula's ZSH function files should be @@ -822,7 +822,7 @@ class Formula    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only.    def zsh_function -    share+"zsh/site-functions" +    share/"zsh/site-functions"    end    # The directory where the formula's fish function files should be @@ -830,7 +830,7 @@ class Formula    # This is symlinked into `HOMEBREW_PREFIX` after installation or with    # `brew link` for formulae that are not keg-only.    def fish_function -    share+"fish/vendor_functions.d" +    share/"fish/vendor_functions.d"    end    # The directory where the formula's Bash completion files should be @@ -838,7 +838,7 @@ class Formula    # 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" +    prefix/"etc/bash_completion.d"    end    # The directory where the formula's ZSH completion files should be @@ -846,7 +846,7 @@ class Formula    # 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" +    share/"zsh/site-functions"    end    # The directory where the formula's fish completion files should be @@ -854,7 +854,7 @@ class Formula    # 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" +    share/"fish/vendor_completions.d"    end    # The directory used for as the prefix for {#etc} and {#var} files on @@ -862,13 +862,13 @@ class Formula    # there after pouring a bottle.    # @private    def bottle_prefix -    prefix+".bottle" +    prefix/".bottle"    end    # The directory where the formula's installation or test logs will be written.    # @private    def logs -    HOMEBREW_LOGS+name +    HOMEBREW_LOGS + name    end    # The prefix, if any, to use in filenames for logging current activity @@ -921,12 +921,12 @@ class Formula    # The generated launchd {.plist} service name.    def plist_name -    "homebrew.mxcl."+name +    "homebrew.mxcl." + name    end    # The generated launchd {.plist} file path.    def plist_path -    prefix+(plist_name+".plist") +    prefix + (plist_name + ".plist")    end    # @private @@ -951,39 +951,39 @@ class Formula    end    def opt_bin -    opt_prefix+"bin" +    opt_prefix/"bin"    end    def opt_include -    opt_prefix+"include" +    opt_prefix/"include"    end    def opt_lib -    opt_prefix+"lib" +    opt_prefix/"lib"    end    def opt_libexec -    opt_prefix+"libexec" +    opt_prefix/"libexec"    end    def opt_sbin -    opt_prefix+"sbin" +    opt_prefix/"sbin"    end    def opt_share -    opt_prefix+"share" +    opt_prefix/"share"    end    def opt_pkgshare -    opt_prefix+"share"+name +    opt_prefix/"share"/name    end    def opt_elisp -    opt_prefix+"share/emacs/site-lisp"+name +    opt_prefix/"share/emacs/site-lisp"/name    end    def opt_frameworks -    opt_prefix+"Frameworks" +    opt_prefix/"Frameworks"    end    # Indicates that this formula supports bottles. (Not necessarily that one @@ -1722,7 +1722,7 @@ class Formula    # @private    def test_fixtures(file) -    HOMEBREW_LIBRARY_PATH.join("test", "support", "fixtures", file) +    HOMEBREW_LIBRARY_PATH/"test/support/fixtures"/file    end    # This method is overridden in {Formula} subclasses to provide the installation instructions. @@ -1787,7 +1787,7 @@ 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 diff --git a/Library/Homebrew/formula_cellar_checks.rb b/Library/Homebrew/formula_cellar_checks.rb index 3dbd1b9c4..4718fc1a0 100644 --- a/Library/Homebrew/formula_cellar_checks.rb +++ b/Library/Homebrew/formula_cellar_checks.rb @@ -20,7 +20,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 @@ -31,7 +31,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 diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 424ba34ef..4287fe387 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -197,7 +197,7 @@ class FormulaInstaller      return if pinned_unsatisfied_deps.empty?      raise CannotInstallFormulaError, -      "You must `brew unpin #{pinned_unsatisfied_deps*" "}` as installing #{formula.full_name} requires the latest version of pinned dependencies" +      "You must `brew unpin #{pinned_unsatisfied_deps * " "}` as installing #{formula.full_name} requires the latest version of pinned dependencies"    end    def build_bottle_preinstall diff --git a/Library/Homebrew/formula_pin.rb b/Library/Homebrew/formula_pin.rb index 0558c714c..c31280800 100644 --- a/Library/Homebrew/formula_pin.rb +++ b/Library/Homebrew/formula_pin.rb @@ -11,7 +11,7 @@ class FormulaPin    def pin_at(version)      HOMEBREW_PINNED_KEGS.mkpath -    version_path = @f.rack.join(version) +    version_path = @f.rack/version      path.make_relative_symlink(version_path) unless pinned? || !version_path.exist?    end diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index 21e1ab66f..b52269e30 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -259,7 +259,7 @@ class Keg      dirs = [] -    TOP_LEVEL_DIRECTORIES.map { |d| path.join(d) }.each do |dir| +    TOP_LEVEL_DIRECTORIES.map { |d| path/d }.each do |dir|        next unless dir.exist?        dir.find do |src|          dst = HOMEBREW_PREFIX + src.relative_path_from(path) @@ -301,7 +301,7 @@ class Keg    def completion_installed?(shell)      dir = case shell -    when :bash then path.join("etc", "bash_completion.d") +    when :bash then path/"etc/bash_completion.d"      when :zsh        dir = path/"share/zsh/site-functions"        dir if dir.directory? && dir.children.any? { |f| f.basename.to_s.start_with?("_") } @@ -328,7 +328,7 @@ class Keg    end    def python_site_packages_installed? -    path.join("lib", "python2.7", "site-packages").directory? +    (path/"lib/python2.7/site-packages").directory?    end    def python_pth_files_installed? @@ -568,7 +568,7 @@ class Keg    # symlinks the contents of path+relative_dir recursively into #{HOMEBREW_PREFIX}/relative_dir    def link_dir(relative_dir, mode) -    root = path+relative_dir +    root = path/relative_dir      return unless root.exist?      root.find do |src|        next if src == root diff --git a/Library/Homebrew/keg_relocate.rb b/Library/Homebrew/keg_relocate.rb index be47d0c27..ad4c01021 100644 --- a/Library/Homebrew/keg_relocate.rb +++ b/Library/Homebrew/keg_relocate.rb @@ -108,7 +108,7 @@ class Keg    end    def lib -    path.join("lib") +    path/"lib"    end    def text_files diff --git a/Library/Homebrew/migrator.rb b/Library/Homebrew/migrator.rb index f975962cf..7ecdafe2f 100644 --- a/Library/Homebrew/migrator.rb +++ b/Library/Homebrew/migrator.rb @@ -248,7 +248,7 @@ class Migrator      # Pathname#make_relative_symlink, where Pathname#relative_path_from      # is used to find relative path from source to destination parent and      # it assumes no symlinks. -    src_oldname = old_pin_record.dirname.join(old_pin_link_record).expand_path +    src_oldname = (old_pin_record.dirname/old_pin_link_record).expand_path      new_pin_record.make_relative_symlink(src_oldname.sub(oldname, newname))      old_pin_record.delete    end @@ -363,7 +363,7 @@ class Migrator      backup_old_tabs      if pinned? && !old_pin_record.symlink? -      src_oldname = old_pin_record.dirname.join(old_pin_link_record).expand_path +      src_oldname = (old_pin_record.dirname/old_pin_link_record).expand_path        old_pin_record.make_relative_symlink(src_oldname)        new_pin_record.delete      end diff --git a/Library/Homebrew/os/mac/architecture_list.rb b/Library/Homebrew/os/mac/architecture_list.rb index 595c8f169..6f498c51f 100644 --- a/Library/Homebrew/os/mac/architecture_list.rb +++ b/Library/Homebrew/os/mac/architecture_list.rb @@ -28,12 +28,12 @@ module ArchitectureListExtension    end    def ppc? -    (Hardware::CPU::PPC_32BIT_ARCHS+Hardware::CPU::PPC_64BIT_ARCHS).any? { |a| include? a } +    (Hardware::CPU::PPC_32BIT_ARCHS + Hardware::CPU::PPC_64BIT_ARCHS).any? { |a| include? a }    end    # @private    def remove_ppc! -    (Hardware::CPU::PPC_32BIT_ARCHS+Hardware::CPU::PPC_64BIT_ARCHS).each { |a| delete a } +    (Hardware::CPU::PPC_32BIT_ARCHS + Hardware::CPU::PPC_64BIT_ARCHS).each { |a| delete a }    end    def as_arch_flags diff --git a/Library/Homebrew/requirements/java_requirement.rb b/Library/Homebrew/requirements/java_requirement.rb index 653846edd..ab6dca51d 100644 --- a/Library/Homebrew/requirements/java_requirement.rb +++ b/Library/Homebrew/requirements/java_requirement.rb @@ -46,7 +46,7 @@ class JavaRequirement < Requirement      if exact_version?        @version      else -      @version[0, @version.length-1] +      @version[0, @version.length - 1]      end    end diff --git a/Library/Homebrew/rubocops/components_order_cop.rb b/Library/Homebrew/rubocops/components_order_cop.rb index e13877ca1..a63490395 100644 --- a/Library/Homebrew/rubocops/components_order_cop.rb +++ b/Library/Homebrew/rubocops/components_order_cop.rb @@ -52,9 +52,9 @@ module RuboCop            end            # Check if each present_components is above rest of the present_components -          @present_components.take(@present_components.size-1).each_with_index do |preceding_component, p_idx| +          @present_components.take(@present_components.size - 1).each_with_index do |preceding_component, p_idx|              next if preceding_component.empty? -            @present_components.drop(p_idx+1).each do |succeeding_component| +            @present_components.drop(p_idx + 1).each do |succeeding_component|                next if succeeding_component.empty?                @offensive_nodes = check_precedence(preceding_component, succeeding_component)                component_problem @offensive_nodes[0], @offensive_nodes[1] if @offensive_nodes @@ -88,16 +88,16 @@ module RuboCop            order_idx, curr_p_idx, preceding_comp_arr = get_state(node1)            # curr_p_idx > 0 means node1 needs to be grouped with its own kind -          if curr_p_idx>0 -            node2 = preceding_comp_arr[curr_p_idx-1] +          if curr_p_idx > 0 +            node2 = preceding_comp_arr[curr_p_idx - 1]              indentation = " " * (start_column(node2) - line_start_column(node2))              line_breaks = node2.multiline? ? "\n\n" : "\n" -            corrector.insert_after(node2.source_range, line_breaks+indentation+node1.source) +            corrector.insert_after(node2.source_range, line_breaks + indentation + node1.source)            else              indentation = " " * (start_column(node2) - line_start_column(node2))              # No line breaks upto version_scheme, order_idx == 8 -            line_breaks = (order_idx>8) ? "\n\n" : "\n" -            corrector.insert_before(node2.source_range, node1.source+line_breaks+indentation) +            line_breaks = (order_idx > 8) ? "\n\n" : "\n" +            corrector.insert_before(node2.source_range, node1.source + line_breaks + indentation)            end            corrector.remove(range_with_surrounding_space(node1.source_range, :left))          end diff --git a/Library/Homebrew/rubocops/formula_desc_cop.rb b/Library/Homebrew/rubocops/formula_desc_cop.rb index 81068ac34..54a14b39d 100644 --- a/Library/Homebrew/rubocops/formula_desc_cop.rb +++ b/Library/Homebrew/rubocops/formula_desc_cop.rb @@ -32,13 +32,18 @@ module RuboCop            # Check if command-line is wrongly used in formula's desc            if match = regex_match_group(desc, /(command ?line)/i) -            problem "Description should use \"command-line\" instead of \"#{match}\"" +            c = match.to_s.chars.first +            problem "Description should use \"#{c}ommand-line\" instead of \"#{match}\""            end            if match = regex_match_group(desc, /^(an?)\s/i)              problem "Description shouldn't start with an indefinite article (#{match})"            end +          if regex_match_group(desc, /^[a-z]/) +            problem "Description should start with a capital letter" +          end +            # Check if formula's name is used in formula's desc            problem "Description shouldn't include the formula name" if regex_match_group(desc, /^#{@formula_name}\b/i)          end diff --git a/Library/Homebrew/sandbox.rb b/Library/Homebrew/sandbox.rb index 2c7820d19..e2ff84ac5 100644 --- a/Library/Homebrew/sandbox.rb +++ b/Library/Homebrew/sandbox.rb @@ -176,7 +176,7 @@ class Sandbox      def add_rule(rule)        s = "(" -      s << ((rule[:allow]) ? "allow": "deny") +      s << ((rule[:allow]) ? "allow" : "deny")        s << " #{rule[:operation]}"        s << " (#{rule[:filter]})" if rule[:filter]        s << " (with #{rule[:modifier]})" if rule[:modifier] diff --git a/Library/Homebrew/tab.rb b/Library/Homebrew/tab.rb index db4b1c585..6d0a3d6d1 100644 --- a/Library/Homebrew/tab.rb +++ b/Library/Homebrew/tab.rb @@ -23,7 +23,7 @@ class Tab < OpenStruct        "homebrew_version" => HOMEBREW_VERSION,        "used_options" => build.used_options.as_flags,        "unused_options" => build.unused_options.as_flags, -      "tabfile" => formula.prefix.join(FILENAME), +      "tabfile" => formula.prefix/FILENAME,        "built_as_bottle" => build.bottle?,        "installed_as_dependency" => false,        "installed_on_request" => true, @@ -98,7 +98,7 @@ class Tab < OpenStruct    end    def self.for_keg(keg) -    path = keg.join(FILENAME) +    path = keg/FILENAME      tab = if path.exist?        from_file(path) @@ -145,7 +145,7 @@ class Tab < OpenStruct      paths << f.installed_prefix -    path = paths.map { |pn| pn.join(FILENAME) }.find(&:file?) +    path = paths.map { |pn| pn/FILENAME }.find(&:file?)      if path        tab = from_file(path) diff --git a/Library/Homebrew/test.rb b/Library/Homebrew/test.rb index ffffa1837..d9ec8250e 100644 --- a/Library/Homebrew/test.rb +++ b/Library/Homebrew/test.rb @@ -8,7 +8,7 @@ require "formula_assertions"  require "fcntl"  require "socket" -TEST_TIMEOUT_SECONDS = 5*60 +TEST_TIMEOUT_SECONDS = 5 * 60  begin    error_pipe = UNIXSocket.open(ENV["HOMEBREW_ERROR_PIPE"], &:recv_io) diff --git a/Library/Homebrew/test/cask/dsl/appcast_spec.rb b/Library/Homebrew/test/cask/dsl/appcast_spec.rb new file mode 100644 index 000000000..b8903b1be --- /dev/null +++ b/Library/Homebrew/test/cask/dsl/appcast_spec.rb @@ -0,0 +1,74 @@ +require "cmd/cask" + +describe Hbc::DSL::Appcast do +  subject { described_class.new(url, params) } + +  let(:url) { "http://example.com" } +  let(:uri) { Hbc::UnderscoreSupportingURI.parse(url) } +  let(:params) { {} } + +  describe "#to_s" do +    it "returns the parsed URI string" do +      expect(subject.to_s).to eq("http://example.com") +    end +  end + +  describe "#to_yaml" do +    let(:yaml) { [uri, params].to_yaml } + +    context "with empty parameters" do +      it "returns an YAML serialized array composed of the URI and parameters" do +        expect(subject.to_yaml).to eq(yaml) +      end +    end + +    context "with checkpoint in parameters" do +      let(:params) { { checkpoint: "abc123" } } + +      it "returns an YAML serialized array composed of the URI and parameters" do +        expect(subject.to_yaml).to eq(yaml) +      end +    end +  end + +  describe "#calculate_checkpoint" do +    before do +      expect(Hbc::SystemCommand).to receive(:run).with(*cmd_args).and_return(cmd_result) +      allow(cmd_result).to receive(:success?).and_return(cmd_success) +      allow(cmd_result).to receive(:stdout).and_return(cmd_stdout) +    end + +    context "when server returns a successful HTTP status" do +      let(:cmd_args) { ["/usr/bin/curl", args: ["--compressed", "--location", "--user-agent", Hbc::URL::FAKE_USER_AGENT, "--fail", uri], print_stderr: false] } +      let(:cmd_result) { double("Hbc::SystemCommand::Result") } +      let(:cmd_success) { true } +      let(:cmd_stdout) { "hello world" } + +      it "generates the content digest hash and returns a hash with the command result and the digest hash for the checkpoint" do +        expected_digest = Digest::SHA2.hexdigest(cmd_stdout) +        expected_result = { +          checkpoint: expected_digest, +          command_result: cmd_result, +        } + +        expect(subject.calculate_checkpoint).to eq(expected_result) +      end +    end + +    context "when server returns a non-successful HTTP status" do +      let(:cmd_args) { ["/usr/bin/curl", args: ["--compressed", "--location", "--user-agent", Hbc::URL::FAKE_USER_AGENT, "--fail", uri], print_stderr: false] } +      let(:cmd_result) { double("Hbc::SystemCommand::Result") } +      let(:cmd_success) { false } +      let(:cmd_stdout) { "some error message from the server" } + +      it "returns a hash with the command result and nil for the checkpoint" do +        expected_result = { +          checkpoint: nil, +          command_result: cmd_result, +        } + +        expect(subject.calculate_checkpoint).to eq(expected_result) +      end +    end +  end +end diff --git a/Library/Homebrew/test/rubocops/formula_desc_cop_spec.rb b/Library/Homebrew/test/rubocops/formula_desc_cop_spec.rb index bc92291af..f6436d6a3 100644 --- a/Library/Homebrew/test/rubocops/formula_desc_cop_spec.rb +++ b/Library/Homebrew/test/rubocops/formula_desc_cop_spec.rb @@ -31,7 +31,7 @@ describe RuboCop::Cop::FormulaAuditStrict::Desc do        source = <<-EOS.undent          class Foo < Formula            url 'http://example.com/foo-1.0.tgz' -          desc '#{"bar"*30}' +          desc '#{"bar" * 30}'          end        EOS @@ -55,8 +55,8 @@ describe RuboCop::Cop::FormulaAuditStrict::Desc do        source = <<-EOS.undent          class Foo < Formula            url 'http://example.com/foo-1.0.tgz' -          desc '#{"bar"*10}'\ -            '#{"foo"*21}' +          desc '#{"bar" * 10}'\ +            '#{"foo" * 21}'          end        EOS diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index 4efcb2b4d..cde2ee306 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -175,7 +175,7 @@ module Homebrew    end    def system(cmd, *args) -    puts "#{cmd} #{args*" "}" if ARGV.verbose? +    puts "#{cmd} #{args * " "}" if ARGV.verbose?      _system(cmd, *args)    end @@ -336,6 +336,12 @@ def which_editor      editor = candidate if which(candidate, ENV["HOMEBREW_PATH"])    end +  # Find Textmate +  editor = which("mate", ENV["HOMEBREW_PATH"]) +  # Find BBEdit/TextWrangler +  editor ||= which("edit", ENV["HOMEBREW_PATH"]) +  # Find vim +  editor ||= which("vim", ENV["HOMEBREW_PATH"])    # Default to standard vim    editor ||= "/usr/bin/vim"  | 
