BigW Consortium Gitlab

ci_status_helper.rb 3.59 KB
Newer Older
1 2 3 4 5 6 7
##
# DEPRECATED
#
# These helpers are deprecated in favor of detailed CI/CD statuses.
#
# See 'detailed_status?` method and `Gitlab::Ci::Status` module.
#
8
module CiStatusHelper
9 10
  def ci_status_path(pipeline)
    project = pipeline.project
Filipa Lacerda committed
11
    namespace_project_pipeline_path(project.namespace, project, pipeline)
Kamil Trzcinski committed
12 13
  end

14
  def ci_label_for_status(status)
15 16 17 18
    if detailed_status?(status)
      return status.label
    end

19 20
    case status
    when 'success'
21
      'passed'
22 23
    when 'success_with_warnings'
      'passed with warnings'
24 25
    when 'manual'
      'waiting for manual action'
26 27
    else
      status
28 29 30
    end
  end

31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
  def ci_text_for_status(status)
    if detailed_status?(status)
      return status.text
    end

    case status
    when 'success'
      'passed'
    when 'success_with_warnings'
      'passed'
    when 'manual'
      'blocked'
    else
      status
    end
  end

48 49 50 51 52
  def ci_status_for_statuseable(subject)
    status = subject.try(:status) || 'not found'
    status.humanize
  end

53
  def ci_icon_for_status(status)
54 55 56 57
    if detailed_status?(status)
      return custom_icon(status.icon)
    end

58
    icon_name =
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
      case status
      when 'success'
        'icon_status_success'
      when 'success_with_warnings'
        'icon_status_warning'
      when 'failed'
        'icon_status_failed'
      when 'pending'
        'icon_status_pending'
      when 'running'
        'icon_status_running'
      when 'play'
        'icon_play'
      when 'created'
        'icon_status_created'
      when 'skipped'
        'icon_status_skipped'
76 77
      when 'manual'
        'icon_status_manual'
78
      else
79
        'icon_status_canceled'
80 81
      end

82
    custom_icon(icon_name)
83
  end
84

85 86 87 88
  def pipeline_status_cache_key(pipeline_status)
    "pipeline-status/#{pipeline_status.sha}-#{pipeline_status.status}"
  end

89 90 91 92 93 94 95 96 97 98 99 100 101 102
  def render_project_pipeline_status(pipeline_status, tooltip_placement: 'auto left')
    project = pipeline_status.project
    path = pipelines_namespace_project_commit_path(
      project.namespace,
      project,
      pipeline_status.sha)

    render_status_with_link(
      'commit',
      pipeline_status.status,
      path,
      tooltip_placement: tooltip_placement)
  end

103
  def render_commit_status(commit, ref: nil, tooltip_placement: 'auto left')
104
    project = commit.project
105 106 107 108 109 110 111
    path = pipelines_namespace_project_commit_path(
      project.namespace,
      project,
      commit)

    render_status_with_link(
      'commit',
112
      commit.status(ref),
113 114
      path,
      tooltip_placement: tooltip_placement)
115 116 117 118 119
  end

  def render_pipeline_status(pipeline, tooltip_placement: 'auto left')
    project = pipeline.project
    path = namespace_project_pipeline_path(project.namespace, project, pipeline)
120
    render_status_with_link('pipeline', pipeline.status, path, tooltip_placement: tooltip_placement)
121 122
  end

123 124 125 126 127
  def no_runners_for_project?(project)
    project.runners.blank? &&
      Ci::Runner.shared.blank?
  end

128
  def render_status_with_link(type, status, path = nil, tooltip_placement: 'auto left', cssclass: '', container: 'body')
129 130
    klass = "ci-status-link ci-status-icon-#{status.dasherize} #{cssclass}"
    title = "#{type.titleize}: #{ci_label_for_status(status)}"
131
    data = { toggle: 'tooltip', placement: tooltip_placement, container: container }
132

133 134 135 136 137 138 139
    if path
      link_to ci_icon_for_status(status), path,
              class: klass, title: title, data: data
    else
      content_tag :span, ci_icon_for_status(status),
              class: klass, title: title, data: data
    end
140
  end
141 142 143 144 145 146

  def detailed_status?(status)
    status.respond_to?(:text) &&
      status.respond_to?(:label) &&
      status.respond_to?(:icon)
  end
147
end