Class: Roebe::DuplicateFiles

Inherits:
Base show all
Defined in:
lib/roebe/classes/duplicate_files.rb

Overview

Roebe::DuplicateFiles

Constant Summary

Constants inherited from Base

Base::COLOURS, Base::HOME_DIRECTORY_OF_USER_X, Base::N, Base::NAMESPACE

Instance Method Summary collapse

Methods inherited from Base

#actions, #append_this_onto_that_file, #append_what_into, #be_silent, #be_verbose?, #beautiful_url, #burlywood, #call_next, #chdir, #cheerful_guy, #cliner, #complex_esystem, #convert_global_env, #copy_directory, #copy_file, #cornflowerblue, #create_directory, #crimson, #current_month?, #current_time?, #current_year?, #cyan, #darkcyan, #darkgreen, #darkkhaki, #darkslateblue, #deeppink, #delete_symlink, #do_not_use_the_base_colours, #do_use_the_base_colours, #e, #ecomment, #editor_to_use?, #efancy, #eimp, #emphasis, #ensure_main_encoding, #ensure_utf_encoding, #eparse, #erev, #esteelblue, #etomato, #ewarn, #exit_program, #firebrick, #get_current_day, #get_current_month, #get_files_and_directories, #get_files_from, #get_german_name_for_this_weekday, #gold, #green, #grey, #hh_mm_ss, #hh_mm_ss_day_month_year, #home_dir?, #home_directory_of_user_x?, #infer_the_namespace, #internal_hash?, #is_a_directory?, #is_a_file?, #is_a_jpg_file?, #is_an_image_file?, #is_archive?, #is_audio_file?, #is_in_studium_dir?, #is_multimedia_file?, #is_on_roebe?, #is_on_windows?, #is_studium_available?, #is_symlink?, #is_this_a_ruby_file?, #is_video_file?, #iso_encoding?, #le, #left_colour, #lightblue, #lightgreen, #lightseagreen, #lightsteelblue, #lime, #limegreen, #localhost_to_data, #log_directory?, #main_encoding?, #mediumorchid, #mediumpurple, #mediumseagreen, #mediumslateblue, #mediumspringgreen, #mediumturquoise, #mkdir_p, #mv, #n_days_in_this_month, #n_pages_in_this_pdf_file?, #namespace?, #no_file_exists_at, #ogrey, #olive, #olivedrab, #open_in_browser, #opne, #opnesystem, #opnn, #orange, #orchid, #orev, #palegoldenrod, #palevioletred, #pink, #powderblue, #programs_dir?, #project_base_dir?, #random_html_colour, #rds, #read_file_in_iso_encoding, #read_file_via_the_default_encoding, #read_lines_via_iso_encoding, #readlines_with_main_encoding, #red, #register_sigint, #remove, #remove_directory, #remove_file, #rename_kde_konsole_tab, #replace_localhost_with_data, #report_pwd, #require_rescue, #reset_the_internal_hash, #return_all_directories_from_this_directory, #return_all_files_from_this_directory, #return_current_directory, #return_dd_mm_yyyy, #return_file_or_directory_of, #return_files_from_pwd, #return_last_part_of_the_current_directory, #return_utc, #rev, #right_arrow?, #right_colour, #roebe_log_directory?, #rosybrown, #royalblue, #ruby_base_directory?, #run_in_background, #run_rcfiles_then_run_ata_via_qdbus, #sandybrown, #sdir, #seagreen, #set_be_verbose, #set_xorg_buffer, #sfancy, #sfile, #show_help, #silent_redirection?, #simp, #simple_esystem, #skyblue, #slateblue, #slategray, #springgreen, #steelblue, #string_italic, #swarn, #symlink, #teal, #temp_dir?, #to_camelcase, #to_counted_hash, #tomato, #touch, #try_to_require_the_beautiful_url_gem, #try_to_require_the_html_template, #try_to_require_the_open_gem, #try_to_require_the_program_information_gem, #try_to_require_the_xorg_buffer, #use_colours?, #verbose_truth, #weekday?, #word_wrap, #write_what_into, #yellow

Methods included from Base::CommandlineArguments

#append_onto_the_commandline_arguments, #clear_commandline_arguments, #commandline_arguments?, #commandline_arguments_as_string?, #commandline_arguments_without_leading_hyphens?, #first_argument?, #first_argument_without_leading_hyphens?, #has_an_argument_been_passed?, #remove_hyphened_arguments_from_the_commandline_arguments, #return_commandline_arguments_with_leading_hyphens, #second_argument?, #set_commandline_arguments

Constructor Details

#initialize(i = ARGV, run_already = true) ⇒ DuplicateFiles

#

initialize

#


20
21
22
23
24
25
26
27
# File 'lib/roebe/classes/duplicate_files.rb', line 20

def initialize(
    i           = ARGV,
    run_already = true
  )
  reset
  set_commandline_arguments(i)
  run if run_already
end

Instance Method Details

#all_files?Boolean

#

all_files?

#

Returns:

  • (Boolean)


78
79
80
# File 'lib/roebe/classes/duplicate_files.rb', line 78

def all_files?
  @internal_hash[:all_files]
end

#do_work_on_all_files(all_files = all_files? ) ⇒ Object

#

do_work_on_all_files

#


85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/roebe/classes/duplicate_files.rb', line 85

def do_work_on_all_files(
    all_files = all_files?
  )
  shorter_name_for_all_files = all_files.map {|entry|
    File.basename(entry).
         delete_suffix(
           '.'+File.extname(entry).delete('.')
         )
  }
  selection = to_counted_hash(shorter_name_for_all_files).select {|key, value|
    value > 1
  }
  if selection.empty?
    opne 'No duplicates were found.'
  else
    report_these_duplicate_files(selection.keys)
  end
end

#report_these_duplicate_files(i, all_files = all_files? ) ⇒ Object

#

report_these_duplicate_files

Here we pass the short name, so we have to expand towards the full name. Calling .uniq() is fine within this method, as we will obtain the corret names on our own anyway.

#


52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/roebe/classes/duplicate_files.rb', line 52

def report_these_duplicate_files(
    i,
    all_files = all_files?
  )
  show_the_absolute_path = @internal_hash[:show_the_absolute_path]
  e steelblue('Duplicate files are:')
  br
  result = []
  i.uniq.each {|duplicate_file|
    result << all_files.select {|entry|
      entry =~ /#{duplicate_file}\./
    }
    result.flatten!
  }
  result.each {|found_this_file|
    unless show_the_absolute_path
      found_this_file = File.basename(found_this_file)
    end
    e "  #{sfile(found_this_file)}"
  }
  br
end

#resetObject

#

reset

#


32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/roebe/classes/duplicate_files.rb', line 32

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === :all_files
  # ======================================================================= #
  @internal_hash[:all_files] = return_files
  # ======================================================================= #
  # === :show_the_absolute_path
  # ======================================================================= #
  @internal_hash[:show_the_absolute_path] = false
end

#runObject

#

run

#


107
108
109
# File 'lib/roebe/classes/duplicate_files.rb', line 107

def run
  do_work_on_all_files
end