summaryrefslogtreecommitdiff
path: root/app/services/submodules/update_service.rb
blob: a4f24f7a121bff30d5f720d2be8969f33f999102 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# frozen_string_literal: true

module Submodules
  class UpdateService < Commits::CreateService
    include Gitlab::Utils::StrongMemoize

    def initialize(*args)
      super

      @start_branch = @branch_name
      @commit_sha = params[:commit_sha].presence
      @submodule = params[:submodule].presence
      @commit_message = params[:commit_message].presence || "Update submodule #{@submodule} with oid #{@commit_sha}"
    end

    def validate!
      super

      raise ValidationError, _('The repository is empty') if repository.empty?
    end

    def execute
      super
    rescue StandardError => e
      error(e.message)
    end

    def create_commit!
      repository.update_submodule(current_user,
                                  @submodule,
                                  @commit_sha,
                                  message: @commit_message,
                                  branch: @branch_name)
    rescue ArgumentError, TypeError
      raise ValidationError, _('Invalid parameters')
    end
  end
end