class MassRenamer::Filesystem_Driver
Public Class Methods
new(ask: , dry:, verbose:, no_delete:, force: @ask = ask)
click to toggle source
# File lib/mass_renamer/driver.rb, line 8 def initialize ask: , dry:, verbose:, no_delete:, force: @ask = ask @dry = dry @verbose = verbose @no_delete = no_delete @force = force end
Public Instance Methods
ask(msg, from, to = nil)
click to toggle source
# File lib/mass_renamer/driver.rb, line 16 def ask msg, from, to = nil print "#{msg} '#{from}'#{to ? " -> '#{to}'" : '' }? [YN]: " gets.chomp.downcase == ?y end
copy!(from, to)
click to toggle source
# File lib/mass_renamer/driver.rb, line 55 def copy! from, to begin puts "cp -r '#{from}' '#{to}'" if @dry or @verbose if @ask return unless ask("Copy", from, to) end return if @dry if File.exist?(to) and not @force case overwrite(to) when :abort exit 1 when :no return when :yes end end FileUtils.mkdir_p File.dirname(to) FileUtils.copy_entry from, to, preserve: true, remove_destination: true rescue StandardError => e STDERR.puts "copy '#{from}' -> '#{to}' failed: #{e.message}" raise end end
move!(from, to)
click to toggle source
# File lib/mass_renamer/driver.rb, line 79 def move! from, to begin puts "mv '#{from}' '#{to}'" if @dry or @verbose if @ask return unless ask("Move", from, to) end return if @dry if File.exist?(to) and not @force case overwrite(to) when :abort exit 1 when :no return when :yes end end FileUtils.mkdir_p File.dirname(to) File.rename from, to rescue StandardError => e STDERR.puts "move '#{from}' -> '#{to}' failed: #{e.message}" raise end end
overwrite(to)
click to toggle source
# File lib/mass_renamer/driver.rb, line 21 def overwrite to loop do print "Overwrite #{to}? [Y(es)/N(o)/A(bort)]: " case gets.chomp.downcase when ?a puts "Aborting." return :abort when ?y return :yes when ?n puts "Not overwriting, skipping." return :no else puts "Unexpected answer, try again." end end end
remove!(from)
click to toggle source
# File lib/mass_renamer/driver.rb, line 40 def remove! from raise "Deletes were disables." if @no_delete begin puts "rm -r '#{from}'" if @dry or @verbose if @ask return unless ask("Remove file", from) end return if @dry FileUtils.remove_entry from rescue StandardError => e STDERR.puts "remove of '#{from}' failed: #{e.message}" raise end end