diff options
Diffstat (limited to 'lib/gitlab/ci/badge/release/latest_release.rb')
-rw-r--r-- | lib/gitlab/ci/badge/release/latest_release.rb | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/gitlab/ci/badge/release/latest_release.rb b/lib/gitlab/ci/badge/release/latest_release.rb new file mode 100644 index 00000000000..e73bb2a912a --- /dev/null +++ b/lib/gitlab/ci/badge/release/latest_release.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +module Gitlab::Ci + module Badge + module Release + class LatestRelease < Badge::Base + attr_reader :project, :release, :customization + + def initialize(project, current_user, opts: {}) + @project = project + @customization = { + key_width: opts[:key_width] ? opts[:key_width].to_i : nil, + key_text: opts[:key_text] + } + + # In the future, we should support `order_by=semver` for showing the + # latest release based on Semantic Versioning. + @release = ::ReleasesFinder.new( + project, + current_user, + order_by: opts[:order_by]).execute.first + end + + def entity + 'Latest Release' + end + + def tag + @release&.tag + end + + def metadata + @metadata ||= Release::Metadata.new(self) + end + + def template + @template ||= Release::Template.new(self) + end + end + end + end +end |