diff options
Diffstat (limited to 'lib/gitlab/ci/badge/pipeline/template.rb')
-rw-r--r-- | lib/gitlab/ci/badge/pipeline/template.rb | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/gitlab/ci/badge/pipeline/template.rb b/lib/gitlab/ci/badge/pipeline/template.rb new file mode 100644 index 00000000000..8430b01fc9a --- /dev/null +++ b/lib/gitlab/ci/badge/pipeline/template.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true + +module Gitlab::Ci + module Badge + module Pipeline + ## + # Class that represents a pipeline badge template. + # + # Template object will be passed to badge.svg.erb template. + # + class Template < Badge::Template + STATUS_RENAME = { 'success' => 'passed' }.freeze + STATUS_COLOR = { + success: '#4c1', + failed: '#e05d44', + running: '#dfb317', + pending: '#dfb317', + preparing: '#a7a7a7', + canceled: '#9f9f9f', + skipped: '#9f9f9f', + unknown: '#9f9f9f' + }.freeze + + def initialize(badge) + @entity = badge.entity + @status = badge.status + @key_text = badge.customization.dig(:key_text) + @key_width = badge.customization.dig(:key_width) + end + + def key_text + if @key_text && @key_text.size <= MAX_KEY_TEXT_SIZE + @key_text + else + @entity.to_s + end + end + + def value_text + STATUS_RENAME[@status.to_s] || @status.to_s + end + + def key_width + if @key_width && @key_width.between?(1, MAX_KEY_WIDTH) + @key_width + else + 62 + end + end + + def value_width + 54 + end + + def value_color + STATUS_COLOR[@status.to_sym] || STATUS_COLOR[:unknown] + end + end + end + end +end |