Class: Gitlab::Ci::YamlProcessor::Dag
- Inherits:
-
Object
- Object
- Gitlab::Ci::YamlProcessor::Dag
- Includes:
- TSort
- Defined in:
- lib/gitlab/ci/yaml_processor/dag.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(nodes) ⇒ Dag
constructor
A new instance of Dag.
- #tsort_each_child(node, &block) ⇒ Object
- #tsort_each_node(&block) ⇒ Object
Constructor Details
#initialize(nodes) ⇒ Dag
Returns a new instance of Dag.
10 11 12 |
# File 'lib/gitlab/ci/yaml_processor/dag.rb', line 10 def initialize(nodes) @nodes = nodes end |
Class Method Details
.check_circular_dependencies!(jobs) ⇒ Object
18 19 20 21 22 |
# File 'lib/gitlab/ci/yaml_processor/dag.rb', line 18 def self.check_circular_dependencies!(jobs) new(jobs).tsort rescue TSort::Cyclic raise ValidationError, 'The pipeline has circular dependencies' end |
.order(jobs) ⇒ Object
14 15 16 |
# File 'lib/gitlab/ci/yaml_processor/dag.rb', line 14 def self.order(jobs) new(jobs).tsort end |
Instance Method Details
#tsort_each_child(node, &block) ⇒ Object
24 25 26 27 28 |
# File 'lib/gitlab/ci/yaml_processor/dag.rb', line 24 def tsort_each_child(node, &block) return unless @nodes[node] @nodes[node].each(&block) end |
#tsort_each_node(&block) ⇒ Object
30 31 32 |
# File 'lib/gitlab/ci/yaml_processor/dag.rb', line 30 def tsort_each_node(&block) @nodes.each_key(&block) end |