Move methods from FileUtils to Formula

These don't need to live on FileUtils and don't really make sense there
either.
This commit is contained in:
Mike McQuaid 2018-07-14 18:13:23 +01:00
parent 5c6ef3d920
commit 256dfc1af9
6 changed files with 70 additions and 73 deletions

View File

@ -1,53 +0,0 @@
require "fileutils"
require "etc"
# Homebrew extends Ruby's `FileUtils` to make our code more readable.
# @see https://ruby-doc.org/stdlib-2.0.0/libdoc/fileutils/rdoc/FileUtils.html Ruby's FileUtils API
module FileUtils
# @private
alias old_mkdir mkdir
# A version of mkdir that also changes to that folder in a block.
def mkdir(name, mode: nil, noop: nil, verbose: nil, &_block)
result = mkdir_p(name, mode: mode, noop: noop, verbose: verbose)
return result unless block_given?
chdir name do
yield
end
end
module_function :mkdir
# Run `scons` using a Homebrew-installed version rather than whatever is in the `PATH`.
def scons(*args)
system Formulary.factory("scons").opt_bin/"scons", *args
end
# Run `make` 3.81 or newer.
# Uses the system make on Leopard and newer, and the
# path to the actually-installed make on Tiger or older.
def make(*args)
if Utils.popen_read("/usr/bin/make", "--version").match(/Make (\d\.\d+)/)[1] > "3.80"
make_path = "/usr/bin/make"
else
make = Formula["make"].opt_bin/"make"
make_path = make.exist? ? make.to_s : (Formula["make"].opt_bin/"gmake").to_s
end
if superenv?
make_name = File.basename(make_path)
with_env(HOMEBREW_MAKE: make_name) do
system "make", *args
end
else
system make_path, *args
end
end
# Run `xcodebuild` without Homebrew's compiler environment variables set.
def xcodebuild(*args)
removed = ENV.remove_cc_etc
system "xcodebuild", *args
ensure
ENV.update(removed)
end
end

View File

@ -1907,6 +1907,56 @@ class Formula
end end
end end
# A version of `FileUtils.mkdir` that also changes to that folder in
# a block.
def mkdir(name)
result = FileUtils.mkdir_p(name)
return result unless block_given?
FileUtils.chdir name do
yield
end
end
# Run `scons` using a Homebrew-installed version rather than whatever is
# in the `PATH`.
def scons(*args)
system Formulary.factory("scons").opt_bin/"scons", *args
end
# Run `make` 3.81 or newer.
# Uses the system make on Leopard and newer, and the
# path to the actually-installed make on Tiger or older.
def make(*args)
if Utils.popen_read("/usr/bin/make", "--version")
.match(/Make (\d\.\d+)/)[1] > "3.80"
make_path = "/usr/bin/make"
else
make = Formula["make"].opt_bin/"make"
make_path = if make.exist?
make.to_s
else
(Formula["make"].opt_bin/"gmake").to_s
end
end
if superenv?
make_name = File.basename(make_path)
with_env(HOMEBREW_MAKE: make_name) do
system "make", *args
end
else
system make_path, *args
end
end
# Run `xcodebuild` without Homebrew's compiler environment variables set.
def xcodebuild(*args)
removed = ENV.remove_cc_etc
system "xcodebuild", *args
ensure
ENV.update(removed)
end
private private
# Returns the prefix for a given formula version number. # Returns the prefix for a given formula version number.

View File

@ -33,7 +33,7 @@ HOMEBREW_BOTTLE_DEFAULT_DOMAIN = ENV["HOMEBREW_BOTTLE_DEFAULT_DOMAIN"] ||
HOMEBREW_BOTTLE_DOMAIN = ENV["HOMEBREW_BOTTLE_DOMAIN"] || HOMEBREW_BOTTLE_DOMAIN = ENV["HOMEBREW_BOTTLE_DOMAIN"] ||
HOMEBREW_BOTTLE_DEFAULT_DOMAIN HOMEBREW_BOTTLE_DEFAULT_DOMAIN
require "extend/fileutils" require "fileutils"
module Homebrew module Homebrew
extend FileUtils extend FileUtils

View File

@ -182,6 +182,14 @@ class Resource
patches << p patches << p
end end
protected
def mktemp(prefix)
Mktemp.new(prefix).run do |staging|
yield staging
end
end
private private
def detect_version(val) def detect_version(val)
@ -196,12 +204,6 @@ class Resource
end end
end end
def mktemp(prefix)
Mktemp.new(prefix).run do |staging|
yield staging
end
end
class Go < Resource class Go < Resource
def stage(target) def stage(target)
super(target/name) super(target/name)

View File

@ -1303,6 +1303,17 @@ describe Formula do
end end
end end
describe "#mkdir" do
let(:dst) { mktmpdir }
it "creates intermediate directories" do
f.mkdir dst/"foo/bar/baz" do
expect(dst/"foo/bar/baz").to exist, "foo/bar/baz was not created"
expect(dst/"foo/bar/baz").to be_a_directory, "foo/bar/baz was not a directory structure"
end
end
end
describe "with changed version scheme" do describe "with changed version scheme" do
let(:f) do let(:f) do
formula "testball" do formula "testball" do

View File

@ -289,16 +289,3 @@ describe Pathname do
end end
end end
end end
describe FileUtils do
let(:dst) { mktmpdir }
describe "#mkdir" do
it "creates intermediate directories" do
described_class.mkdir dst/"foo/bar/baz" do
expect(dst/"foo/bar/baz").to exist, "foo/bar/baz was not created"
expect(dst/"foo/bar/baz").to be_a_directory, "foo/bar/baz was not a directory structure"
end
end
end
end