Class: Roebe::CreateIsoForGames

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

Overview

Roebe::CreateIsoForGames

Constant Summary collapse

FILE_GOOD_DOS_GAMES =
nil
FILE_GOOD_WINDOWS_GAMES =
#

FILE_GOOD_WINDOWS_GAMES

This points to the “good windows games”.

#
nil
DIRECTORY_FOR_THE_GAMES =
#

DIRECTORY_FOR_THE_GAMES

This constant specifies where exactly the directory should be placed on your filesystem.

#
'/Depot/jjjj/WINDOWS_GAMES/'

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, #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(commandline_arguments = nil, run_already = true) ⇒ CreateIsoForGames

#

initialize

#


61
62
63
64
65
66
67
68
69
70
# File 'lib/roebe/classes/create_iso_for_games.rb', line 61

def initialize(
    commandline_arguments = nil,
    run_already           = true
  )
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

Roebe::CreateIsoForGames[]

#


290
291
292
# File 'lib/roebe/classes/create_iso_for_games.rb', line 290

def self.[](i = '')
  new(i)
end

Instance Method Details

#check_whether_the_specified_files_exist_locally(i) ⇒ Object

#

check_whether_the_specified_files_exist_locally

#


161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/roebe/classes/create_iso_for_games.rb', line 161

def check_whether_the_specified_files_exist_locally(i)
  if i.is_a? Hash
    paths = i.map {|key, inner_hash|
      inner_hash['local_path']
    }
    paths.each {|this_path|
      if this_path and File.exist?(this_path)
        opne 'File at `'+sfile(this_path)+'` exists. '\
             'This is '+gold('good')+'! '+yellow(cheering_person)
      else
        opne swarn("No file exists at this path `")+
             orange(this_path)+
             swarn("`.")
      end
    }
  end
end

#copy_all_existing_files_into_this_directory(target_directory = DIRECTORY_FOR_THE_GAMES) ⇒ Object

#

copy_all_existing_files_into_this_directory

#


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
# File 'lib/roebe/classes/create_iso_for_games.rb', line 132

def copy_all_existing_files_into_this_directory(
    target_directory = DIRECTORY_FOR_THE_GAMES
  )
  target_directory = rds("#{target_directory}/")
  cd File.absolute_path(target_directory+'..')
  if target_directory == '/'
    opne "#{rev}The target directory can not be #{steelblue('/')}#{rev}."
    exit
  end
  if File.directory? target_directory
    remove_directory(target_directory)
    mkdir(target_directory)
  end
  if File.directory? target_directory
    @dataset.each_pair {|key, inner_hash|
      existing_file = inner_hash['local_path']
      if existing_file and File.exist?(existing_file)
        @total_filesize += File.size(existing_file)
        opnn; copy_file(existing_file, target_directory)
      else
        opnn; no_file_exists_at(existing_file)
      end
    }
  end
end

#create_a_new_directory_then_copy_the_games_and_then_create_the_iso_fileObject

#

create_a_new_directory_then_copy_the_games_and_then_create_the_iso_file

#


207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/roebe/classes/create_iso_for_games.rb', line 207

def create_a_new_directory_then_copy_the_games_and_then_create_the_iso_file
  require 'roebe/classes/create_iso.rb' # bl $ROEBE_CLASSES/create_iso.rb
  use_this_as_target_directory = DIRECTORY_FOR_THE_GAMES
  opnn; create_directory use_this_as_target_directory, :be_verbose
  copy_all_existing_files_into_this_directory(use_this_as_target_directory)
  create_game_list_into_this_directory(use_this_as_target_directory)
  # ======================================================================= #
  # Next, create the .iso file. So this means that everything prior to
  # this step must have been finished.
  # ======================================================================= #
  Roebe.create_iso(use_this_as_target_directory) {{
    output_name: @output_name
  }}
  report_total_filesize
  display_summary
end

#create_game_list_into_this_directory(i) ⇒ Object

#

create_game_list_into_this_directory

#


227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
# File 'lib/roebe/classes/create_iso_for_games.rb', line 227

def create_game_list_into_this_directory(i)
  what = ''.dup
  @dataset.each_pair {|name_of_the_game, inner_hash|
    released_when = inner_hash['released_when'].to_s
    wikipedia_url = inner_hash['wikipedia'].to_s
    youtube_url   = inner_hash['youtube'].to_s
    what << 'Game name: '+name_of_the_game+"\n"
    what << '  Released: '+released_when+"\n"
    what << '  Wikipedia URL: '+wikipedia_url+"\n"
    what << '  Youtube URL: '+youtube_url+"\n"
    what << '  Filesize: '+inner_hash['file_size'].to_s+"\n\n"
  }
  into = rds(i+'/GAME_LIST.md')
  opne 'Saving into the file `'+sfile(into)+'`.'
  write_what_into(what, into)
end

#display_summaryObject

#

display_summary

This method will tell the user what games have been copied.

#


249
250
251
252
# File 'lib/roebe/classes/create_iso_for_games.rb', line 249

def display_summary
  opne "#{rev}A total of #{palevioletred(@dataset.size.to_s)} "\
       "#{rev}games have been copied into #{sdir(return_pwd)}."
end

#do_default_taskObject

#

do_default_task (default task, default tag)

This is the “default” task for this class. It can be changed at any moment in time, so its primary use case is to allow us to quickly test this class here really.

#


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

def do_default_task
  create_a_new_directory_then_copy_the_games_and_then_create_the_iso_file
end

#load_up_the_main_yaml_file(this_file = :default) ⇒ Object

#

load_up_the_main_yaml_file

#


98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/roebe/classes/create_iso_for_games.rb', line 98

def load_up_the_main_yaml_file(
    this_file = :default
  )
  case this_file
  # ======================================================================= #
  # === :dos_games
  # ======================================================================= #
  when :dos_games,
       :dos
     this_file = FILE_GOOD_DOS_GAMES
  # ======================================================================= #
  # === :windows_games
  # ======================================================================= #
  when :windows_games,
       :default
    this_file = FILE_GOOD_WINDOWS_GAMES
  end
  if this_file and File.exist?(this_file)
    opne "#{slateblue('Loading dataset')} from the "\
         "file `#{sfile(this_file)}`."
    # ===================================================================== #
    # Store our yaml-dataset into the variable called @dataset.
    # ===================================================================== #
    @dataset = YAML.load_file(this_file)
    check_whether_the_specified_files_exist_locally(@dataset)
  else
    opnn; no_file_exists_at(this_file)
    exit
  end
end
#

menu (menu tag)

#


257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
# File 'lib/roebe/classes/create_iso_for_games.rb', line 257

def menu(
    i = commandline_arguments?
  )
  if i.is_a? Array
    i.each {|entry| menu(entry) }
  else
    case i # case tag
    # ===================================================================== #
    # === isoforgames --default
    #
    # The method below is normally NOT run from within run().
    # ===================================================================== #
    when /^--default$/,
         /^--do(-|_)?it$/
      do_default_task
    end
  end
end

#report_total_filesizeObject

#

report_total_filesize

Remember that 1 GB equals 1024 MB.

#


184
185
186
187
188
189
190
191
# File 'lib/roebe/classes/create_iso_for_games.rb', line 184

def report_total_filesize
  _ = @total_filesize
  n_kb = (_ / 1024.0).round(2).to_s
  n_mb = (n_kb.to_f / 1024.0).round(2).to_s
  opne 'The total filesize is '+sfancy(_)+
       ' bytes ('+n_kb+' KB; '+
       slateblue(n_mb+' MB')+').'
end

#resetObject

#

reset (reset tag)

#


75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/roebe/classes/create_iso_for_games.rb', line 75

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @total_filesize
  #
  # The next instance variable will keep track of the filesize of the
  # archives found.
  # ======================================================================= #
  @total_filesize = 0
  # ======================================================================= #
  # === @output_name
  #
  # This variable keeps track as to which name shall be assigned to the
  # .iso file at hand. Change this if you would like to, e. g. from
  # "DOS_GAMES" to "WINDOWS_GAMES" or vice versa.
  # ======================================================================= #
  @output_name = 'WINDOWS_GAMES' # 'DOS_GAMES'
end

#runObject

#

run (run tag)

#


279
280
281
282
283
284
285
# File 'lib/roebe/classes/create_iso_for_games.rb', line 279

def run
  load_up_the_main_yaml_file
  # ======================================================================= #
  # We can branch off doing different things, through the menu interface.
  # ======================================================================= #
  menu
end