Files
chromebrew/lib/require_gem.rb
Satadru Pramanik, DO, MPH, MEng e062f0d984 Add require const to require_gem. (#14430)
* Add require const to require_gem.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Move gem setup to separate step in workflows.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Use Package Deltas as PR title.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Change version of Generate PR workflow.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

---------

Signed-off-by: Satadru Pramanik <satadru@gmail.com>
2026-01-31 19:57:59 +00:00

33 lines
1.4 KiB
Ruby

require_relative 'color'
require_relative 'const'
def require_gem(ruby_gem_name_and_require = nil, require_override = nil)
# Allow only loading gems when needed.
return if ruby_gem_name_and_require.nil?
ruby_gem_name = ruby_gem_name_and_require.split('/')[0]
begin
gem ruby_gem_name
rescue NoMethodError, Gem::MissingSpecError
# Handle possible error immediately after a gem uninstall.
# e.g.,
# Gem::Specification#activate_dependencies': Could not find 'rubocop' (>= 0) among 150 total gem(s) (Gem::MissingSpecError)
require 'rubygems/gem_runner'
Gem::GemRunner.new.run %w[check doctor #{ruby_gem_name}]
Gem::GemRunner.new.run ['sources', '-u']
puts " -> install #{ruby_gem_name} gem".orange CREW_OUTPUT_JSON if CREW_VERBOSE && !CREW_OUTPUT_JSON
system "gem install #{ruby_gem_name} -N #{'--silent -q' unless CREW_VERBOSE && !CREW_OUTPUT_JSON}"
gem ruby_gem_name
rescue LoadError
puts " -> install #{ruby_gem_name} gem".orange if CREW_VERBOSE && !CREW_OUTPUT_JSON
system "gem install #{ruby_gem_name} -N #{'--silent -q' unless CREW_VERBOSE && !CREW_OUTPUT_JSON}"
gem ruby_gem_name
end
requires = if require_override.nil?
ruby_gem_name_and_require.split('/')[1].nil? ? ruby_gem_name_and_require.split('/')[0] : ruby_gem_name_and_require
else
require_override
end
require requires
end