Class: Roebe::DoskeyGenerator

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

Overview

Roebe::DoskeyGenerator

Constant Summary collapse

ARRAY_SKIP_THESE_ENTRIES =
#

ARRAY_SKIP_THESE_ENTRIES

Here you can add entries that should be skipped/ignored.

#
%w(
  doskey
  irb
  notepad
  ruN
)
RUBY_AT_USR_BIN =
#

RUBY_AT_USR_BIN

#
"ruby c:\\usr\\bin\\"

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, #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, #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) ⇒ DoskeyGenerator

#

initialize

#


48
49
50
51
52
53
54
55
# File 'lib/roebe/classes/doskey_generator.rb', line 48

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

Instance Method Details

#do_replace_global_variables_in_the_autogenerated_file(into = @save_into_this_file) ⇒ Object

#

do_replace_global_variables_in_the_autogenerated_file

#


95
96
97
98
99
100
# File 'lib/roebe/classes/doskey_generator.rb', line 95

def do_replace_global_variables_in_the_autogenerated_file(
    into = @save_into_this_file
  )
  require 'roebe/classes/replace_global_variables_in_this_file.rb'
  Roebe::ReplaceGlobalVariablesInThisFile.new(into) { :be_quiet }
end

#load_yaml_dataset_from_file_aliasesObject

#

load_yaml_dataset_from_file_aliases

#


74
75
76
# File 'lib/roebe/classes/doskey_generator.rb', line 74

def load_yaml_dataset_from_file_aliases
  YAML.load_file(Rcfiles.file_aliases)
end

#load_yaml_dataset_from_file_cd_aliasesObject

#

load_yaml_dataset_from_file_cd_aliases

#


88
89
90
# File 'lib/roebe/classes/doskey_generator.rb', line 88

def load_yaml_dataset_from_file_cd_aliases
  YAML.load_file(Rcfiles.file_cd_aliases)
end

#load_yaml_dataset_from_file_programs_aliasesObject

#

load_yaml_dataset_from_file_programs_aliases

#


81
82
83
# File 'lib/roebe/classes/doskey_generator.rb', line 81

def load_yaml_dataset_from_file_programs_aliases
  YAML.load_file(Rcfiles.file_programs_aliases)
end

#resetObject

#

reset

#


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

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @save_into_this_file
  #
  # Designate into the file we will save the generated aliases.
  # ======================================================================= #
  @save_into_this_file = 'doskey.md'
end

#return_dataset_from_the_file_aliases_as_a_stringObject

#

return_dataset_from_the_file_aliases_as_a_string

#


119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/roebe/classes/doskey_generator.rb', line 119

def return_dataset_from_the_file_aliases_as_a_string
  _ = ''.dup
  load_yaml_dataset_from_file_aliases.each_pair {|key, value|
    modified_key   = key.to_s.delete('"').delete("'").strip
    modified_value = value.to_s.delete('"').delete("'").strip
    next if ARRAY_SKIP_THESE_ENTRIES.include? modified_key
    if modified_value.start_with? 'rb -r'
      modified_value.sub!(/^rb -r/,'ruby -r')
      if modified_value.end_with? ' &'
        modified_value.sub!(/ &/,'')
      end
      modified_value << ' $*' # Trying this since as of 21.08.2021.
    end
    unless modified_key.start_with?('CD') # This is an ad-hoc fix for windows, if doskey is used.
      _ << "#{modified_key}=#{modified_value}\n"
    end
  }
  return _
end

#return_dataset_from_the_file_cd_aliases_as_a_stringObject

#

return_dataset_from_the_file_cd_aliases_as_a_string

#


105
106
107
108
109
110
111
112
113
114
# File 'lib/roebe/classes/doskey_generator.rb', line 105

def return_dataset_from_the_file_cd_aliases_as_a_string
  _ = ''.dup
  load_yaml_dataset_from_file_cd_aliases.each_pair {|key, value|
    modified_key   = key.to_s.delete('"').delete("'").strip
    modified_value = value.to_s.delete('"').delete("'").strip
    next if ARRAY_SKIP_THESE_ENTRIES.include? modified_key
    _ << "#{modified_key}=#{modified_value}\n"
  }
  return _
end

#runObject

#

run (run tag)

#


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

def run
  _ = ''.dup # We will dump onto that String.
  # ======================================================================= #
  # === cd_aliases
  # ======================================================================= #
  if File.exist? Rcfiles.file_cd_aliases
    _ << return_dataset_from_the_file_cd_aliases_as_a_string
  end
  # ======================================================================= #
  # === file_aliases
  # ======================================================================= #
  if File.exist? Rcfiles.file_aliases
    _ << return_dataset_from_the_file_aliases_as_a_string
  end
  # ======================================================================= #
  # === programs_aliases
  #
  # This entry point handles aliases to programs.
  # ======================================================================= #
  if File.exist? Rcfiles.file_programs_aliases
    load_yaml_dataset_from_file_programs_aliases.each_pair {|key, value|
      modified_key   = key.to_s.delete('"').delete("'").strip
      next if ARRAY_SKIP_THESE_ENTRIES.include? modified_key
      case modified_key
      when /^-?-?ingrid(_|-)?email\??/ # Don't do anything for these variants.
      when /^copy$/ # The "copy" command already exists on windows as-is, so don't use it again.
        # Skip these entries here and do nothing.
      else
        modified_value = value.to_s.delete('"').delete("'").strip
        modified_value = modified_value.dup if modified_value.frozen?
        # ================================================================= #
        # Files that exist at /usr/bin/ are assumed to have a corresponding
        # .exe file on windows. This explains why the ruby-at-usr-bin
        # modification will be done next.
        # ================================================================= #
        if File.exist?('/usr/bin/'+modified_value) and
          is_this_a_ruby_file?('/usr/bin/'+modified_value)
          # =============================================================== #
          # We also check for the end pattern in use.
          # =============================================================== #
          unless modified_value.end_with? ' $*'
            modified_value << ' $*'
          end
          modified_value = RUBY_AT_USR_BIN+modified_value+' '
          if modified_value.include? ' & $*'
            modified_value.sub!(/ &/,'')
          end
        end unless modified_value.empty?
        if modified_value.end_with? ' &'
          modified_value.sub!(/ &/,'')
          modified_value << ' $*' # Argument-style for windows cmd.exe.
        end
        if modified_value.end_with?('.rb') or
           modified_value.include?('.rb')
          modified_value.prepend('ruby ') unless modified_value.start_with?('ruby ')
        end
        _ << "#{modified_key}=#{modified_value}\n"
      end
    }
  end
  opne "Storing into `#{sfile(@save_into_this_file)}`."
  File.delete(@save_into_this_file) if File.exist? @save_into_this_file
  write_what_into(_, @save_into_this_file)
  # ======================================================================= #
  # Next we will replace all global variables in the autogenerated
  # file. This must be accurate, as otherwise we will end up with
  # garbage values.
  # ======================================================================= #
  do_replace_global_variables_in_the_autogenerated_file(@save_into_this_file)
  # ======================================================================= #
  # Finally, add some more special-rules. This is not elegant, but for
  # now it seems simpler to just work around the problem rather than fix
  # it properly. :P
  # ======================================================================= #
  clear_these_entries = %w( cd dir )
  clear_these_entries.each {|this_entry|
    append_what_to(
      "#{this_entry}=\n", @save_into_this_file
    )
  }
  opne 'Done!'
end