summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/dslkeywords/file.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/dslkeywords/file.rb b/lib/dslkeywords/file.rb
index 50728cb..39e0499 100644
--- a/lib/dslkeywords/file.rb
+++ b/lib/dslkeywords/file.rb
@@ -190,6 +190,23 @@ module RCM
end
end
+ # Emtpy file
+ class Touch < BaseFile
+ def is(what) = @is = validate(__method__, what.to_sym, :present, :absent, :purged, :updated)
+
+ def evaluate!
+ return unless super
+ return evaluate_absent! if %i[absent purged].include?(@is)
+
+ create_parent_directory! if @manage_directory
+ dry? "Touching #{@file_path}" do
+ return if @is != :updated && ::File.file?(@file_path)
+
+ FileUtils.touch(@file_path)
+ end
+ end
+ end
+
class Directory < BaseFile
def evaluate!
return unless super
@@ -249,6 +266,16 @@ module RCM
s
end
+ def touch(file_path = nil, &block)
+ return :touch if file_path.nil?
+ return unless @conds_met
+
+ t = Touch.new(file_path)
+ t.instance_eval(&block) if block
+ self << t
+ t
+ end
+
def directory(file_path = nil, &block)
return :directory if file_path.nil?
return unless @conds_met