debian-mirror-gitlab/app/services/tags/destroy_service.rb

38 lines
881 B
Ruby
Raw Normal View History

2018-11-18 11:00:15 +05:30
# frozen_string_literal: true
2017-08-17 22:00:37 +05:30
module Tags
class DestroyService < BaseService
def execute(tag_name)
repository = project.repository
tag = repository.find_tag(tag_name)
unless tag
return error('No such tag', 404)
end
if repository.rm_tag(current_user, tag_name)
2019-02-15 15:39:39 +05:30
##
# When a tag in a repository is destroyed,
# release assets will be destroyed too.
Releases::DestroyService
.new(project, current_user, tag: tag_name)
.execute
2017-08-17 22:00:37 +05:30
success('Tag was removed')
else
error('Failed to remove tag')
end
2018-11-08 19:23:39 +05:30
rescue Gitlab::Git::PreReceiveError => ex
2017-08-17 22:00:37 +05:30
error(ex.message)
end
def error(message, return_code = 400)
super(message).merge(return_code: return_code)
end
def success(message)
super().merge(message: message)
end
end
end