Welcome to mirror list, hosted at ThFree Co, Russian Federation.

delete_tags_service.rb « gitlab « container_repository « projects « services « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 18049648e269d6dec205035cbf22d9b29ae525a5 (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
# frozen_string_literal: true

module Projects
  module ContainerRepository
    module Gitlab
      class DeleteTagsService
        include BaseServiceUtility

        def initialize(container_repository, tag_names)
          @container_repository = container_repository
          @tag_names = tag_names
        end

        # Delete tags by name with a single DELETE request. This is only supported
        # by the GitLab Container Registry fork. See
        # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/23325 for details.
        def execute
          return success(deleted: []) if @tag_names.empty?

          deleted_tags = @tag_names.select do |name|
            @container_repository.delete_tag_by_name(name)
          end

          deleted_tags.any? ? success(deleted: deleted_tags) : error('could not delete tags')
        end
      end
    end
  end
end