Module: ChronoForge::Dashboard::StepNameParser

Defined in:
lib/chrono_forge/dashboard/step_name_parser.rb

Defined Under Namespace

Classes: Parsed

Constant Summary collapse

DELIM =
"$"

Class Method Summary collapse

Class Method Details

.parse(step_name) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/chrono_forge/dashboard/step_name_parser.rb', line 7

def self.parse(step_name)
  prefix, name, ts = step_name.to_s.split(DELIM, 3)
  case prefix
  when "" # framework lifecycle markers: $workflow_completion$, $workflow_failure$<id>, $workflow_retry$<ts>
    # The trailing segment is the error-log id for failures (a timestamp for retries).
    Parsed.new(kind: :lifecycle, name: name.to_s.delete_prefix("workflow_"),
      timestamp: Integer(ts, exception: false), raw: step_name)
  when "durably_execute" then Parsed.new(kind: :execute, name: name, raw: step_name)
  when "wait" then Parsed.new(kind: :sleep, name: name, raw: step_name)
  when "wait_until" then Parsed.new(kind: :wait, name: name, raw: step_name)
  when "continue_if" then Parsed.new(kind: :continue, name: name, raw: step_name)
  when "branch" then Parsed.new(kind: :branch, name: name, raw: step_name)
  when "merge" then Parsed.new(kind: :merge, name: name, raw: step_name)
  when "durably_repeat"
    if ts
      Parsed.new(kind: :repeat_run, name: name, timestamp: Integer(ts, exception: false), raw: step_name)
    else
      Parsed.new(kind: :repeat_coordination, name: name, raw: step_name)
    end
  else
    Parsed.new(kind: :unknown, name: step_name, raw: step_name)
  end
end