Class: RBT::CreateSnapcraftFile

Inherits:
Base show all
Defined in:
lib/rbt/generate_files/create_snapcraft_file.rb

Overview

RBT::CreateSnapcraftFile

Constant Summary

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_options, #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_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_opn, #no_such_file_exists, #open_in_browser, #open_in_editor, #opncomment, #opne, #opnef, #opnerev, #opnerror, #opnesystem, #opnewarn, #opnfancy, #opnn, #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_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_information, #return_program_name_for_gobolinux_systems, #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, #run_simulation=, #run_simulation?, #sdir, #sdir_return_pwd, #set_be_silent, #set_be_verbose, #set_first_commandline_argument, #set_namespace, #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(program_name = nil, run_already = true) ⇒ CreateSnapcraftFile

#

initialize

#


38
39
40
41
42
43
44
45
46
47
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 38

def initialize(
    program_name = nil,
    run_already  = true
  )
  reset
  set_program_name(
    program_name
  )
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

RBT::CreateSnapcraftFile[]

#


423
424
425
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 423

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

Instance Method Details

#add(i = '', add_newline = true) ⇒ Object

#

add (add tag)

Add onto the main string through this method.

#


116
117
118
119
120
121
122
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 116

def add(
    i           = '',
    add_newline = true
  )
  @snapcraft_file_content << i
  @snapcraft_file_content << N if add_newline
end

#add_appsObject

#

add_apps (apps tag)

This refers essentially to the binaries of a program.

#


375
376
377
378
379
380
381
382
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 375

def add_apps
  _ = "apps:\n".dup
  binaries?.each {|this_binary|
    _ << " #{this_binary}:\n"
    _ << "  command: bin/#{this_binary}\n"
  }
  add(_)
end

#add_confinement(use_this_confinement = 'strict') ⇒ Object

#

add_confinement

Confinement describes the level of confinement that can be applied to the given app.

Can be either ‘devmode’ or ‘strict’.

Unconfined applications, specified with ‘devmode’, can only be released to the hidden “edge” channel.

#


206
207
208
209
210
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 206

def add_confinement(
    use_this_confinement = 'strict'
  )
  add('confinement: '+use_this_confinement)
end

#add_everythingObject

#

add_everything

#


387
388
389
390
391
392
393
394
395
396
397
398
399
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 387

def add_everything
  add_name
  add_program_version
  add_program_summary
  add_program_licence
  add_program_description
  add_the_proper_base
  add_grade
  add_confinement
  add_newline
  add_apps
  add_parts
end

#add_grade(use_this_grade = 'stable') ⇒ Object

#

add_grade (grade tag)

The grade can be ‘devel’ or ‘stable’. Only stable will be used for release into candidate/stable channels.

#


189
190
191
192
193
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 189

def add_grade(
    use_this_grade = 'stable'
  )
  add("grade: #{use_this_grade}")
end

#add_nameObject

#

add_name

#


169
170
171
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 169

def add_name
  add('name: '+short_name?)
end

#add_newlineObject

#

add_newline

This method will simply add a newline to the snapcraft file.

#


129
130
131
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 129

def add_newline
  add
end

#add_partsObject

#

add_parts (parts tag)

This method denotes the necessary parts (components) of our program at hand.

#


280
281
282
283
284
285
286
287
288
289
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 280

def add_parts
  heredoc_variable = <<-EOF
parts:
 #{name_of_this_individual_program?}:
# See 'snapcraft plugins' for more information.
plugin: #{plugin_type?}
source: #{remote_url?}
EOF
  add(heredoc_variable)
end

#add_program_descriptionObject

#

add_program_description (desc tag)

#


332
333
334
335
336
337
338
339
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 332

def add_program_description
  description_to_use = "description: |#{N}".dup
  _ = @dataset.description?
  _.split(N).each {|line|
    description_to_use << ' '+line+N
  }
  add(description_to_use.strip.chomp)
end

#add_program_licenceObject

#

add_program_licence

#


229
230
231
232
233
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 229

def add_program_licence
  if licence?
    add("license: #{licence?}")
  end
end

#add_program_summaryObject

#

add_program_summary

#


222
223
224
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 222

def add_program_summary
  add('summary: |'+N+' '+short_desc?)
end

#add_program_versionObject

#

add_program_version (version tag)

#


215
216
217
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 215

def add_program_version
  add("version: '#{program_version?}'")
end

#add_the_proper_baseObject

#

add_the_proper_base

This will add a String such as:

'base: core18'

The base keyword declares which base snap to use with your project. A base snap is a special kind of snap that provides a run-time environment alongside a minimal set of libraries that are common to most applications.

For more documentation see:

https://snapcraft.io/docs/ruby-applications
#


324
325
326
327
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 324

def add_the_proper_base
  add('base: core18')
  add_newline
end

#binaries?Boolean

#

binaries?

#

Returns:

  • (Boolean)


294
295
296
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 294

def binaries?
  @dataset.binaries?
end

#generate_the_snapcraft_file(into = into? ) ⇒ Object

#

generate_the_snapcraft_file

#


361
362
363
364
365
366
367
368
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 361

def generate_the_snapcraft_file(
    into = into?
  )
  what = what?
  remove_file(into) if File.exist? into
  opne "Now saving the content into the file `#{sfile(into)}`."
  write_what_into(what, into)
end

#into?Boolean

#

into?

Where to store into - a file.

#

Returns:

  • (Boolean)


107
108
109
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 107

def into?
  @internal_hash[:store_into_this_file]
end

#licence?Boolean

#

licence?

#

Returns:

  • (Boolean)


249
250
251
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 249

def licence?
  @dataset.licence?
end

#name_of_this_individual_program?Boolean

#

name_of_this_individual_program?

#

Returns:

  • (Boolean)


263
264
265
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 263

def name_of_this_individual_program?
  @name_of_this_individual_program
end

#notify_the_user_that_we_will_create_a_new_snapcraft_file_next(_ = programs? ) ⇒ Object

#

notify_the_user_that_we_will_create_a_new_snapcraft_file_next

#


344
345
346
347
348
349
350
351
352
353
354
355
356
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 344

def notify_the_user_that_we_will_create_a_new_snapcraft_file_next(
    _ = programs?
  )
  result = 'Creating a snapcraft file next for the program'.dup
  if _.is_a?(Array) and (_.size > 1)
    result << 's'
  end
  if _.is_a? Array
    _ = _.join(', ').strip
  end
  result << " called #{royalblue(_)}."
  opne result
end

#plugin_type?Boolean

#

plugin_type?

This is currently hardcoded.

#

Returns:

  • (Boolean)


303
304
305
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 303

def plugin_type?
  'autotools'
end

#program_name?Boolean Also known as: programs?

#

program_name?

#

Returns:

  • (Boolean)


143
144
145
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 143

def program_name?
  @program_name
end

#program_version?Boolean

#

program_version?

#

Returns:

  • (Boolean)


162
163
164
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 162

def program_version?
  @dataset.program_version?
end

#remote_url?Boolean

#

remote_url?

#

Returns:

  • (Boolean)


256
257
258
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 256

def remote_url?
  @dataset.remote_url?
end

#resetObject

#

reset (reset tag)

#


52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 52

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @snapcraft_file_content
  #
  # The following instance variable, a String, is the one that is used
  # to store all content that will be written into the snapcraft yaml
  # file. It will be used to store the file in the current directory.
  # ======================================================================= #
  @snapcraft_file_content = ''.dup
  # ======================================================================= #
  # === :store_into_this_file
  #
  # Denote into which file we will store that content.
  # ======================================================================= #
  @internal_hash[:store_into_this_file] = 'snapcraft.yaml' 
end

#runObject

#

run (run tag)

#


404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 404

def run
  programs?.each {|this_program|
    reset
    try_to_find_corresponding_program(this_program) # <- Must come first as it sets the @dataset variable.
    set_name_of_this_individual_program(this_program)
    set_store_into_this_file(
      this_program+'-'+program_version?+'-snapcraft'
    )
    notify_the_user_that_we_will_create_a_new_snapcraft_file_next(
      this_program
    )
    add_everything
    generate_the_snapcraft_file
  }
end

#set_name_of_this_individual_program(i) ⇒ Object

#

set_name_of_this_individual_program

#


270
271
272
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 270

def set_name_of_this_individual_program(i)
  @name_of_this_individual_program = i
end

#set_program_name(i = '') ⇒ Object

#

set_program_name

Denote onto which program we will work on.

#


85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 85

def set_program_name(i = '')
  if i.nil?
    opne 'Please provide a valid name for a program to this class.'
    exit
  end
  i = [i].flatten.compact
  if i.first.is_a?(String) and i.first.include?(',')
    i = i.map {|entry|
      if entry.include? ','
        entry = entry.split(',')
      end
      entry
    }.flatten.compact
  end
  @program_name = i
end

#set_store_into_this_file(i) ⇒ Object

#

set_store_into_this_file

#


74
75
76
77
78
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 74

def set_store_into_this_file(i)
  i = i.dup if i.frozen?
  i << '.yaml' unless i.end_with? '.yaml'
  @internal_hash[:store_into_this_file] = i
end

#short_desc?Boolean

#

short_desc?

#

Returns:

  • (Boolean)


238
239
240
241
242
243
244
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 238

def short_desc?
  _ = @dataset.short_desc?
  if _.size > 66
    _ = _[0 .. 60] # Truncate it in this case.
  end
  return _
end

#short_name?Boolean

#

short_name?

Tap into @dataset to find out the short name of the program at hand.

#

Returns:

  • (Boolean)


179
180
181
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 179

def short_name?
  @dataset.short_name?
end

#try_to_find_corresponding_program(program_name = program_name? ) ⇒ Object

#

try_to_find_corresponding_program

This method attempts to find a corresponding entry from the individual yaml files.

#


153
154
155
156
157
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 153

def try_to_find_corresponding_program(
    program_name = program_name?
  )
  @dataset = action(:SanitizeCookbook, program_name) { :fast }
end

#what?Boolean

#

what?

#

Returns:

  • (Boolean)


136
137
138
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 136

def what?
  @snapcraft_file_content
end