summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/dslkeywords/file.rb9
-rw-r--r--lib/options.rb3
2 files changed, 8 insertions, 4 deletions
diff --git a/lib/dslkeywords/file.rb b/lib/dslkeywords/file.rb
index d9a31fa..a734042 100644
--- a/lib/dslkeywords/file.rb
+++ b/lib/dslkeywords/file.rb
@@ -8,7 +8,7 @@ require_relative '../chained'
module RCM
# Backup the file on change
module FileBackup
- def backup!(file_path, checksum)
+ def backup!(file_path, checksum = Digest::SHA256.file(file_path).hexdigest)
return if @without_backup
backup_dir = "#{::File.dirname(file_path)}/.rcm"
@@ -68,10 +68,13 @@ module RCM
def evaluate_absent!
if ::File.exist?(@file_path)
info("Deleting #{@file_path}")
- ::File.delete(@file_path)
+ backup!(@file_path)
+ ::File.delete(@file_path) if ::File.file?(@file_path)
end
- return unless @manage_directory
+ cleanup_directory! if @manage_directory
+ end
+ def cleanup_directory!
parent_dir = ::File.dirname(@file_path)
while Dir.empty?(parent_dir)
info("Deleting empty parent directory #{parent_dir}")
diff --git a/lib/options.rb b/lib/options.rb
index ee30295..401d135 100644
--- a/lib/options.rb
+++ b/lib/options.rb
@@ -3,12 +3,13 @@ require 'optparse'
module RCM
# Command line options
module Options
- @@options = { debug: false }
+ @@options = { debug: false, dry: false }
if (after_double_dash = ARGV.slice_before('--').to_a.last&.drop(1))
OptionParser.new do |opts|
opts.banner = 'Usage: rake [task] -- [options]'
opts.on('-v', '--[no-]debug', 'debug output') { |v| @@options[:debug] = v }
+ opts.on('-d', '--dry', 'dry mode') { |v| @@options[:dry] = v }
end.parse!(after_double_dash)
end