diff options
Diffstat (limited to 'lib/dslkeywords/resource.rb')
| -rw-r--r-- | lib/dslkeywords/resource.rb | 20 |
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. |
