Class: Dependabot::UpdateCheckers::Ruby::Bundler

Inherits:
Base
  • Object
show all
Defined in:
lib/dependabot/update_checkers/ruby/bundler.rb,
lib/dependabot/update_checkers/ruby/bundler/file_preparer.rb,
lib/dependabot/update_checkers/ruby/bundler/force_updater.rb,
lib/dependabot/update_checkers/ruby/bundler/version_resolver.rb,
lib/dependabot/update_checkers/ruby/bundler/requirements_updater.rb,
lib/dependabot/update_checkers/ruby/bundler/latest_version_finder.rb,
lib/dependabot/update_checkers/ruby/bundler/shared_bundler_helpers.rb,
lib/dependabot/update_checkers/ruby/bundler/ruby_requirement_setter.rb

Defined Under Namespace

Modules: SharedBundlerHelpers Classes: FilePreparer, ForceUpdater, LatestVersionFinder, RequirementsUpdater, RubyRequirementSetter, VersionResolver

Instance Attribute Summary

Attributes inherited from Base

#credentials, #dependency, #dependency_files, #ignored_versions

Instance Method Summary collapse

Methods inherited from Base

#can_update?, #initialize, #requirement_class, #up_to_date?, #updated_dependencies, #version_class

Constructor Details

This class inherits a constructor from Dependabot::UpdateCheckers::Base

Instance Method Details

#latest_resolvable_versionObject



23
24
25
26
27
# File 'lib/dependabot/update_checkers/ruby/bundler.rb', line 23

def latest_resolvable_version
  return latest_resolvable_version_for_git_dependency if git_dependency?

  latest_resolvable_version_details&.fetch(:version)
end

#latest_resolvable_version_with_no_unlockObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/dependabot/update_checkers/ruby/bundler.rb', line 29

def latest_resolvable_version_with_no_unlock
  current_ver = dependency.version
  return current_ver if git_dependency? && git_commit_checker.pinned?

  @latest_resolvable_version_detail_with_no_unlock ||=
    version_resolver(
      remove_git_source: false,
      unlock_requirement: false
    ).latest_resolvable_version_details

  if git_dependency?
    @latest_resolvable_version_detail_with_no_unlock&.fetch(:commit_sha)
  else
    @latest_resolvable_version_detail_with_no_unlock&.fetch(:version)
  end
end

#latest_versionObject



17
18
19
20
21
# File 'lib/dependabot/update_checkers/ruby/bundler.rb', line 17

def latest_version
  return latest_version_for_git_dependency if git_dependency?

  latest_version_details&.fetch(:version)
end

#requirements_unlocked_or_can_be?Boolean

Returns:

  • (Boolean)


57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/dependabot/update_checkers/ruby/bundler.rb', line 57

def requirements_unlocked_or_can_be?
  dependency.requirements.
    reject { |r| r[:requirement].nil? }.
    all? do |req|
      requirement = requirement_class.new(req[:requirement])
      next true if requirement.satisfied_by?(Gem::Version.new("100000"))

      file = dependency_files.find { |f| f.name == req.fetch(:file) }
      updated = FileUpdaters::Ruby::Bundler::RequirementReplacer.new(
        dependency: dependency,
        file_type: file.name.end_with?("gemspec") ? :gemspec : :gemfile,
        updated_requirement: "whatever"
      ).rewrite(file.content)

      updated != file.content
    end
end

#requirements_update_strategyObject



75
76
77
78
79
80
81
82
83
# File 'lib/dependabot/update_checkers/ruby/bundler.rb', line 75

def requirements_update_strategy
  # If passed in as an option (in the base class) honour that option
  if @requirements_update_strategy
    return @requirements_update_strategy.to_sym
  end

  # Otherwise, widen ranges for libraries and bump versions for apps
  dependency.version.nil? ? :bump_versions_if_necessary : :bump_versions
end

#updated_requirementsObject



46
47
48
49
50
51
52
53
54
55
# File 'lib/dependabot/update_checkers/ruby/bundler.rb', line 46

def updated_requirements
  RequirementsUpdater.new(
    requirements: dependency.requirements,
    update_strategy: requirements_update_strategy,
    updated_source: updated_source,
    latest_version: latest_version_details&.fetch(:version)&.to_s,
    latest_resolvable_version:
      latest_resolvable_version_details&.fetch(:version)&.to_s
  ).updated_requirements
end