53: def add_resource(scope, resource)
54: @resources << resource
55:
56:
57: @catalog.add_resource(resource)
58:
59:
60:
61:
62:
63: return if resource.type.to_s.downcase == "stage"
64:
65: if resource.type.to_s.downcase != "class"
66: raise ArgumentError, "Only classes can set 'stage'; normal resources like #{resource} cannot change run stage" if resource[:stage]
67: return @catalog.add_edge(scope.resource, resource)
68: end
69:
70: unless stage = @catalog.resource(:stage, resource[:stage] || (scope && scope.resource && scope.resource[:stage]) || :main)
71: raise ArgumentError, "Could not find stage #{resource[:stage] || :main} specified by #{resource}"
72: end
73:
74: resource[:stage] ||= stage.title unless stage.title == :main
75: @catalog.add_edge(stage, resource)
76: end