Class: DirSizeRenamer

Inherits:
Object
  • Object
show all
Defined in:
lib/dir_size_renamer.rb

Instance Method Summary collapse

Constructor Details

#initialize(directory, options = { verbose: false, rerename: false }) ⇒ DirSizeRenamer

Returns a new instance of DirSizeRenamer.



6
7
8
9
10
11
12
# File 'lib/dir_size_renamer.rb', line 6

def initialize(directory, options = { verbose: false, rerename: false })
  # An existing directory should be provided
  raise "Invalid path given: #{directory}" if not Dir.exists?(directory)
  @directory = directory
  @verbose   = options[:verbose]
  @rerename  = options[:rerename]
end

Instance Method Details

#rename! ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/dir_size_renamer.rb', line 14

def rename!

  start_time = Time.now

  report "Starting to rename directories within #{@directory}"

  Dir["#{@directory}/*/"].each do |dir|
    subfolder = Subfolder.new(dir.chomp("/"))

    report("Processing #{File.basename(subfolder.directory)}... ", inline: true)

    # Derenaming during renaming is necessary only in rerename mode
    # and only if actual size does not match size in the name
    subfolder.remove_size_from_name! if @rerename == true and not subfolder.name_matches_size?

    subfolder.add_path_to_name! if not subfolder.name_contains_size?
    report(subfolder.size_human_readable,skip_time: true)

  end

  report "Finished! Elapsed time: #{ChronicDuration.output(Time.now - start_time)}"
end

#rename_undo! ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/dir_size_renamer.rb', line 37

def rename_undo!
  report "Starting to derename directories within #{@directory}"

  Dir["#{@directory}/*/"].each do |dir|
    subfolder = Subfolder.new(dir.chomp("/"))

    report("Processing #{File.basename(subfolder.directory)}... ")
    subfolder.remove_size_from_name! if subfolder.name_contains_size?
    #report(subfolder.size_human_readable,skip_time: true) if @verbose

  end

  report "Finished derenaming!"
end