Class: Dependabot::MetadataFinders::Base::ReleaseFinder

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/metadata_finders/base/release_finder.rb

Constant Summary collapse

ReleaseType =
T.type_alias { T.any(Dependabot::Clients::GithubRelease, GitLabRelease) }

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source:, dependency:, credentials:) ⇒ ReleaseFinder

Returns a new instance of ReleaseFinder.



90
91
92
93
94
# File 'lib/dependabot/metadata_finders/base/release_finder.rb', line 90

def initialize(source:, dependency:, credentials:)
  @source = source
  @dependency = dependency
  @credentials = credentials
end

Instance Attribute Details

#credentialsObject (readonly)

Returns the value of attribute credentials.



77
78
79
# File 'lib/dependabot/metadata_finders/base/release_finder.rb', line 77

def credentials
  @credentials
end

#dependencyObject (readonly)

Returns the value of attribute dependency.



74
75
76
# File 'lib/dependabot/metadata_finders/base/release_finder.rb', line 74

def dependency
  @dependency
end

#sourceObject (readonly)

Returns the value of attribute source.



80
81
82
# File 'lib/dependabot/metadata_finders/base/release_finder.rb', line 80

def source
  @source
end

Instance Method Details

#releases_textObject



116
117
118
119
120
121
# File 'lib/dependabot/metadata_finders/base/release_finder.rb', line 116

def releases_text
  return unless relevant_releases&.any?
  return if relevant_releases&.all? { |r| r.body.nil? || r.body == "" }

  relevant_releases&.map { |r| serialize_release(r) }&.join("\n\n")
end

#releases_urlObject



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/dependabot/metadata_finders/base/release_finder.rb', line 97

def releases_url
  return unless source

  # Azure does not provide tags via API, so we can't check whether
  # there are any releases. So, optimistically return the tags location
  return "#{T.must(source).url}/tags" if T.must(source).provider == "azure"

  # If there are no releases, we won't be linking to the releases page
  return unless all_releases.any?

  case T.must(source).provider
  when "github" then "#{T.must(source).url}/releases"
  when "gitlab" then "#{T.must(source).url}/tags"
  when "bitbucket", "codecommit" then nil
  else raise "Unexpected repo provider '#{T.must(source).provider}'"
  end
end