mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
79 lines
2.0 KiB
Ruby
79 lines
2.0 KiB
Ruby
![]() |
#!/usr/bin/ruby
|
||
|
require 'global'
|
||
|
require 'formula'
|
||
|
require 'keg'
|
||
|
require 'brew.h'
|
||
|
|
||
|
def install f
|
||
|
build_time=nil
|
||
|
|
||
|
begin
|
||
|
f.brew do
|
||
|
if ARGV.flag? '--interactive'
|
||
|
ohai "Entering interactive mode"
|
||
|
puts "Type `exit' to return and finalize the installation"
|
||
|
puts "Install to this prefix: #{f.prefix}"
|
||
|
interactive_shell
|
||
|
nil
|
||
|
elsif ARGV.include? '--help'
|
||
|
system './configure --help'
|
||
|
exit $?
|
||
|
else
|
||
|
f.prefix.mkpath
|
||
|
beginning=Time.now
|
||
|
f.install
|
||
|
%w[README ChangeLog COPYING LICENSE COPYRIGHT AUTHORS].each do |file|
|
||
|
FileUtils.mv "#{file}.txt", file rescue nil
|
||
|
f.prefix.install file rescue nil
|
||
|
end
|
||
|
build_time=Time.now-beginning
|
||
|
end
|
||
|
end
|
||
|
rescue Exception
|
||
|
if f.prefix.directory?
|
||
|
f.prefix.rmtree
|
||
|
f.prefix.parent.rmdir_if_possible
|
||
|
end
|
||
|
raise
|
||
|
end
|
||
|
|
||
|
ohai "Caveats", f.caveats, ''
|
||
|
ohai 'Finishing up' if ARGV.verbose?
|
||
|
|
||
|
begin
|
||
|
clean f
|
||
|
rescue Exception => e
|
||
|
opoo "The cleaning step did not complete successfully"
|
||
|
puts "Still, the installation was successful, so we will link it into your prefix"
|
||
|
ohai e, e.inspect if ARGV.debug?
|
||
|
end
|
||
|
|
||
|
raise "Nothing was installed to #{f.prefix}" unless f.installed?
|
||
|
|
||
|
begin
|
||
|
Keg.new(f.prefix).link
|
||
|
rescue Exception
|
||
|
onoe "The linking step did not complete successfully"
|
||
|
puts "The package built, but is not symlinked into #{HOMEBREW_PREFIX}"
|
||
|
puts "You can try again using `brew link #{f.name}'"
|
||
|
ohai e, e.inspect if ARGV.debug?
|
||
|
ohai "Summary"
|
||
|
else
|
||
|
ohai "Summary" if ARGV.verbose?
|
||
|
end
|
||
|
|
||
|
print "#{f.prefix}: #{f.prefix.abv}"
|
||
|
print ", built in #{pretty_duration build_time}" if build_time
|
||
|
puts
|
||
|
|
||
|
rescue Exception => e
|
||
|
#TODO propogate exception back to brew script
|
||
|
onoe e
|
||
|
puts e.backtrace
|
||
|
end
|
||
|
|
||
|
|
||
|
# I like this little at all, but see no alternative seeing as the formula
|
||
|
# rb file has to be the running script to allow it to use __END__ and DATA
|
||
|
at_exit { install(Formula.factory($0)) }
|