Class: Kettle::Family::Report

Inherits:
Object
  • Object
show all
Defined in:
lib/kettle/family/report.rb

Constant Summary collapse

MEMBER_RESULT_COMMANDS =
%w[
  add-changelog
  bex
  bump-version
  bup
  bupb
  check
  docs
  gha-sha-pins
  install
  lint
  pull
  push
  release
  release-state
  template
  test
  up
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(family_name:, order_mode:, members:, selected_members:, config_path:, family_mode: nil, branch_lanes: {}, release_target_branches: [], member_release_target_branches: {}, release_mode: nil, command: nil, results: []) ⇒ Report

Returns a new instance of Report.



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/kettle/family/report.rb', line 30

def initialize(family_name:, order_mode:, members:, selected_members:, config_path:, family_mode: nil, branch_lanes: {}, release_target_branches: [], member_release_target_branches: {}, release_mode: nil, command: nil, results: [])
  @family_name = family_name
  @family_mode = family_mode
  @order_mode = order_mode
  @members = members
  @selected_members = selected_members
  @config_path = config_path
  @command = command
  @results = results
  @branch_lanes = branch_lanes
  @release_target_branches = release_target_branches
  @member_release_target_branches = member_release_target_branches
  @release_mode = release_mode
end

Instance Attribute Details

#branch_lanesObject (readonly)

Returns the value of attribute branch_lanes.



28
29
30
# File 'lib/kettle/family/report.rb', line 28

def branch_lanes
  @branch_lanes
end

#commandObject (readonly)

Returns the value of attribute command.



28
29
30
# File 'lib/kettle/family/report.rb', line 28

def command
  @command
end

#config_pathObject (readonly)

Returns the value of attribute config_path.



28
29
30
# File 'lib/kettle/family/report.rb', line 28

def config_path
  @config_path
end

#family_modeObject (readonly)

Returns the value of attribute family_mode.



28
29
30
# File 'lib/kettle/family/report.rb', line 28

def family_mode
  @family_mode
end

#family_nameObject (readonly)

Returns the value of attribute family_name.



28
29
30
# File 'lib/kettle/family/report.rb', line 28

def family_name
  @family_name
end

#member_release_target_branchesObject (readonly)

Returns the value of attribute member_release_target_branches.



28
29
30
# File 'lib/kettle/family/report.rb', line 28

def member_release_target_branches
  @member_release_target_branches
end

#membersObject (readonly)

Returns the value of attribute members.



28
29
30
# File 'lib/kettle/family/report.rb', line 28

def members
  @members
end

#order_modeObject (readonly)

Returns the value of attribute order_mode.



28
29
30
# File 'lib/kettle/family/report.rb', line 28

def order_mode
  @order_mode
end

#release_modeObject (readonly)

Returns the value of attribute release_mode.



28
29
30
# File 'lib/kettle/family/report.rb', line 28

def release_mode
  @release_mode
end

#release_target_branchesObject (readonly)

Returns the value of attribute release_target_branches.



28
29
30
# File 'lib/kettle/family/report.rb', line 28

def release_target_branches
  @release_target_branches
end

#resultsObject (readonly)

Returns the value of attribute results.



28
29
30
# File 'lib/kettle/family/report.rb', line 28

def results
  @results
end

#selected_membersObject (readonly)

Returns the value of attribute selected_members.



28
29
30
# File 'lib/kettle/family/report.rb', line 28

def selected_members
  @selected_members
end

Instance Method Details

#success?Boolean

Returns:

  • (Boolean)


89
90
91
# File 'lib/kettle/family/report.rb', line 89

def success?
  results.all?(&:ok?) && summary_pending.empty?
end

#to_hObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/kettle/family/report.rb', line 45

def to_h
  {
    "family" => family_name,
    "family_mode" => family_mode,
    "config_path" => config_path,
    "order_mode" => order_mode,
    "members" => members.map(&:to_h),
    "selected_members" => selected_members.map(&:name),
    "branch_lanes" => branch_lanes,
    "release_target_branches" => release_target_branches,
    "member_release_target_branches" => member_release_target_branches,
    "release_mode" => release_mode,
    "command" => command,
    "results" => results.map(&:to_h),
    "summary" => summary,
    "resume_hint" => resume_hint
  }
end

#to_json(*args) ⇒ Object



64
65
66
# File 'lib/kettle/family/report.rb', line 64

def to_json(*args)
  JSON.pretty_generate(to_h, *args)
end

#to_textObject



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/kettle/family/report.rb', line 68

def to_text
  lines = ["kettle-family: #{Kettle::Family::VERSION}", "family: #{family_name}"]
  lines << "mode: #{family_mode}" if family_mode
  lines << "config: #{config_path || "none"}"
  lines << "order: #{order_mode}"
  lines << "command: #{command}" if command
  lines << "release mode: #{release_mode}" if release_mode
  lines << "release targets: #{release_target_branches.join(", ")}" unless release_target_branches.empty?
  append_member_release_targets(lines)
  lines << "members:"
  selected_names = selected_members.map(&:name)
  members.each do |member|
    marker = selected_names.include?(member.name) ? "*" : "-"
    lines << "  #{marker} #{member.name} #{member.version} #{member.root}"
  end
  append_release_waves(lines)
  append_results(lines)
  append_summary(lines)
  lines.join("\n")
end