2020-10-10 14:16:11 +02:00
|
|
|
# typed: false
|
2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2021-03-24 09:04:49 +01:00
|
|
|
require "time"
|
|
|
|
|
2016-10-02 04:11:43 +02:00
|
|
|
require "utils/analytics"
|
|
|
|
require "utils/curl"
|
|
|
|
require "utils/fork"
|
2016-08-30 21:38:13 +02:00
|
|
|
require "utils/formatter"
|
2019-02-20 12:28:59 +00:00
|
|
|
require "utils/gems"
|
2016-10-02 04:11:43 +02:00
|
|
|
require "utils/git"
|
2021-01-06 21:25:57 -08:00
|
|
|
require "utils/git_repository"
|
2016-10-02 04:11:43 +02:00
|
|
|
require "utils/github"
|
2023-01-06 22:58:53 -05:00
|
|
|
require "utils/gzip"
|
2015-08-03 13:09:07 +01:00
|
|
|
require "utils/inreplace"
|
2016-09-30 18:22:53 -05:00
|
|
|
require "utils/link"
|
2015-08-03 13:09:07 +01:00
|
|
|
require "utils/popen"
|
2020-07-06 03:32:18 +00:00
|
|
|
require "utils/repology"
|
2016-12-10 14:20:47 +00:00
|
|
|
require "utils/svn"
|
2016-08-26 16:04:47 +02:00
|
|
|
require "utils/tty"
|
2018-08-15 12:13:21 +02:00
|
|
|
require "tap_constants"
|
2023-02-27 08:18:12 +00:00
|
|
|
require "PATH"
|
2023-02-27 11:22:10 -08:00
|
|
|
require "extend/kernel"
|
2009-10-15 14:42:19 +01:00
|
|
|
|
2010-01-13 09:00:51 +00:00
|
|
|
module Homebrew
|
2020-08-02 14:32:31 +02:00
|
|
|
extend Context
|
|
|
|
|
2016-09-26 01:44:51 +02:00
|
|
|
module_function
|
|
|
|
|
2018-05-21 01:43:42 +02:00
|
|
|
def _system(cmd, *args, **options)
|
2014-03-29 02:24:01 -05:00
|
|
|
pid = fork do
|
2010-01-13 09:00:51 +00:00
|
|
|
yield if block_given?
|
2018-09-02 20:14:54 +01:00
|
|
|
args.map!(&:to_s)
|
2016-09-11 17:47:04 +01:00
|
|
|
begin
|
2018-05-21 01:43:42 +02:00
|
|
|
exec(cmd, *args, **options)
|
2016-09-11 17:47:04 +01:00
|
|
|
rescue
|
|
|
|
nil
|
|
|
|
end
|
2010-01-13 09:00:51 +00:00
|
|
|
exit! 1 # never gets here unless exec failed
|
|
|
|
end
|
2020-11-23 18:15:48 +01:00
|
|
|
Process.wait(T.must(pid))
|
2017-06-10 20:12:55 +03:00
|
|
|
$CHILD_STATUS.success?
|
2010-01-13 09:00:51 +00:00
|
|
|
end
|
2014-06-30 19:15:03 -05:00
|
|
|
|
2018-05-21 01:43:42 +02:00
|
|
|
def system(cmd, *args, **options)
|
2020-08-02 14:32:31 +02:00
|
|
|
if verbose?
|
2019-11-06 14:59:27 +00:00
|
|
|
puts "#{cmd} #{args * " "}".gsub(RUBY_PATH, "ruby")
|
|
|
|
.gsub($LOAD_PATH.join(File::PATH_SEPARATOR).to_s, "$LOAD_PATH")
|
|
|
|
end
|
2018-05-21 01:43:42 +02:00
|
|
|
_system(cmd, *args, **options)
|
2015-09-08 16:06:39 +08:00
|
|
|
end
|
|
|
|
|
2017-10-07 00:31:28 +02:00
|
|
|
# rubocop:disable Style/GlobalVars
|
2016-04-18 17:39:21 -04:00
|
|
|
def inject_dump_stats!(the_module, pattern)
|
2017-10-07 00:31:28 +02:00
|
|
|
@injected_dump_stat_modules ||= {}
|
2016-09-26 01:44:51 +02:00
|
|
|
@injected_dump_stat_modules[the_module] ||= []
|
|
|
|
injected_methods = @injected_dump_stat_modules[the_module]
|
2016-04-18 17:39:21 -04:00
|
|
|
the_module.module_eval do
|
|
|
|
instance_methods.grep(pattern).each do |name|
|
|
|
|
next if injected_methods.include? name
|
2018-09-17 02:45:00 +02:00
|
|
|
|
2016-04-18 17:39:21 -04:00
|
|
|
method = instance_method(name)
|
|
|
|
define_method(name) do |*args, &block|
|
2019-10-13 10:03:26 +01:00
|
|
|
time = Time.now
|
2020-11-23 18:15:48 +01:00
|
|
|
|
|
|
|
begin
|
|
|
|
method.bind(self).call(*args, &block)
|
|
|
|
ensure
|
|
|
|
$times[name] ||= 0
|
|
|
|
$times[name] += Time.now - time
|
|
|
|
end
|
2016-04-18 17:39:21 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2016-09-23 22:02:23 +02:00
|
|
|
return unless $times.nil?
|
2018-09-17 02:45:00 +02:00
|
|
|
|
2016-09-23 22:02:23 +02:00
|
|
|
$times = {}
|
|
|
|
at_exit do
|
2019-01-22 14:20:24 +00:00
|
|
|
col_width = [$times.keys.map(&:size).max.to_i + 2, 15].max
|
2016-09-23 22:02:23 +02:00
|
|
|
$times.sort_by { |_k, v| v }.each do |method, time|
|
2019-10-03 08:50:45 +02:00
|
|
|
puts format("%<method>-#{col_width}s %<time>0.4f sec", method: "#{method}:", time: time)
|
2016-04-18 17:39:21 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2017-10-07 00:31:28 +02:00
|
|
|
# rubocop:enable Style/GlobalVars
|
2010-01-13 09:00:51 +00:00
|
|
|
end
|