Class: RBT::InstallGlibSchema

Inherits:
Base show all
Defined in:
lib/rbt/utility_scripts/install_glib_schema.rb

Overview

RBT::InstallGlibSchema

Constant Summary collapse

DEFAULT_PROGRAM_NAME =
#

DEFAULT_PROGRAM_NAME

#
'evince'
:symlink
RELATIVE_TARGET_TO_SCHEMA_FILES =
#

RELATIVE_TARGET_TO_SCHEMA_FILES

This String here can be used to find the relatve target directory for schema files.

#
'share/glib-2.0/schemas/'
FHS_TARGET_DIRECTORY_FOR_GLIB =
#

FHS_TARGET_DIRECTORY_FOR_GLIB

This should point to the main directory for where the glib-schema files are normally stored, on a FHS-conforming system.

This is usually a directory such as ‘/usr/share/glib-2.0/schemas/’.

#
"/usr/#{RELATIVE_TARGET_TO_SCHEMA_FILES}"

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(i = nil, run_already = true) ⇒ InstallGlibSchema

#

initialize

#


75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/rbt/utility_scripts/install_glib_schema.rb', line 75

def initialize(
    i           = nil,
    run_already = true
  )
  reset
  set_input(i)
  # ======================================================================= #
  # === Handle blocks next
  # ======================================================================= #
  if block_given?
    yielded = yield
    case yielded
    # ===================================================================== #
    # === :do_symlink
    # ===================================================================== #
    when :do_symlink
      @copy_the_schema_files_or_symlink_the_schema_files = :symlink
    # ===================================================================== #
    # === :do_copy
    # ===================================================================== #
    when :do_copy
      @copy_the_schema_files_or_symlink_the_schema_files = :copy
    end
  end
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

RBT::InstallGlibSchema[]

#


259
260
261
# File 'lib/rbt/utility_scripts/install_glib_schema.rb', line 259

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

Instance Method Details

#appdir_schema_directory?Boolean

#

appdir_schema_directory?

#

Returns:

  • (Boolean)


153
154
155
# File 'lib/rbt/utility_scripts/install_glib_schema.rb', line 153

def appdir_schema_directory?
  "#{programs_dir?}#{upcased_program_name?}/Current/share/glib-2.0/schemas/"
end
#
#


160
161
162
# File 'lib/rbt/utility_scripts/install_glib_schema.rb', line 160

def copy_or_symlink
  @copy_the_schema_files_or_symlink_the_schema_files.to_s
end
#

This method will copy the relative .gschema.xml files. We will also symlink enums.xml files though, because that is required e. g. for the program “epiphany”.

The optional argument is, as the name implies, optional. If it is given and of the Symbol :be_verbose, then we will also notify the user about what we will be doing next.

#


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
233
234
235
236
237
238
239
240
241
242
243
244
245
246
# File 'lib/rbt/utility_scripts/install_glib_schema.rb', line 202

def copy_or_symlink_the_schema_xml_files(
    optional_argument = nil
  )
  target_dir = appdir_schema_directory?
  all_xml_files = Dir["#{target_dir}*.xml"]
  gscheme_file = "#{target_dir}gschema.dtd"
  # ======================================================================= #
  # The next line is, sort of, an exception for glib itself.
  # ======================================================================= #
  if File.exist? gscheme_file
    all_xml_files << gscheme_file
  end
  # ======================================================================= #
  # We only copy .xml files if they actually do happen to exist.
  # ======================================================================= #
  unless all_xml_files.empty?
    @are_there_any_xml_files = true
    if optional_argument
      case optional_argument
      # =================================================================== #
      # === :be_verbose
      # =================================================================== #
      when :be_verbose
        opne "We will next #{sfancy(copy_or_symlink)} all .xml "\
             "files from `#{sdir(target_dir)}`."
        opne "into `#{sdir(FHS_TARGET_DIRECTORY_FOR_GLIB)}`."
      end
    end
    # ===================================================================== #
    # Obtain all .xml files next.
    # ===================================================================== #
    all_xml_files.each {|this_schema_file|
      new_target_file = FHS_TARGET_DIRECTORY_FOR_GLIB+
                        File.basename(this_schema_file)
      # =================================================================== #
      # Delete the target file if we are in "symlink mode".
      # =================================================================== #
      delete(new_target_file) if symlink_mode?
      copy_or_symlink_this_file(
        this_schema_file,
        new_target_file
      )
    }
  end
end
#
#


174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/rbt/utility_scripts/install_glib_schema.rb', line 174

def copy_or_symlink_this_file(
    from, to
  )
  case @copy_the_schema_files_or_symlink_the_schema_files
  # ======================================================================= #
  # === :symlink
  # ======================================================================= #
  when :symlink
    symlink_file(from, to)
  # ======================================================================= #
  # === :copy
  # ======================================================================= #
  when :copy
    copy_file(from, to)
  end
end

#input?Boolean Also known as: upcased_program_name?

#

input?

#

Returns:

  • (Boolean)


138
139
140
# File 'lib/rbt/utility_scripts/install_glib_schema.rb', line 138

def input?
  @input
end

#resetObject

#

reset (reset tag)

#


105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/rbt/utility_scripts/install_glib_schema.rb', line 105

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @are_there_any_xml_files
  # ======================================================================= #
  @are_there_any_xml_files = false
  # ======================================================================= #
  # === @copy_the_schema_files_or_symlink_the_schema_files
  # ======================================================================= #
  @copy_the_schema_files_or_symlink_the_schema_files =
    COPY_THE_SCHEMA_FILES_OR_SYMLINK_THE_SCHEMA_FILES
end

#runObject

#

run (run tag)

#


251
252
253
254
# File 'lib/rbt/utility_scripts/install_glib_schema.rb', line 251

def run
  copy_or_symlink_the_schema_xml_files(:be_verbose)
  run_glib_compile_schemas_command if @are_there_any_xml_files
end

#run_glib_compile_schemas_commandObject

#

run_glib_compile_schemas_command

#


145
146
147
148
# File 'lib/rbt/utility_scripts/install_glib_schema.rb', line 145

def run_glib_compile_schemas_command
  _ = "glib-compile-schemas #{FHS_TARGET_DIRECTORY_FOR_GLIB}"
  esystem _
end

#set_input(i = DEFAULT_PROGRAM_NAME) ⇒ Object

#

set_input

#


122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/rbt/utility_scripts/install_glib_schema.rb', line 122

def set_input(
    i = DEFAULT_PROGRAM_NAME
  )
  i = i.first if i.is_a? Array
  i = DEFAULT_PROGRAM_NAME if i.nil?
  i = i.to_s.dup
  if i.include? '/'
    i = File.basename(i)
  end
  i.capitalize!
  @input = i
end
#
#

Returns:

  • (Boolean)


167
168
169
# File 'lib/rbt/utility_scripts/install_glib_schema.rb', line 167

def symlink_mode?
  copy_or_symlink == 'symlink'
end