| |
| |
|
|
| require "sorbet-runtime" |
| require "dependabot/pull_request_updater/github" |
| require "dependabot/pull_request_updater/gitlab" |
| require "dependabot/pull_request_updater/azure" |
| require "dependabot/credential" |
|
|
| module Dependabot |
| class PullRequestUpdater |
| extend T::Sig |
|
|
| class BranchProtected < StandardError; end |
|
|
| sig { returns(Dependabot::Source) } |
| attr_reader :source |
|
|
| sig { returns(T::Array[Dependabot::DependencyFile]) } |
| attr_reader :files |
|
|
| sig { returns(String) } |
| attr_reader :base_commit |
|
|
| sig { returns(String) } |
| attr_reader :old_commit |
|
|
| sig { returns(T::Array[Dependabot::Credential]) } |
| attr_reader :credentials |
|
|
| sig { returns(Integer) } |
| attr_reader :pull_request_number |
|
|
| sig { returns(T.nilable(T::Hash[Symbol, String])) } |
| attr_reader :author_details |
|
|
| sig { returns(T.nilable(String)) } |
| attr_reader :signature_key |
|
|
| sig { returns(T::Hash[Symbol, T.untyped]) } |
| attr_reader :provider_metadata |
|
|
| sig do |
| params( |
| source: Dependabot::Source, |
| base_commit: String, |
| old_commit: String, |
| files: T::Array[Dependabot::DependencyFile], |
| credentials: T::Array[Dependabot::Credential], |
| pull_request_number: Integer, |
| author_details: T.nilable(T::Hash[Symbol, String]), |
| signature_key: T.nilable(String), |
| provider_metadata: T::Hash[Symbol, T.untyped] |
| ) |
| .void |
| end |
| def initialize( |
| source:, |
| base_commit:, |
| old_commit:, |
| files:, |
| credentials:, |
| pull_request_number:, |
| author_details: nil, |
| signature_key: nil, |
| provider_metadata: {} |
| ) |
| @source = source |
| @base_commit = base_commit |
| @old_commit = old_commit |
| @files = files |
| @credentials = credentials |
| @pull_request_number = pull_request_number |
| @author_details = author_details |
| @signature_key = signature_key |
| @provider_metadata = provider_metadata |
| end |
|
|
| |
| |
| sig { returns(T.untyped) } |
| def update |
| case source.provider |
| when "github" then github_updater.update |
| when "gitlab" then gitlab_updater.update |
| when "azure" then azure_updater.update |
| else raise "Unsupported provider #{source.provider}" |
| end |
| end |
|
|
| private |
|
|
| sig { returns(Dependabot::PullRequestUpdater::Github) } |
| def github_updater |
| Github.new( |
| source: source, |
| base_commit: base_commit, |
| old_commit: old_commit, |
| files: files, |
| credentials: credentials, |
| pull_request_number: pull_request_number, |
| author_details: author_details, |
| signature_key: signature_key |
| ) |
| end |
|
|
| sig { returns(Dependabot::PullRequestUpdater::Gitlab) } |
| def gitlab_updater |
| Gitlab.new( |
| source: source, |
| base_commit: base_commit, |
| old_commit: old_commit, |
| files: files, |
| credentials: credentials, |
| pull_request_number: pull_request_number, |
| target_project_id: T.cast(provider_metadata[:target_project_id], T.nilable(Integer)) |
| ) |
| end |
|
|
| sig { returns(Dependabot::PullRequestUpdater::Azure) } |
| def azure_updater |
| Azure.new( |
| source: source, |
| base_commit: base_commit, |
| old_commit: old_commit, |
| files: files, |
| credentials: credentials, |
| pull_request_number: pull_request_number, |
| author_details: author_details |
| ) |
| end |
| end |
| end |
|
|