Class: Roebe::MoveFile

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

Overview

Roebe::MoveFile

Constant Summary

Constants inherited from Base

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

Class Method Summary collapse

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, #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(old_file = nil, new_position = nil, run_already = true, &block) ⇒ MoveFile

#

initialize

#


32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/roebe/classes/move_file.rb', line 32

def initialize(
    old_file     = nil,
    new_position = nil,
    run_already  = true,
    &block
  )
  reset
  set_old_file(old_file)
  set_new_position(new_position)
  if block_given?
    yielded = yield
    case yielded
    # ===================================================================== #
    # === :be_silent
    # ===================================================================== #
    when :be_silent,
         :be_quiet
      @be_verbose = false
    end
  end
  run if run_already
end

Class Method Details

.[](from, to) ⇒ Object

#

Roebe::MoveFile[]

#


207
208
209
# File 'lib/roebe/classes/move_file.rb', line 207

def self.[](from, to)
  new(from, to)
end

Instance Method Details

#glob(i) ⇒ Object

#

glob

#


176
177
178
179
# File 'lib/roebe/classes/move_file.rb', line 176

def glob(i)
  i << '*' unless i.end_with? '*'
  Dir[i]
end

#pad(i) ⇒ Object

#

pad

Pad the input with “” quotes.

#


186
187
188
# File 'lib/roebe/classes/move_file.rb', line 186

def pad(i)
  return '"'+i.to_s+'"'
end

#resetObject

#

reset (reset tag)

#


58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/roebe/classes/move_file.rb', line 58

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @be_verbose
  # ======================================================================= #
  @be_verbose = true
  # ======================================================================= #
  # === @result
  # ======================================================================= #
  @result = [] # This should always include the full absolute path.
end

#result?Boolean Also known as: result

#

result?

#

Returns:

  • (Boolean)


193
194
195
# File 'lib/roebe/classes/move_file.rb', line 193

def result?
  @result
end

#runObject

#

run (run tag)

#


200
201
202
# File 'lib/roebe/classes/move_file.rb', line 200

def run
  try_to_move_the_file # This is the action-part of this class.
end

#set_new_position(i = '/Depot/jjj/hi_there') ⇒ Object Also known as: set_where_to

#

set_new_position

Our target, where the moved file or directory will reside at.

#


98
99
100
101
102
103
104
105
106
107
108
# File 'lib/roebe/classes/move_file.rb', line 98

def set_new_position(
    i = '/Depot/jjj/hi_there'
  )
  i = '/Depot/jjj/hi_there' if i.nil? # Should default to Dir.pwd perhaps, but that would be rather useful.
  i = i.to_s.dup # So it is not frozen.
  i = rds(i)
  unless i.include? '/' # Then we must use the current directory.
    i.prepend return_pwd.dup
  end
  @new_position = i
end

#set_old_file(i = '/Depot/jjj/hi there') ⇒ Object Also known as: set_this_file

#

set_old_file

This file must be existing.

We must be careful when the input is an Array. For instance, a filename may be “/Depot/jjj/hi there” yet be passed as an Array to this method.

#


79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/roebe/classes/move_file.rb', line 79

def set_old_file(
    i = '/Depot/jjj/hi there'
  )
  i = '/Depot/jjj/hi there' if i.nil?
  i = rds(i)
  if i.include?(' ') and ! File.exist?(i) # Then convert it to array.
    i = i.split(' ')
  end if i.is_a? String
  unless i.include? '/' # Then we must use the current directory.
    i.prepend(return_pwd)
  end if i.is_a? String
  @old_file = i
end

#target_is_in_this_directory?(existing_file, new_file) ⇒ Boolean

#

target_is_in_this_directory?

Returns true if target is in this directory, else it will return false.

#

Returns:

  • (Boolean)


115
116
117
118
119
120
# File 'lib/roebe/classes/move_file.rb', line 115

def target_is_in_this_directory?(existing_file, new_file)
  existing_file = return_pwd+existing_file unless existing_file.include? '/'
  new_file      = return_pwd+new_file unless new_file.include? '/'
  return true if File.dirname(existing_file) == File.dirname(new_file)
  return false # If the above is true, we won't reach here.
end

#try_to_move_the_file(old_file = @old_file, new_position = @new_position) ⇒ Object Also known as: move_file, mv

#

try_to_move_the_file

This method will run FileUtils finally.

#


127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/roebe/classes/move_file.rb', line 127

def try_to_move_the_file(
    old_file     = @old_file,
    new_position = @new_position
  )
  # ======================================================================= #
  # If the file in question does not exist, we first try a glob since 
  # Dec 2011 by appending a *.
  # ======================================================================= #
  if old_file.is_a? Array # Batch-process all passed Array members.
    old_file.each {|entry| try_to_move_the_file(entry, new_position) }
  else
    if old_file.include? '*' # Act on glob here.
      globbed = glob(old_file)
      move_file(globbed, new_position)
    else
      old_file = glob(old_file+'*') unless File.exist?(old_file)
      # old_file can be an array here.
      old_file = old_file.first if old_file.is_a? Array
      old_file = old_file.to_s
      if old_file == new_position
        opnewarn 'Can not rename "'+col(old_file)+'" to the '+
                    'same name "'+col(new_position)+'".'
      elsif File.exist? old_file
        if @be_verbose
          verb = 'moving'
          verb = 'renaming' if target_is_in_this_directory?(old_file, new_position)
          if old_file.include? ' '
            padded_old_file     = pad(old_file)
            padded_new_position = pad(new_position)
          else
            padded_old_file     = old_file
            padded_new_position = new_position
          end
          opne 'Now '+verb+' '+sfile(padded_old_file)+
                  ' to '+sfile(padded_new_position)+'.'
        end
        FileUtils.mv(old_file, new_position)
        @result << [ new_position, old_file ]
      else
        opnewarn 'Sorry, there is no file at '+sfile(old_file)+'.'
      end
    end
  end
end