Class: RBT::Cookbooks::Homepage

Inherits:
Base show all
Defined in:
lib/rbt/cookbooks/homepage/homepage.rb

Overview

RBT::Cookbooks::Homepage

Constant Summary collapse

MODIFY_THE_XORG_BUFFER_IF_A_HOMEPAGE_ENTRY_EXISTS =
#

MODIFY_THE_XORG_BUFFER_IF_A_HOMEPAGE_ENTRY_EXISTS

If the following constant is set to true then we will also try to modify the xorg buffer.

#
true

Constants inherited from LeanPrototype

LeanPrototype::ALL_COLOUR_METHODS, LeanPrototype::ARRAY_KDE_KONSOLE_COLOURS_IN_USE, LeanPrototype::DAY_NAMES, LeanPrototype::NAMESPACE, LeanPrototype::SILENT_REDIRECTION

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#cat, #cd_back_to_the_current_working_directory, #consider_reporting_how_many_programs_are_registered, #cookbook_files?, #copy_recursively, #delete_code_of_conduct?, #determine_appdir_prefix_from_this_input, #directory_validation?, #do_not_show_names, #fast_return_file_size_of_this_program, #file_last_symlinked_program?, #file_programs_version_url, #gem_version, #is_a_64bit_system?, #is_ccache_available?, #is_porg_available?, #is_this_binary_registered?, #is_this_program_included?, #make_command?, #make_install_command?, #new_cookbook_instance_for, #program_exists?, #publish_list_of_all_programs_version, #rcp, registered_binaries?, #remove_symlink, #rename_kde_konsole_tab, #repackage, #report_n_programs, #report_working_directory, #return_compile_time_statistics, #return_n_random_characters, #return_version_of_this_program, #run_make_then_make_install, #sanitize_url1_entry, #set_source_directory, #show_overview_over_available_utility_scripts, #symlink_all_files_from_this_directory_to_that_directory, #system_tags?, #upload_list_of_all_programs_version, #use_yaml_database_for_tags?, #warn_and_exit, #wget

Methods inherited from LeanPrototype

#a_or_an?, #abbreviations?, #absolute_path, #action, #add_to_the_commandline_arguments, #all_binaries?, #all_files_from, #all_libraries?, #allowed_cookbook_entries?, #appdir_location_of?, #append_onto_the_internal_hash, #append_what_into, #archive_type_of?, #available_programs?, #be_quiet?, #be_verbose?, #begins_with_a_comment?, #capitalize_first_alphabetical_character, #cd_to_the_log_directory, #cd_to_the_temp_directory, #change_directory, #change_permission, #cheering_person?, #chmod, #chop_off_archive, #clear_commandline_arguments, #cliner, #coloured_and_padded_e, #coloured_and_padded_esystem, #coloured_esystem, #colourize_directory_for_system_results, #colourize_this_error, #colourize_this_file_path, #colourize_this_warning, #commandline_arguments?, #commandline_arguments_without_hyphens?, #comment, #convert_dd_mm_yyyy_to_its_long_variant, #convert_env_variable, #copy_directory, #copy_files, #cpr, #create_directory, #current_hour?, #dd_mmm_yyy, #debug, #debug?, #directory_expanded_cookbooks?, #disable_colours, #display_md5sum?, #do_not_debug, #does_the_cookbook_include_this_program?, #does_this_expanded_cookbook_file_exist_for_this_program?, #does_this_file_exist?, #does_this_file_exist_and_is_it_a_file?, #e, #eblue, #ecomment, #ecrimson, #edir, #editor?, #efancy, #eimp, #enable_colours, #enable_debug, #ensure_main_encoding_for, #eparse, #esystem, #esystem_gold, #etomato, #ewarn, #exit_program, #expanded_cookbooks_directory_exists?, #extract_this_archive, #extract_to?, #file_compiled_programs?, #file_dirname_retaining_trailing_slash, #file_predefined_installation_instructions?, #file_specification_of_registered_cookbook_entries, #find_cookbook_alias_for, #find_this_yaml_file, #first_argument?, #first_non_hyphen_argument?, #get_all_directories_from, #get_all_files_from, #get_all_programs, #get_date, #get_extended_date, #get_files_and_directories_from, #go_to_base_dir, #home_dir?, #host_system?, #infer_the_namespace, #internal_hash?, #internal_hash_set_commandline_arguments, #is_an_archive?, #is_directory?, #is_file?, #is_github_url?, #is_make_available?, #is_meson_installed?, #is_on_gobolinux?, #is_on_windows?, #is_roebe?, #is_superuser?, #is_symlink?, #is_this_a_header?, #is_this_a_library?, #is_this_program_included?, #iso_encoding?, #load_dataset_from_this_expanded_cookbook, #load_yaml, #load_yaml_file_from_the_cookbook_directory_for_this_program, #log_directory?, #main_encoding?, #meson_build_file_exists?, #months?, #move_file, #n_programs_are_available?, #n_programs_available?, #namespace?, #no_directory_exists_at, #no_directory_was_found_at, #no_opn, #no_such_file_exists, #open_in_browser, #open_in_editor, #opncomment, #opne, #opnef, #opnerev, #opnerror, #opnesystem, #opnewarn, #opnfancy, #opnn, #otomato, #packages_directory?, #path_to_this_expanded_cookbooks_dataset, #pkgconfig_directory?, #populate_the_internal_hash_with_default_values, #predefined_installation_instructions?, #prepend_this_commandline_argument, #program_version_of?, #project_base_directory?, #project_yaml_directory?, #query_path?, #rarrow?, #read_file, #read_file_in_default_encoding, #read_file_with_default_encoding, #readlines, #readlines_with_proper_encoding, #register_sigint, #registered_cookbook_entries?, #remove, #remove_archive_from_the_end, #remove_comments_from_each_line, #remove_directory, #remove_double_slashes, #remove_file, #remove_newlines, #remove_parens, #remove_symlink, #remove_the_first_commandline_argument, #remove_this_commandline_argument, #remove_this_entry_from_the_commandline_arguments, #remove_trailing_ANSII_escape_code, #remove_unnecessary_data_from_url, #rename, #report_pwd, #require_the_rbt_aliases, #reset_the_internal_hash, #return_all_archives_from_this_directory, #return_appdir_prefix, #return_commandline_arguments_with_leading_hyphens, #return_current_hour_minutes_second, #return_date, #return_day_of_the_month_based_on_utc, #return_full_time, #return_hours_minutes_seconds_based_on_utc, #return_location_to_this_programs_yaml_file, #return_month_based_on_this_number, #return_month_based_on_utc, #return_opnn, #return_program_name, #return_program_name_for_gobolinux_systems, #return_program_name_via_program_information, #return_pwd, #return_unicode_warning_symbol_or_empty_string, #return_utc, #return_utc_time_in_a_format_similar_to_slackware, #return_weekday_based_on_utc, #return_year_based_on_utc, #rev, #rpn, #run_simulation=, #run_simulation?, #sdir, #sdir_return_pwd, #set_be_silent, #set_be_verbose, #set_first_commandline_argument, #set_namespace, #set_use_colours, #set_use_opn, #set_xorg_buffer, #sfancy, #sfile, #silent_redirection?, #silently_create_this_directory_if_it_does_not_yet_exist, #simp, #source_base_directory?, #ssym, #stderr, #store_into_this_directory?, #string_right_arrow?, #swarn, #symlink, #sysbin_directory?, #sysetc_directory?, #sysinclude_directory?, #syslib_directory?, #sysshare_directory?, #system_directory?, #temp_directory?, #to_bool, #to_camelcase, #to_iso_encoding, #to_unicode, #today?, #touch, #try_to_require_beautiful_url, #try_to_require_the_environment_information_gem, #try_to_require_the_extracter_gem, #try_to_require_the_open_gem, #try_to_require_the_xorg_buffer, #try_to_require_wget, #try_to_return_a_special_compile_component, #unicode_cliner, #unicode_middle_cliner, #use_colours=, #use_colours?, #use_opn=, #use_opn?, #utf_encoding?, #verbose_truth, #word_wrap, #write_what_into, #write_what_into_via_unicode, #yes_or_no

Constructor Details

#initialize(this_program = ARGV.first, optional_use_this_dataset = nil, run_already = true) ⇒ Homepage

#

initialize

#


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
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 41

def initialize(
    this_program              = ARGV.first,
    optional_use_this_dataset = nil,
    run_already               = true
  )
  reset
  set_this_program(
    this_program
  )
  determine_the_dataset_to_use(
    optional_use_this_dataset
  )
  # ======================================================================= #
  # === Handle blocks given to this class
  # ======================================================================= #
  if block_given?
    yielded = yield
    case yielded
    # ===================================================================== #
    # === :be_quiet
    # ===================================================================== #
    when :be_quiet
      be_quiet
    end
  end
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

RBT::Cookbooks::Homepage[]

#


289
290
291
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 289

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

Instance Method Details

#consider_opening_the_url_to_the_homepage_in_the_browserObject

#

consider_opening_the_url_to_the_homepage_in_the_browser

#


259
260
261
262
263
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 259

def consider_opening_the_url_to_the_homepage_in_the_browser
  if is_on_roebe? and be_verbose?
    open_in_browser(return_homepage)
  end
end

#dataset?Boolean

#

dataset?

#

Returns:

  • (Boolean)


195
196
197
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 195

def dataset?
  @dataset
end

#determine_the_dataset_to_use(i = nil) ⇒ Object

#

determine

#


268
269
270
271
272
273
274
275
276
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 268

def determine_the_dataset_to_use(i = nil)
  if i.nil?
    @dataset = action(:SanitizeCookbook, which_program?) {
      :fast_and_be_verbose
    }
  else
    @dataset = i
  end
end

#make_sure_that_the_cookbook_class_is_availableObject

#

make_sure_that_the_cookbook_class_is_available

#


92
93
94
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 92

def make_sure_that_the_cookbook_class_is_available
  require 'rbt/requires/require_the_cookbook_class.rb'
end
#

menu (menu tag)

#


116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 116

def menu(i)
  if i.is_a? Array
    i.each {|entry| menu(entry) }
  else
    case i # case tag
    # ===================================================================== #
    # === homepage --help
    # ===================================================================== #
    when /^-?-?help$/
      show_help
      exit
    # ===================================================================== #
    # === homepage --missing-url?
    # ===================================================================== #
    when /^-?-?missing(-|_)?url\??$/,
         /^-?-?missing$/
      show_all_programs_that_miss_a_homepage_entry
      exit
    end
  end
end

#modify_the_xorg_buffer_if_a_homepage_entry_exists?Boolean Also known as: modify_the_xorg_buffer?

#

modify_the_xorg_buffer_if_a_homepage_entry_exists

#

Returns:

  • (Boolean)


85
86
87
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 85

def modify_the_xorg_buffer_if_a_homepage_entry_exists?
  @modify_the_xorg_buffer_if_a_homepage_entry_exists
end

#resetObject

#

reset (reset tag)

#


72
73
74
75
76
77
78
79
80
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 72

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @modify_the_xorg_buffer_if_a_homepage_entry_exists
  # ======================================================================= #
  @modify_the_xorg_buffer_if_a_homepage_entry_exists =
    MODIFY_THE_XORG_BUFFER_IF_A_HOMEPAGE_ENTRY_EXISTS
end

#return_homepageObject Also known as: homepage?, result?

#

return_homepage

#


202
203
204
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 202

def return_homepage
  dataset?.homepage?
end

#runObject

#

run (run tag)

#


281
282
283
284
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 281

def run
  report_the_homepage
  consider_opening_the_url_to_the_homepage_in_the_browser
end

#set_this_program(i = '') ⇒ Object

#

set_this_program

#


99
100
101
102
103
104
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 99

def set_this_program(i = '')
  i = i.first if i.is_a? Array
  i = i.to_s.dup
  menu(i)
  @this_program = i
end

#show_all_programs_that_miss_a_homepage_entry(available_programs = available_programs? ) ⇒ Object

#

show_all_programs_that_miss_a_homepage_entry

This method will show all programs that miss a homepage entry.

Invocation example:

homepage --missing-url?
#


148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 148

def show_all_programs_that_miss_a_homepage_entry(
    available_programs = available_programs?
  )
  make_sure_that_the_cookbook_class_is_available
  cliner
  opne "Now working through #{steelblue(available_programs.size)} "\
       "different programs."
  opne "This may take a while, so please be patient."
  cliner
  available_programs.each {|this_program|
    dataset = action(:SanitizeCookbook, this_program) { :be_fast }
    homepage_entry = dataset.homepage?.to_s
    if homepage_entry.empty?
      _ = ("`#{this_program}`").ljust(15)
      opne "#{rev}The program #{sfancy(_)} #{rev}has no "\
           "#{sfancy('homepage: ')} #{rev}entry."
    end
  }
end

#show_helpObject

#

show_help (help tag)

Invoke this entry point via:

homepage --help
#


176
177
178
179
180
181
182
183
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 176

def show_help
  opne 'Currently these options are available for `'+
        sfancy("class #{namespace?}")+'`:'
  e
  e "  --missing-url?      # show which cookbook entries lack "\
    "a proper #{sfancy('homepage: entry')}"
  e
end

#show_homepage_of_this_program(this_program = which_program? ) ⇒ Object Also known as: report_the_homepage

#

show_homepage_of_this_program

#


210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
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
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 210

def show_homepage_of_this_program(
    this_program = which_program?
  )
  if this_program.include? '.yml'
    this_program.delete_suffix!('.yml')
  end
  _ = return_homepage
  if _
    this_program = File.basename(this_program).sub(/\.yml$/,'')
    if _.empty?
      if be_verbose?
        opne "#{rev}No homepage has been registered for the program "\
             "`#{sfancy(this_program)}#{rev}`."
      end 
    else
      # =================================================================== #
      # Else we have found a homepage entry and will display
      # our findings to the end-user.
      #
      # To test this subsection, try:
      #
      #   homepage geany
      #
      # =================================================================== #
      if be_verbose?
        opne "#{rev}The homepage of the program `#{sfancy(this_program)}"\
             "#{rev}` is at:"
        e
        e "  #{orange(_)}"
        e
        if modify_the_xorg_buffer?
          set_xorg_buffer(_)
        end
      end
    end
  else
    if be_verbose?
      opne "No homepage entry is registered in `"+
           "#{sfancy(this_program)}#{rev}` "\
           "(The .yml file should be at "
      opne simp("  #{individual_cookbooks_dir?}#{this_program}.yml")+
            ')'
    end
  end
end

#this_program?Boolean

#

this_program?

#

Returns:

  • (Boolean)


188
189
190
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 188

def this_program?
  @this_program
end

#which_program?Boolean

#

which_program?

#

Returns:

  • (Boolean)


109
110
111
# File 'lib/rbt/cookbooks/homepage/homepage.rb', line 109

def which_program?
  @this_program
end