Class: Roebe::GenerateMasterShellScript

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

Overview

Roebe::GenerateMasterShellScript

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

#

initialize

#


28
29
30
31
32
33
34
35
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 28

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

Class Method Details

.[](i = '') ⇒ Object

#

Roebe::GenerateMasterShellScript[]

#


246
247
248
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 246

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

Instance Method Details

#add(i = "\n", append_newline = true) ⇒ Object

#

add (add tag)

#


102
103
104
105
106
107
108
109
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 102

def add(
    i = "\n", append_newline = true
  )
  @what << i
  if append_newline
    @what << "\n"
  end
end

#add_newlineObject

#

add_newline

#


114
115
116
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 114

def add_newline
  add("\n")
end

#aggregate_the_existing_rc_filesObject

#

aggregate_the_existing_rc_files

#


159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 159

def aggregate_the_existing_rc_files
  target_dir = '/AUTOGENERATED/'
  # ======================================================================= #
  # === path_variable_rc
  # ======================================================================= #
  _ = target_dir+'path_variable_rc'
  append_content_from_this_file_while_notifying_the_user_as_well(_)
  # ======================================================================= #
  # === roeberia_settings_rc
  #
  # Roeberia must come early because it defines some variables that
  # will be used by other _rc files.
  # ======================================================================= #
  _ = target_dir+'roeberia_settings_rc'
  append_content_from_this_file_while_notifying_the_user_as_well(_)
  # ======================================================================= #
  # === aliases_rc
  # ======================================================================= #
  _ = target_dir+'aliases_rc'
  append_content_from_this_file_while_notifying_the_user_as_well(_)
  # ======================================================================= #
  # === cflags_rc
  # ======================================================================= #
  _ = target_dir+'cflags_rc'
  append_content_from_this_file_while_notifying_the_user_as_well(_)
  # ======================================================================= #
  # === ls_colours_rc
  # ======================================================================= #
  _ = target_dir+'ls_colours_rc'
  append_content_from_this_file_while_notifying_the_user_as_well(_)
  # ======================================================================= #
  # === lang_rc
  # ======================================================================= #
  _ = target_dir+'lang_rc'
  append_content_from_this_file_while_notifying_the_user_as_well(_)
  # ======================================================================= #
  # === system_rc
  # ======================================================================= #
  _ = target_dir+'system_rc'
  append_content_from_this_file_while_notifying_the_user_as_well(_)
  # ======================================================================= #
  # Next, add the others via batch-processing:
  # ======================================================================= #
  %w(
    compile_rc
    file_information_rc
    german_umlaute_rc
    gnome_rc
    kde_rc
    kernel_rc
    ldflags_rc
    network_rc
    pkgconfig_rc
    ps1_rc
    system_settings_rc
    programs_aliases_rc
    term_rc
    video_rc
    cd_aliases_rc
  ).each {|entry|
    _ = target_dir+entry
    append_content_from_this_file_while_notifying_the_user_as_well(_)
  }
  # ======================================================================= #
  # === cd_aliases_rc
  #
  # Before the cd-aliases files can be added, we need to source the
  # other environment variables, such as $UNI_WIEN. These come from
  # roeberia_settings_rc, so roeberia_settings_rc must exist prior
  # to that.
  # ======================================================================= #
  _ = target_dir+'cd_aliases_rc'
  append_content_from_this_file_while_notifying_the_user_as_well(_)
end

#append_content_from_this_file_while_notifying_the_user_as_well(i) ⇒ Object

#

append_content_from_this_file_while_notifying_the_user_as_well

#


146
147
148
149
150
151
152
153
154
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 146

def append_content_from_this_file_while_notifying_the_user_as_well(i)
  if File.exist? i
    notify_the_user_that_this_file_will_be_appended_next(i)
    add(
      readlines_without_comments(i).join
    )
    add_newline # For nicer separation.
  end
end

#append_default_pathObject

#

append_default_path

This is not really necessary most of the time on my home system, hence why it is currently not in use.

#


124
125
126
127
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 124

def append_default_path
  add 'export PATH=/System/Index/bin/:/usr/bin/:/usr/sbin/:/bin/:/sbin/:/usr/local/bin/'
  add_newline
end

#generate_shell_fileObject

#

generate_shell_file

#


237
238
239
240
241
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 237

def generate_shell_file
  into = @into
  opne "#{rev}Now storing into the file `#{sfile(into)}`."
  write_what_into(@what, into)
end

#introduction_to_this_class_for_the_userObject

#

introduction_to_this_class_for_the_user

#


50
51
52
53
54
55
56
57
58
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 50

def introduction_to_this_class_for_the_user
  opnn { :no_trailing }
  e
  e 'Next generating a really large .sh file (at the least '+
    royalblue('1.7 MB in size')+').'
  e
  e 'This functionality depends on the rcfiles gem.'
  e 'First, we will (silently) generate the rcfiles.'
end

#notify_the_user_that_this_file_will_be_appended_next(i) ⇒ Object

#

notify_the_user_that_this_file_will_be_appended_next

#


132
133
134
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 132

def notify_the_user_that_this_file_will_be_appended_next(i)
  e '  - appending the file '+sfile(i)+' next (without comments)'
end

#readlines_without_comments(i) ⇒ Object

#

readlines_without_comments

#


139
140
141
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 139

def readlines_without_comments(i)
  File.readlines(i).reject {|line| line.start_with?('#') }
end

#resetObject

#

reset (reset tag)

#


40
41
42
43
44
45
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 40

def reset
  super()
  infer_the_namespace
  @what = ''.dup
  @into = 'big_aggregate_shell_file.sh'
end

#runObject

#

run (run tag)

#


71
72
73
74
75
76
77
78
79
80
81
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 71

def run
  introduction_to_this_class_for_the_user
  silently_generate_the_rcfiles
  e
  e 'Next, hoping that everything has been going well, we will create this'
  e 'colossal '+slateblue('.sh')+' file.'
  e
  aggregate_the_existing_rc_files
  try_to_append_roeberia_sh
  generate_shell_file
end

#silently_generate_the_rcfilesObject

#

silently_generate_the_rcfiles

#


63
64
65
66
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 63

def silently_generate_the_rcfiles
  require 'rcfiles'
  Rcfiles.run { :be_quiet }
end

#try_to_append_roeberia_shObject

#

try_to_append_roeberia_sh

#


86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/roebe/classes/generate_master_shell_script.rb', line 86

def try_to_append_roeberia_sh
  _ = ENV['USERS'].to_s+'/x/DATA/PC/OS/LINUX/SHELL/SCRIPTS/roeberia.sh'
  e 'Next, the file at '+sfile(_)+' will be appended if it exists.'
  if File.exist? _
    add(
      File.read(_)
    )
    add_newline
  else
    e 'Alas, it does not exist, so nothing can be appended.'
  end
end