From d5905d15ff5c447c1304cfb08881bf162b4f9939 Mon Sep 17 00:00:00 2001 From: Jason DAmour Date: Thu, 3 Oct 2019 12:57:20 -0600 Subject: [PATCH] initial commit --- lib/gitlab/badge/release/latestrelease.rb | 34 ++++++++++++++++++ lib/gitlab/badge/release/metadata.rb | 29 +++++++++++++++ lib/gitlab/badge/release/template.rb | 44 +++++++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 lib/gitlab/badge/release/latestrelease.rb create mode 100644 lib/gitlab/badge/release/metadata.rb create mode 100644 lib/gitlab/badge/release/template.rb diff --git a/lib/gitlab/badge/release/latestrelease.rb b/lib/gitlab/badge/release/latestrelease.rb new file mode 100644 index 000000000000..542e1e309e7d --- /dev/null +++ b/lib/gitlab/badge/release/latestrelease.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module Gitlab + module Badge + module Release + + class LatestRelease < Badge::Base + attr_reader :project, :ref + + def initialize(project, ref) + @project = project + @ref = ref + end + + def entity + 'latest release' + end + + def status + @release = @project.releases.last.tag || 'none' + end + + def metadata + @metadata ||= Release::Metadata.new(self) + end + + def template + @template ||= Release::Template.new(self) + end + + end + end + end +end diff --git a/lib/gitlab/badge/release/metadata.rb b/lib/gitlab/badge/release/metadata.rb new file mode 100644 index 000000000000..49b81b12ad18 --- /dev/null +++ b/lib/gitlab/badge/release/metadata.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +module Gitlab + module Badge + module Release + ## + # Class that describes release badge metadata + # + class Metadata < Badge::Metadata + def initialize(badge) + @project = badge.project + @ref = badge.ref + end + + def title + 'latest release' + end + + def image_url + release_project_badges_url(@project, @ref, format: :svg) + end + + def link_url + project_release_url(@project, id: @ref) + end + end + end + end +end diff --git a/lib/gitlab/badge/release/template.rb b/lib/gitlab/badge/release/template.rb new file mode 100644 index 000000000000..7e05fdc1e0d3 --- /dev/null +++ b/lib/gitlab/badge/release/template.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +module Gitlab + module Badge + module Release + ## + # Class that represents a release badge template. + # + # Template object will be passed to badge.svg.erb template. + # + class Template < Badge::Template + STATUS_COLOR = { + latest: '#4c1', + none: '#e05d44', + }.freeze + + def initialize(badge) + @entity = badge.entity + @status = badge.status + end + + def key_text + @entity.to_s + end + + def value_text + @status.to_s + end + + def key_width + 62 + end + + def value_width + 54 + end + + def value_color + STATUS_COLOR[@status.to_sym] || STATUS_COLOR[:latest] + end + end + end + end +end -- GitLab