Module: Terjira::ProjectPresenter

Included in:
BaseCLI
Defined in:
lib/terjira/presenters/project_presenter.rb

Instance Method Summary collapse

Instance Method Details

#redner_project_detail(project) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/terjira/presenters/project_presenter.rb', line 34

def redner_project_detail(project)
  head = nil
  rows = []
  rows << (pastel.blue.bold(project.key) + ' ' + project.name)
  if project.respond_to?(:description)
    rows << ''
    rows << pastel.bold('Description')
    rows << (project.description.strip.empty? ? 'None' : project.description)
  end
  rows << ''

  rows << pastel.bold('Lead')
  rows << username(project.lead)
  rows << ''
  rows << render_components_and_versions(project)

  table = TTY::Table.new head, rows.map { |row| [row] }
  result = table.render(:unicode, padding: [0, 1, 0, 1], multiline: true)
  render(result)
end

#render_components_and_versions(project) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/terjira/presenters/project_presenter.rb', line 55

def render_components_and_versions(project)
  componets = project.components.map(&:name)
  componets = componets.size.zero? ? 'Empty' : componets.join("\n")
  versions = project.versions.reject(&:released).map(&:name)
  versions = versions.size.zero? ? 'Empty' : versions.join("\n")

  header = [pastel.bold('Components'),
            pastel.bold('Unreleased versions')]
  row = [[componets, versions]]

  table = TTY::Table.new(header, row)
  table.render(padding: [0, 1, 0, 0], multiline: true)
end

#render_projects_summary(projects) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/terjira/presenters/project_presenter.rb', line 8

def render_projects_summary(projects)
  return render('Nothing.') if projects.blank?
  head = %w(KEY NAME TYPE).map do |v|
    { value: v, alignment: :center }
  end

  rows = projects.map do |project|
    [project.key, project.name, project.try(:projectTypeKey)]
  end

  table = TTY::Table.new head, rows
  pastel = Pastel.new

  result = table.render(:unicode, padding: [0, 1, 0, 1]) do |renderer|
    renderer.filter = proc do |val, ri, ci|
      if ri.zero? || ci.zero?
        pastel.bold(val)
      else
        val
      end
    end
  end

  render(result)
end