Class: Igniter::Extensions::Contracts::Creator::Workflow

Inherits:
Object
  • Object
show all
Defined in:
lib/igniter/extensions/contracts/creator/workflow.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(report:) ⇒ Workflow

Returns a new instance of Workflow.



13
14
15
16
# File 'lib/igniter/extensions/contracts/creator/workflow.rb', line 13

def initialize(report:)
  @report = report
  freeze
end

Instance Attribute Details

#reportObject (readonly)

Returns the value of attribute report.



11
12
13
# File 'lib/igniter/extensions/contracts/creator/workflow.rb', line 11

def report
  @report
end

Instance Method Details

#auditObject



22
23
24
# File 'lib/igniter/extensions/contracts/creator/workflow.rb', line 22

def audit
  report.audit
end

#current_stageObject



51
52
53
# File 'lib/igniter/extensions/contracts/creator/workflow.rb', line 51

def current_stage
  stages.find { |stage| !stage.complete? } || stages.last
end

#profileObject



26
27
28
# File 'lib/igniter/extensions/contracts/creator/workflow.rb', line 26

def profile
  scaffold.profile
end

#ready_for_packaging?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/igniter/extensions/contracts/creator/workflow.rb', line 55

def ready_for_packaging?
  packaging_stage.status == :ready
end


34
35
36
37
38
39
# File 'lib/igniter/extensions/contracts/creator/workflow.rb', line 34

def recommended_packs
  {
    runtime: profile.runtime_dependency_hints,
    development: profile.development_dependency_hints
  }
end

#scaffoldObject



18
19
20
# File 'lib/igniter/extensions/contracts/creator/workflow.rb', line 18

def scaffold
  report.scaffold
end

#scopeObject



30
31
32
# File 'lib/igniter/extensions/contracts/creator/workflow.rb', line 30

def scope
  scaffold.scope
end

#stagesObject



41
42
43
44
45
46
47
48
49
# File 'lib/igniter/extensions/contracts/creator/workflow.rb', line 41

def stages
  [
    design_stage,
    scaffold_stage,
    implementation_stage,
    validation_stage,
    packaging_stage
  ]
end

#to_hObject



63
64
65
66
67
68
69
70
71
72
# File 'lib/igniter/extensions/contracts/creator/workflow.rb', line 63

def to_h
  {
    scaffold: scaffold.to_h,
    report: report.to_h,
    recommended_packs: recommended_packs,
    current_stage: current_stage.to_h,
    ready_for_packaging: ready_for_packaging?,
    stages: stages.map(&:to_h)
  }
end

#writer(root:, mode: :skip_existing) ⇒ Object



59
60
61
# File 'lib/igniter/extensions/contracts/creator/workflow.rb', line 59

def writer(root:, mode: :skip_existing)
  Writer.new(workflow: self, root: root, mode: mode)
end