29 lines
877 B
Ruby
29 lines
877 B
Ruby
# 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
|