summaryrefslogtreecommitdiff
path: root/lib/dslkeywords/resource.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dslkeywords/resource.rb')
-rw-r--r--lib/dslkeywords/resource.rb20
1 files changed, 8 insertions, 12 deletions
diff --git a/lib/dslkeywords/resource.rb b/lib/dslkeywords/resource.rb
index c9098d4..18239fc 100644
--- a/lib/dslkeywords/resource.rb
+++ b/lib/dslkeywords/resource.rb
@@ -13,31 +13,27 @@ module RCM
end
end
- # Only to have the resourcename[id] syntax available in the DSL
- class SyntaxSugar
- def initialize(name) = @name = name
- def [](other) = "#{@name}['#{other}']"
- end
-
class NoSuchResourceType < StandardError; end
- def method_missing(method_name)
+ def method_missing(method_name, *args)
raise NoSuchResourceType, "No such resource type: #{method_name}" unless @valid_resources.include?(method_name)
- SyntaxSugar.new(method_name)
+ args.map { |arg| "#{method_name}('#{arg}')" }
end
def respond_to_missing? = true
def depends_on(*others)
- @dependencies = {} if @dependencies.nil?
- others.each do |other|
+ @depends_on = {} if @depends_on.nil?
+ return @depends_on if others.empty?
+
+ others.flatten.each do |other|
info "Registered dependency on #{other}"
- @dependencies[other] = {}
+ @depends_on[other] = {}
end
end
- def dependencies = @dependencies.nil ? [] : @dependencies
+ def depends_on?(other) = @depends_on.nil? ? false : @depends_on.key?(other)
end
# A resource is something concrete to be managed, e.g. a file, or a CRON job.