Class: Roebe::Update

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

Overview

Roebe::Update

Constant Summary collapse

ARCHIVE_DIRECTORY =
#

ARCHIVE_DIRECTORY

#
Roebe.temp_directory?+'MyGems/'

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, #run_in_background, #run_rcfiles_then_run_ata_via_qdbus, #sandybrown, #sdir, #seagreen, #set_be_verbose, #set_xorg_buffer, #sfancy, #sfile, #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(optional_commandline = ARGV) ⇒ Update

#

initialize

#


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/roebe/classes/update.rb', line 25

def initialize(
    optional_commandline = ARGV
  )
  reset
  parse_commandline(optional_commandline)
  create_the_archive_directory
  # ======================================================================= #
  # Next we must determine the base directory. This works ok-ish on my
  # home system, but will fail on windows, so we need to keep this in
  # mind.
  # ======================================================================= #
  base_dir = determine_the_base_directory
  if is_on_windows?
    base_dir = File.absolute_path(Roebe.project_base_directory?+'..')+'/'
  end
  # ======================================================================= #
  # Pull in the main array.
  # ======================================================================= #
  array = install_which_projects? # This array is already sorted.
  array.each_with_index {|entry, index|
    name     = entry
    location = base_dir+entry
    location << '/' unless location.end_with? '/'
    index    = (index+1).to_s
    name = entry if name.empty?
    # ===================================================================== #
    # Display the directory on which we are currently working on.
    # ===================================================================== #
    e
    e "#{rev}#{index}) #{sfancy(name)}#{rev}"\
      ": → Directory is: #{sfancy(location)}"
    e
    cd(location) # Now we must be in the target location.
    case @install_how # case tag
    # ===================================================================== #
    # === iruby --gem
    # ===================================================================== #
    when :gem
      install_in_ruby_gem_manner
    # ===================================================================== #
    # This variant will both install the project itself, using
    # setup.rb, and also via .gem.
    # ===================================================================== #
    when :both
      install_in_ruby_setup_manner
      if also_install_the_gem?
        install_in_ruby_gem_manner(ARCHIVE_DIRECTORY)
      end
      # e 'Press y to continue, otherwise we will exit:'
      # if $stdin.gets.chomp.start_with? 'y'
      # else
      #   exit
      # end
    when :setup, :default
      install_in_ruby_setup_manner
    end
  }
  # ======================================================================= #
  # Next, invoke the post-install subsection. This will expand the
  # cookbook dataset.
  # ======================================================================= #
  PostInstall.run if @shall_we_expand_the_cookbook_dataset
  @end_time = ::Time.now
  show_the_time_it_took
end

Instance Method Details

#also_install_the_gem?Boolean

#

also_install_the_gem?

#

Returns:

  • (Boolean)


147
148
149
# File 'lib/roebe/classes/update.rb', line 147

def also_install_the_gem?
  @also_install_the_gem
end

#create_the_archive_directory(i = ARCHIVE_DIRECTORY) ⇒ Object

#

create_the_archive_directory

This is usually /home/x/Temp/MyGems/.

#


163
164
165
166
167
168
169
170
171
172
173
# File 'lib/roebe/classes/update.rb', line 163

def create_the_archive_directory(
    i = ARCHIVE_DIRECTORY
  )
  if File.directory?(i) 
    # ===================================================================== #
    # Always get rid of it when it exists.
    # ===================================================================== #
    remove_directory(i)
  end
  mkdir(i)
end

#determine_the_base_directoryObject

#

determine_the_base_directory

The following method will determine (and return) the assumed base directory where all ruby files are kept. This normally # uses an environment variable ($RSRC), but in a chrooted # environment that is fresh, such an environment variable may not exist. Thus, in September 2022, the old code that was simply returning the value of that environment variable was modified; it will now return a hardcoded path if the environment variable could not be found.

#


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

def determine_the_base_directory
  _ = "#{ENV['RSRC']}/".to_s.strip
  if _.empty?
    _ = '/home/x/programming/ruby/src/'
  end
  return _
end

#do_also_install_as_a_gem(optional_further_instructions = nil) ⇒ Object

#

do_also_install_as_a_gem

#


264
265
266
267
268
269
270
271
272
273
# File 'lib/roebe/classes/update.rb', line 264

def do_also_install_as_a_gem(
    optional_further_instructions = nil
  )
  case optional_further_instructions
  when :user_install
    @extra_commands = ' --user-install '
    ::Roebe.append_to_gem_install_command(@extra_commands)
  end
  @install_how = :gem
end

#install_in_ruby_gem_mannerObject

#

install_in_ruby_gem_manner

#


222
223
224
# File 'lib/roebe/classes/update.rb', line 222

def install_in_ruby_gem_manner
  ::Roebe.install_in_ruby_gem_manner
end

#install_in_ruby_setup_manner(i = @use_this_binary) ⇒ Object

#

install_in_ruby_setup_manner

This is the equivalent of copying setup.rb, then invoking it via config/setup/install.

#


190
191
192
193
194
# File 'lib/roebe/classes/update.rb', line 190

def install_in_ruby_setup_manner(
    i = @use_this_binary
  )
  ::Roebe.install_in_ruby_setup_manner(i)
end

#install_which_projects?Boolean

#

install_which_projects?

Tell us which projects we will install.

#

Returns:

  • (Boolean)


180
181
182
# File 'lib/roebe/classes/update.rb', line 180

def install_which_projects?
  Roebe::ARRAY_INSTALL_THESE_GEM_PROJECTS
end

#parse_commandline(i) ⇒ Object Also known as: menu

#

parse_commandline

#


229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
# File 'lib/roebe/classes/update.rb', line 229

def parse_commandline(i)
  if i.is_a? Array
    i.each {|entry| parse_commandline(entry) }
  else
    case i # case tag
    # ===================================================================== #
    # === iruby --jruby
    #
    # This is also aliased onto jroebe.
    # ===================================================================== #
    when /-?-?jruby$/
      @use_this_binary = 'jruby'
    # ===================================================================== #
    # === iruby --user-install
    # ===================================================================== #
    when /-?-?user(-|_)?install/
      do_also_install_as_a_gem(:user_install)
    # ===================================================================== #
    # === iruby --gem
    # ===================================================================== #
    when /-?-?gem/
      do_also_install_as_a_gem
    # ===================================================================== #
    # === iruby --help
    # ===================================================================== #
    when /help/
      show_help
      exit
    end
  end
end

#resetObject

#

reset

#


113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/roebe/classes/update.rb', line 113

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @also_install_the_gem
  # ======================================================================= #
  @also_install_the_gem = false # if true then we also install the gem.
  # ======================================================================= #
  # === @install_how
  # ======================================================================= #
  @install_how = :setup
  # ======================================================================= #
  # === @extra_commands
  # ======================================================================= #
  @extra_commands = ''
  # ======================================================================= #
  # === @start_time
  # ======================================================================= #
  @start_time = ::Time.now
  # ======================================================================= #
  # === @shall_we_expand_the_cookbook_dataset
  # ======================================================================= #
  @shall_we_expand_the_cookbook_dataset = false
  # ======================================================================= #
  # === @use_this_binary
  #
  # Permissive values for this variable are "ruby" and "jruby".
  # ======================================================================= #
  @use_this_binary = 'ruby'
end

#show_helpObject

#

show_help (help tag)

To invoke this method, do:

iruby --help
#


204
205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'lib/roebe/classes/update.rb', line 204

def show_help
  _ = install_which_projects?
  e 'This class will install these '+sfancy(_.size)+' projects by default:'
  _.each {|entry|
    e '  '+simp(entry)
  }
  e
  e 'More commandline options are:'
  e
  e '  --gem          # also install the .gem'
  e '  --user-install # install these as gems and also via '\
    'the --user-install option'
  e
end

#show_the_time_it_tookObject

#

show_the_time_it_took

#


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

def show_the_time_it_took
  @took_this_time = @end_time - @start_time
  if be_verbose?
    opne "#{rev}This took #{steelblue(@took_this_time.round(2).to_s)} "\
         "#{rev}seconds."
  end
end

#took_this_time?Boolean

#

took_this_time?

#

Returns:

  • (Boolean)


154
155
156
# File 'lib/roebe/classes/update.rb', line 154

def took_this_time?
  @took_this_time
end