/
opt
/
cpanel
/
ea-ruby27
/
root
/
usr
/
share
/
ruby
/
ruby-2.7.8
/
bundler
/
/opt/cpanel/ea-ruby27/root/usr/share/ruby/ruby-2.7.8/bundler
mkdir
upload
Name
Size
Mode
Actions
cli/
-
0755
rm
compact_index_client/
-
0755
rm
fetcher/
-
0755
rm
installer/
-
0755
rm
plugin/
-
0755
rm
resolver/
-
0755
rm
settings/
-
0755
rm
source/
-
0755
rm
templates/
-
0755
rm
ui/
-
0755
rm
vendor/
-
0755
rm
build_metadata.rb
1604
0644
edit
dl
rm
capistrano.rb
883
0644
edit
dl
rm
cli.rb
37300
0644
edit
dl
rm
compact_index_client.rb
3671
0644
edit
dl
rm
constants.rb
212
0644
edit
dl
rm
current_ruby.rb
2173
0644
edit
dl
rm
definition.rb
37605
0644
edit
dl
rm
dependency.rb
4955
0644
edit
dl
rm
deployment.rb
3269
0644
edit
dl
rm
deprecate.rb
876
0644
edit
dl
rm
dep_proxy.rb
827
0644
edit
dl
rm
dsl.rb
20918
0644
edit
dl
rm
endpoint_specification.rb
4002
0644
edit
dl
rm
env.rb
5126
0644
edit
dl
rm
environment_preserver.rb
1310
0644
edit
dl
rm
errors.rb
4700
0644
edit
dl
rm
feature_flag.rb
2507
0644
edit
dl
rm
fetcher.rb
11368
0644
edit
dl
rm
friendly_errors.rb
4466
0644
edit
dl
rm
gemdeps.rb
423
0644
edit
dl
rm
gem_helper.rb
6375
0644
edit
dl
rm
gem_helpers.rb
3269
0644
edit
dl
rm
gem_remote_fetcher.rb
1494
0644
edit
dl
rm
gem_tasks.rb
138
0644
edit
dl
rm
gem_version_promoter.rb
6664
0644
edit
dl
rm
graph.rb
5112
0644
edit
dl
rm
index.rb
5368
0644
edit
dl
rm
injector.rb
8973
0644
edit
dl
rm
inline.rb
2829
0644
edit
dl
rm
installer.rb
11874
0644
edit
dl
rm
lazy_specification.rb
3693
0644
edit
dl
rm
lockfile_generator.rb
2231
0644
edit
dl
rm
lockfile_parser.rb
8469
0644
edit
dl
rm
match_platform.rb
660
0644
edit
dl
rm
mirror.rb
5956
0644
edit
dl
rm
plugin.rb
9852
0644
edit
dl
rm
process_lock.rb
702
0644
edit
dl
rm
psyched_yaml.rb
854
0644
edit
dl
rm
remote_specification.rb
3525
0644
edit
dl
rm
resolver.rb
16422
0644
edit
dl
rm
retry.rb
1650
0644
edit
dl
rm
rubygems_ext.rb
4244
0644
edit
dl
rm
rubygems_gem_installer.rb
3574
0644
edit
dl
rm
rubygems_integration.rb
18476
0644
edit
dl
rm
ruby_dsl.rb
761
0644
edit
dl
rm
ruby_version.rb
4554
0644
edit
dl
rm
runtime.rb
10930
0644
edit
dl
rm
settings.rb
11668
0644
edit
dl
rm
setup.rb
802
0644
edit
dl
rm
shared_helpers.rb
11535
0644
edit
dl
rm
similarity_detector.rb
1882
0644
edit
dl
rm
source.rb
2814
0644
edit
dl
rm
source_list.rb
5649
0644
edit
dl
rm
spec_set.rb
5402
0644
edit
dl
rm
stub_specification.rb
2328
0644
edit
dl
rm
ui.rb
255
0644
edit
dl
rm
uri_credentials_filter.rb
1266
0644
edit
dl
rm
vendored_fileutils.rb
101
0644
edit
dl
rm
vendored_molinillo.rb
101
0644
edit
dl
rm
vendored_persistent.rb
1707
0644
edit
dl
rm
vendored_thor.rb
180
0644
edit
dl
rm
vendored_uri.rb
89
0644
edit
dl
rm
version.rb
179
0644
edit
dl
rm
version_ranges.rb
3888
0644
edit
dl
rm
vlad.rb
468
0644
edit
dl
rm
worker.rb
2651
0644
edit
dl
rm
yaml_serializer.rb
2412
0644
edit
dl
rm
Edit:
/opt/cpanel/ea-ruby27/root/usr/share/ruby/ruby-2.7.8/bundler/gem_version_promoter.rb
(6664B)
# frozen_string_literal: true module Bundler # This class contains all of the logic for determining the next version of a # Gem to update to based on the requested level (patch, minor, major). # Primarily designed to work with Resolver which will provide it the list of # available dependency versions as found in its index, before returning it to # to the resolution engine to select the best version. class GemVersionPromoter DEBUG = ENV["DEBUG_RESOLVER"] attr_reader :level, :locked_specs, :unlock_gems # By default, strict is false, meaning every available version of a gem # is returned from sort_versions. The order gives preference to the # requested level (:patch, :minor, :major) but in complicated requirement # cases some gems will by necessity by promoted past the requested level, # or even reverted to older versions. # # If strict is set to true, the results from sort_versions will be # truncated, eliminating any version outside the current level scope. # This can lead to unexpected outcomes or even VersionConflict exceptions # that report a version of a gem not existing for versions that indeed do # existing in the referenced source. attr_accessor :strict attr_accessor :prerelease_specified # Given a list of locked_specs and a list of gems to unlock creates a # GemVersionPromoter instance. # # @param locked_specs [SpecSet] All current locked specs. Unlike Definition # where this list is empty if all gems are being updated, this should # always be populated for all gems so this class can properly function. # @param unlock_gems [String] List of gem names being unlocked. If empty, # all gems will be considered unlocked. # @return [GemVersionPromoter] def initialize(locked_specs = SpecSet.new([]), unlock_gems = []) @level = :major @strict = false @locked_specs = locked_specs @unlock_gems = unlock_gems @sort_versions = {} @prerelease_specified = {} end # @param value [Symbol] One of three Symbols: :major, :minor or :patch. def level=(value) v = case value when String, Symbol value.to_sym end raise ArgumentError, "Unexpected level #{v}. Must be :major, :minor or :patch" unless [:major, :minor, :patch].include?(v) @level = v end # Given a Dependency and an Array of SpecGroups of available versions for a # gem, this method will return the Array of SpecGroups sorted (and possibly # truncated if strict is true) in an order to give preference to the current # level (:major, :minor or :patch) when resolution is deciding what versions # best resolve all dependencies in the bundle. # @param dep [Dependency] The Dependency of the gem. # @param spec_groups [SpecGroup] An array of SpecGroups for the same gem # named in the @dep param. # @return [SpecGroup] A new instance of the SpecGroup Array sorted and # possibly filtered. def sort_versions(dep, spec_groups) before_result = "before sort_versions: #{debug_format_result(dep, spec_groups).inspect}" if DEBUG @sort_versions[dep] ||= begin gem_name = dep.name # An Array per version returned, different entries for different platforms. # We only need the version here so it's ok to hard code this to the first instance. locked_spec = locked_specs[gem_name].first if strict filter_dep_specs(spec_groups, locked_spec) else sort_dep_specs(spec_groups, locked_spec) end.tap do |specs| if DEBUG warn before_result warn " after sort_versions: #{debug_format_result(dep, specs).inspect}" end end end end # @return [bool] Convenience method for testing value of level variable. def major? level == :major end # @return [bool] Convenience method for testing value of level variable. def minor? level == :minor end private def filter_dep_specs(spec_groups, locked_spec) res = spec_groups.select do |spec_group| if locked_spec && !major? gsv = spec_group.version lsv = locked_spec.version must_match = minor? ? [0] : [0, 1] matches = must_match.map {|idx| gsv.segments[idx] == lsv.segments[idx] } matches.uniq == [true] ? (gsv >= lsv) : false else true end end sort_dep_specs(res, locked_spec) end def sort_dep_specs(spec_groups, locked_spec) return spec_groups unless locked_spec @gem_name = locked_spec.name @locked_version = locked_spec.version result = spec_groups.sort do |a, b| @a_ver = a.version @b_ver = b.version unless @prerelease_specified[@gem_name] a_pre = @a_ver.prerelease? b_pre = @b_ver.prerelease? next -1 if a_pre && !b_pre next 1 if b_pre && !a_pre end if major? @a_ver <=> @b_ver elsif either_version_older_than_locked @a_ver <=> @b_ver elsif segments_do_not_match(:major) @b_ver <=> @a_ver elsif !minor? && segments_do_not_match(:minor) @b_ver <=> @a_ver else @a_ver <=> @b_ver end end post_sort(result) end def either_version_older_than_locked @a_ver < @locked_version || @b_ver < @locked_version end def segments_do_not_match(level) index = [:major, :minor].index(level) @a_ver.segments[index] != @b_ver.segments[index] end def unlocking_gem? unlock_gems.empty? || unlock_gems.include?(@gem_name) end # Specific version moves can't always reliably be done during sorting # as not all elements are compared against each other. def post_sort(result) # default :major behavior in Bundler does not do this return result if major? if unlocking_gem? result else move_version_to_end(result, @locked_version) end end def move_version_to_end(result, version) move, keep = result.partition {|s| s.version.to_s == version.to_s } keep.concat(move) end def debug_format_result(dep, spec_groups) a = [dep.to_s, spec_groups.map {|sg| [sg.version, sg.dependencies_for_activated_platforms.map {|dp| [dp.name, dp.requirement.to_s] }] }] last_map = a.last.map {|sg_data| [sg_data.first.version, sg_data.last.map {|aa| aa.join(" ") }] } [a.first, last_map, level, strict ? :strict : :not_strict] end end end
Save
cmd:
run