From 1e30ec8e1a73cbfec39f6117f12bf186f92120bf Mon Sep 17 00:00:00 2001 From: Maximilian Downey Twiss Date: Tue, 11 Feb 2025 10:46:51 +1100 Subject: [PATCH] Split out definition of require_gem to standalone file (#11283) --- bin/crew | 23 +++-------------------- lib/buildsystems/ruby.rb | 20 +------------------- lib/downloader.rb | 20 +------------------- lib/fixup.rb | 20 +------------------- lib/misc_functions.rb | 22 +--------------------- lib/package.rb | 20 +------------------- lib/require_gem.rb | 21 +++++++++++++++++++++ tools/build_updated_packages.rb | 20 +------------------- tools/create_default_gems_packages.rb | 19 +------------------ tools/create_gem_packages.rb | 20 +------------------- tools/json.rb | 20 +------------------- tools/update_python_pip_packages.rb | 20 +------------------- tools/update_ruby_gem_packages.rb | 20 +------------------- 13 files changed, 35 insertions(+), 230 deletions(-) create mode 100644 lib/require_gem.rb diff --git a/bin/crew b/bin/crew index d36b4040d..5ce849ffa 100755 --- a/bin/crew +++ b/bin/crew @@ -1,26 +1,9 @@ #!/usr/bin/env ruby +# We require color here to get access to .lightred. require_relative '../lib/color' -# Disallow sudo +# Disallow sudo. abort 'Chromebrew should not be run as root.'.lightred if Process.uid.zero? -def require_gem(gem_name_and_require = nil, require_override = nil) - # Allow only loading gems when needed. - return if gem_name_and_require.nil? - - gem_name = gem_name_and_require.split('/')[0] - begin - gem gem_name - rescue LoadError - puts " -> install #{gem_name} gem".orange - Gem.install(gem_name) - gem gem_name - end - requires = if require_override.nil? - gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require - else - require_override - end - require requires -end +require_relative '../lib/require_gem' require_gem('activesupport', 'active_support/core_ext/object/blank') require_gem('highline') # The json gem can break when upgrading from a much older version of ruby. diff --git a/lib/buildsystems/ruby.rb b/lib/buildsystems/ruby.rb index 390f06c3b..594cfe38f 100644 --- a/lib/buildsystems/ruby.rb +++ b/lib/buildsystems/ruby.rb @@ -2,26 +2,8 @@ require 'color' require 'gem_compact_index_client' require 'package' require 'package_utils' +require 'require_gem' -def require_gem(gem_name_and_require = nil, require_override = nil) - # Allow only loading gems when needed. - return if gem_name_and_require.nil? - - gem_name = gem_name_and_require.split('/')[0] - begin - gem gem_name - rescue LoadError - puts " -> install #{gem_name} gem".orange - Gem.install(gem_name) - gem gem_name - end - requires = if require_override.nil? - gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require - else - require_override - end - require requires -end require_gem('activesupport', 'active_support/core_ext/object/blank') def check_gem_binary_build_needed(gem_name = nil, gem_version = nil) diff --git a/lib/downloader.rb b/lib/downloader.rb index dcab1041b..6cbfb22ab 100644 --- a/lib/downloader.rb +++ b/lib/downloader.rb @@ -4,26 +4,8 @@ require 'uri' require_relative 'const' require_relative 'color' require_relative 'progress_bar' +require_relative 'require_gem' -def require_gem(gem_name_and_require = nil, require_override = nil) - # Allow only loading gems when needed. - return if gem_name_and_require.nil? - - gem_name = gem_name_and_require.split('/')[0] - begin - gem gem_name - rescue LoadError - puts " -> install #{gem_name} gem".orange - Gem.install(gem_name) - gem gem_name - end - requires = if require_override.nil? - gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require - else - require_override - end - require requires -end require_gem('activesupport', 'active_support/core_ext/object/blank') require_gem('ptools') diff --git a/lib/fixup.rb b/lib/fixup.rb index 654830b37..bc800607f 100644 --- a/lib/fixup.rb +++ b/lib/fixup.rb @@ -4,26 +4,8 @@ require 'etc' require 'json' require_relative 'color' require_relative 'package' +require_relative 'require_gem' -def require_gem(gem_name_and_require = nil, require_override = nil) - # Allow only loading gems when needed. - return if gem_name_and_require.nil? - - gem_name = gem_name_and_require.split('/')[0] - begin - gem gem_name - rescue LoadError - puts " -> install #{gem_name} gem".orange - Gem.install(gem_name) - gem gem_name - end - requires = if require_override.nil? - gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require - else - require_override - end - require requires -end require_gem('highline') # All needed constants & variables should be defined here in case they diff --git a/lib/misc_functions.rb b/lib/misc_functions.rb index a567356b5..4ff76f08a 100644 --- a/lib/misc_functions.rb +++ b/lib/misc_functions.rb @@ -1,28 +1,8 @@ # lib/misc_functions.rb # Generic implementations of various functions/algorithms that are not crew-specific. +require 'matrix' require_relative 'color' -def require_gem(gem_name_and_require = nil, require_override = nil) - # Allow only loading gems when needed. - return if gem_name_and_require.nil? - - gem_name = gem_name_and_require.split('/')[0] - begin - gem gem_name - rescue LoadError - puts " -> install #{gem_name} gem".orange - Gem.install(gem_name) - gem gem_name - end - requires = if require_override.nil? - gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require - else - require_override - end - require requires -end -require_gem('matrix') - class MiscFunctions def self.human_size(bytes) kilobyte = 1024.0 diff --git a/lib/package.rb b/lib/package.rb index a204f969c..160dfc968 100644 --- a/lib/package.rb +++ b/lib/package.rb @@ -3,27 +3,9 @@ require 'json' require_relative 'const' require_relative 'color' require_relative 'package_helpers' +require_relative 'require_gem' require_relative 'selector' -def require_gem(gem_name_and_require = nil, require_override = nil) - # Allow only loading gems when needed. - return if gem_name_and_require.nil? - - gem_name = gem_name_and_require.split('/')[0] - begin - gem gem_name - rescue LoadError - puts " -> install #{gem_name} gem".orange - Gem.install(gem_name) - gem gem_name - end - requires = if require_override.nil? - gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require - else - require_override - end - require requires -end require_gem 'highline' require_gem 'timeout' diff --git a/lib/require_gem.rb b/lib/require_gem.rb new file mode 100644 index 000000000..a86f1b57a --- /dev/null +++ b/lib/require_gem.rb @@ -0,0 +1,21 @@ +require_relative 'color' + +def require_gem(gem_name_and_require = nil, require_override = nil) + # Allow only loading gems when needed. + return if gem_name_and_require.nil? + + gem_name = gem_name_and_require.split('/')[0] + begin + gem gem_name + rescue LoadError + puts " -> install #{gem_name} gem".orange + Gem.install(gem_name) + gem gem_name + end + requires = if require_override.nil? + gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require + else + require_override + end + require requires +end diff --git a/tools/build_updated_packages.rb b/tools/build_updated_packages.rb index 00164843b..6c7bb63f5 100755 --- a/tools/build_updated_packages.rb +++ b/tools/build_updated_packages.rb @@ -17,6 +17,7 @@ require 'English' require_relative '../lib/color' require_relative '../lib/const' require_relative '../lib/package' +require_relative '../lib/require_gem' $LOAD_PATH.unshift File.expand_path('../lib', __dir__) abort "\nGITLAB_TOKEN environment variable not set.\n".lightred if ENV['GITLAB_TOKEN'].nil? @@ -26,25 +27,6 @@ puts "Setting the CREW_AGREE_TIMEOUT_SECONDS environment variable to less than t SKIP_UPDATE_CHECKS = ARGV.include?('--skip') CHECK_ALL_PYTHON = ARGV.include?('--check-all-python') CHECK_ALL_RUBY = ARGV.include?('--check-all-ruby') -def require_gem(gem_name_and_require = nil, require_override = nil) - # Allow only loading gems when needed. - return if gem_name_and_require.nil? - - gem_name = gem_name_and_require.split('/')[0] - begin - gem gem_name - rescue LoadError - puts " -> install #{gem_name} gem".orange - Gem.install(gem_name) - gem gem_name - end - requires = if require_override.nil? - gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require - else - require_override - end - require requires -end require_gem 'highline' require_gem 'timeout' diff --git a/tools/create_default_gems_packages.rb b/tools/create_default_gems_packages.rb index 463ec9f72..89e2318c4 100755 --- a/tools/create_default_gems_packages.rb +++ b/tools/create_default_gems_packages.rb @@ -14,25 +14,8 @@ require 'fileutils' require 'json' require_relative '../lib/color' require_relative '../lib/const' -def require_gem(gem_name_and_require = nil, require_override = nil) - # Allow only loading gems when needed. - return if gem_name_and_require.nil? +require_relative '../lib/require_gem' - gem_name = gem_name_and_require.split('/')[0] - begin - gem gem_name - rescue LoadError - puts " -> install #{gem_name} gem".orange - Gem.install(gem_name) - gem gem_name - end - requires = if require_override.nil? - gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require - else - require_override - end - require requires -end require_gem('httpparty') def create_default_gems_package diff --git a/tools/create_gem_packages.rb b/tools/create_gem_packages.rb index f0963f77d..72e9fc6d9 100755 --- a/tools/create_gem_packages.rb +++ b/tools/create_gem_packages.rb @@ -13,26 +13,8 @@ require 'fileutils' require 'json' require_relative '../lib/color' require_relative '../lib/const' +require_relative '../lib/require_gem' -def require_gem(gem_name_and_require = nil, require_override = nil) - # Allow only loading gems when needed. - return if gem_name_and_require.nil? - - gem_name = gem_name_and_require.split('/')[0] - begin - gem gem_name - rescue LoadError - puts " -> install #{gem_name} gem".orange - Gem.install(gem_name) - gem gem_name - end - requires = if require_override.nil? - gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require - else - require_override - end - require requires -end require_gem('httpparty') def check_gem_binary_build_needed(gem_name = nil, gem_version = nil) diff --git a/tools/json.rb b/tools/json.rb index c65a64dd0..90f139b0e 100644 --- a/tools/json.rb +++ b/tools/json.rb @@ -6,26 +6,8 @@ $LOAD_PATH.unshift '../lib' require_relative '../lib/const' require_relative '../lib/package' require_relative '../lib/package_utils' +require_relative '../lib/require_gem' -def require_gem(gem_name_and_require = nil, require_override = nil) - # Allow only loading gems when needed. - return if gem_name_and_require.nil? - - gem_name = gem_name_and_require.split('/')[0] - begin - gem gem_name - rescue LoadError - puts " -> install #{gem_name} gem".orange - Gem.install(gem_name) - gem gem_name - end - requires = if require_override.nil? - gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require - else - require_override - end - require requires -end require_gem('activesupport', 'active_support/core_ext/object/blank') require_gem('ptools') diff --git a/tools/update_python_pip_packages.rb b/tools/update_python_pip_packages.rb index ede8e7e11..eb74816d4 100755 --- a/tools/update_python_pip_packages.rb +++ b/tools/update_python_pip_packages.rb @@ -9,29 +9,11 @@ # Add >LOCAL< lib to LOAD_PATH $LOAD_PATH.unshift '../lib' require_relative '../lib/color' +require_relative '../lib/require_gem' CREW_GITLAB_PKG_REPO = 'https://gitlab.com/api/v4/projects/26210301/packages' CREW_NPROC = `nproc`.chomp -def require_gem(gem_name_and_require = nil, require_override = nil) - # Allow only loading gems when needed. - return if gem_name_and_require.nil? - - gem_name = gem_name_and_require.split('/')[0] - begin - gem gem_name - rescue LoadError - puts " -> install #{gem_name} gem".orange - Gem.install(gem_name) - gem gem_name - end - requires = if require_override.nil? - gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require - else - require_override - end - require requires -end require_gem('activesupport', 'active_support/core_ext/object/blank') require_gem 'concurrent-ruby' diff --git a/tools/update_ruby_gem_packages.rb b/tools/update_ruby_gem_packages.rb index bb4640c0b..9784962ba 100755 --- a/tools/update_ruby_gem_packages.rb +++ b/tools/update_ruby_gem_packages.rb @@ -8,29 +8,11 @@ $LOAD_PATH.unshift '../lib' require_relative '../lib/color' require_relative '../lib/gem_compact_index_client' +require_relative '../lib/require_gem' CREW_NPROC = `nproc`.chomp CREW_RUBY_VER = "ruby#{RUBY_VERSION.slice(/(?:.*(?=\.))/)}" CREW_VERBOSE = false -def require_gem(gem_name_and_require = nil, require_override = nil) - # Allow only loading gems when needed. - return if gem_name_and_require.nil? - - gem_name = gem_name_and_require.split('/')[0] - begin - gem gem_name - rescue LoadError - puts " -> install #{gem_name} gem".orange - Gem.install(gem_name) - gem gem_name - end - requires = if require_override.nil? - gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require - else - require_override - end - require requires -end require_gem('activesupport', 'active_support/core_ext/object/blank') require_gem 'concurrent-ruby'