diff options
author | Robert Schilling <rschilling@student.tugraz.at> | 2015-11-21 18:08:45 +0100 |
---|---|---|
committer | Robert Schilling <rschilling@student.tugraz.at> | 2015-11-21 18:08:45 +0100 |
commit | faef95af1a07bdcfd02eead36d144f332b428f1f (patch) | |
tree | 7f34f351e7681036bbafda1980e1d403316ee7d5 /app/services/create_release_service.rb | |
parent | 2cba93a0d2d12ee36bf98569e5c6c14ac7ea40e0 (diff) | |
download | gitlab-ce-faef95af1a07bdcfd02eead36d144f332b428f1f.tar.gz |
API: Return 404 if the tag for a release does not exist
Diffstat (limited to 'app/services/create_release_service.rb')
-rw-r--r-- | app/services/create_release_service.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/app/services/create_release_service.rb b/app/services/create_release_service.rb new file mode 100644 index 00000000000..355374ce252 --- /dev/null +++ b/app/services/create_release_service.rb @@ -0,0 +1,25 @@ +require_relative 'base_service' + +class CreateReleaseService < BaseService + def execute(tag_name, release_description) + + repository = project.repository + existing_tag = repository.find_tag(tag_name) + + # Only create a release if the tag exists + if existing_tag + release = project.releases.find_or_initialize_by(tag: tag_name) + release.update_attributes(description: release_description) + + success(release) + else + error('Tag does not exist') + end + end + + def success(release) + out = super() + out[:release] = release + out + end +end |