summaryrefslogtreecommitdiff
path: root/app/services/create_release_service.rb
diff options
context:
space:
mode:
authorRobert Schilling <rschilling@student.tugraz.at>2015-11-21 18:08:45 +0100
committerRobert Schilling <rschilling@student.tugraz.at>2015-11-21 18:08:45 +0100
commitfaef95af1a07bdcfd02eead36d144f332b428f1f (patch)
tree7f34f351e7681036bbafda1980e1d403316ee7d5 /app/services/create_release_service.rb
parent2cba93a0d2d12ee36bf98569e5c6c14ac7ea40e0 (diff)
downloadgitlab-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.rb25
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