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.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/dslkeywords/resource.rb b/lib/dslkeywords/resource.rb
new file mode 100644
index 0000000..6612428
--- /dev/null
+++ b/lib/dslkeywords/resource.rb
@@ -0,0 +1,31 @@
+require_relative 'keyword'
+
+module RCM
+ # To track recource dependencies
+ module Dependency
+ # Only to have the resourcename[id] syntax available in the DSL
+ class SyntaxSugar
+ def initialize(name)
+ @name = name
+ end
+
+ def [](other) = "#{@name}['#{other}']"
+ end
+
+ def method_missing(method_name) = SyntaxSugar.new(method_name)
+ def respond_to_missing? = true
+
+ def depends_on(*others)
+ @depends_on = {} if @depends_on.nil?
+ others.each do |other|
+ info "Registered dependency on #{other}"
+ @depends_on[other] = {}
+ end
+ end
+ end
+
+ # A resource is something concrete to be managed, e.g. a file, or a CRON job.
+ class Resource < Keyword
+ include Dependency
+ end
+end