mirror of
https://github.com/OpenNebula/one.git
synced 2025-01-03 01:17:41 +03:00
93 lines
3.2 KiB
Ruby
Executable File
93 lines
3.2 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
# -------------------------------------------------------------------------- #
|
|
# Copyright 2002-2023, OpenNebula Project, OpenNebula Systems #
|
|
# #
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
|
# not use this file except in compliance with the License. You may obtain #
|
|
# a copy of the License at #
|
|
# #
|
|
# http://www.apache.org/licenses/LICENSE-2.0 #
|
|
# #
|
|
# Unless required by applicable law or agreed to in writing, software #
|
|
# distributed under the License is distributed on an "AS IS" BASIS, #
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
|
|
# See the License for the specific language governing permissions and #
|
|
# limitations under the License. #
|
|
#--------------------------------------------------------------------------- #
|
|
|
|
# Reads all files in **CURRENT DIRECTORY and SUBDIRECTORIES** and looks
|
|
# for the section labels which contain the setup code of the bundled
|
|
# Ruby gems. Replaces the content with the one configured below.
|
|
|
|
# Section begin and end labels
|
|
RG_SETUP_BEGIN = '%%RUBYGEMS_SETUP_BEGIN%%'
|
|
RG_SETUP_END = '%%RUBYGEMS_SETUP_END%%'
|
|
|
|
# Bundled Ruby gems loader code.
|
|
# IMPORTANT: Update here and commit into Git as well!
|
|
# rubocop:disable Layout/HeredocIndentation
|
|
RG_SETUP = <<-EOT
|
|
if File.directory?(GEMS_LOCATION)
|
|
real_gems_path = File.realpath(GEMS_LOCATION)
|
|
if !defined?(Gem) || Gem.path != [real_gems_path]
|
|
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
|
|
|
# Suppress warnings from Rubygems
|
|
# https://github.com/OpenNebula/one/issues/5379
|
|
begin
|
|
verb = $VERBOSE
|
|
$VERBOSE = nil
|
|
require 'rubygems'
|
|
Gem.use_paths(real_gems_path)
|
|
ensure
|
|
$VERBOSE = verb
|
|
end
|
|
end
|
|
end
|
|
EOT
|
|
# rubocop:enable Layout/HeredocIndentation
|
|
|
|
#####
|
|
|
|
SCRIPT_FILE = File.expand_path(__FILE__)
|
|
|
|
updated = []
|
|
|
|
# iterate over all files
|
|
Dir.glob('**/*') do |name|
|
|
next if File.directory?(name) || File.expand_path(name) == SCRIPT_FILE
|
|
|
|
old = File.read(name, :encoding => 'iso-8859-1')
|
|
|
|
# detect right files by checking for the begin section label
|
|
if old.include?(RG_SETUP_BEGIN)
|
|
unless old.include?(RG_SETUP_END)
|
|
STDERR.puts "ERROR: File #{name} doesn't contain RG end label"
|
|
exit 1
|
|
end
|
|
|
|
# replace all text inside labels by RG_SETUP code
|
|
new = old.gsub(
|
|
/(#{RG_SETUP_BEGIN}[^\n]*).*\n([^\n]*#{RG_SETUP_END})/m,
|
|
"\\1\n#{RG_SETUP.chomp}\n\\2"
|
|
)
|
|
|
|
if new != old
|
|
updated << name
|
|
|
|
File.open(name, 'w') do |f|
|
|
f.write(new)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
# report
|
|
if updated.empty?
|
|
STDERR.puts 'WARNING: No files updated'
|
|
else
|
|
STDERR.puts "Updated #{updated.length} files:"
|
|
puts updated.join("\n")
|
|
end
|