Class: RBT::Cookbooks::CreateEbuild

Inherits:
Base show all
Defined in:
lib/rbt/linux/gentoo/create_ebuild.rb

Overview

RBT::Cookbooks::CreateEbuild

Constant Summary collapse

DEFAULT_PROGRAM =
#

DEFAULT_PROGRAM

#
'ruby'
DIRECTORY_FOR_EBUILDS =
#

DIRECTORY_FOR_EBUILDS

Where to store the ebuilds.

#
"#{RBT.rbt_log_dir?}DirectoryForEbuilds/"
PORTAGE_BASE_DIRECTORY =
#

PORTAGE_BASE_DIRECTORY

Where portage normally keeps an .ebuild file.

#
'/usr/local/portage/'

Constants inherited from LeanPrototype

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

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) ⇒ CreateEbuild

#

initialize

The first argument should contain the dataset.

#


65
66
67
68
69
70
71
72
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 65

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

Instance Method Details

#data?Boolean

#

data?

#

Returns:

  • (Boolean)


107
108
109
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 107

def data?
  @data
end

#do_create_the_ebuildObject

#

do_create_the_ebuild

This method will create the specific .ebuild file in question.

#


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
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 146

def do_create_the_ebuild
  license = ''.dup # empty at default
  license = licence? unless licence?.empty?
  # ======================================================================= #
  # Generate the main string next.
  # ======================================================================= #
  string = ''.dup
  string << 
'EAPI="5"

PYTHON_COMPAT=( python2_7 )

AUTOTOOLS_AUTORECONF=true

inherit autotools-utils linux-info python-any-r1

ARTS_REQUIRED="never"

MY_P="'+short_name?+'"

DESCRIPTION="'+data?.description?+'"

HOMEPAGE="'+homepage?.to_s+'"
SRC_URI="'+url1?+'"
LICENSE="'+license+'"

SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="debug doc"
need-kde 3.5
S="${WORKDIR}/${MY_P}"

DEPEND="'+required_deps_on?+'"

RDEPEND="${DEPEND}
x11-libs/qt-svg:4[debug?]"

src_compile () {
mkdir build
cd build
cmake ..
emake || die "emake failed"
}

src_install () {
cd build
emake DESTDIR=${D} install || die "emake install failed"
dodoc ChangeLog README TODO
}
'
  write_what_into(string, store_where?) # Overwrite.
  opne "Created ebuild for #{program?} at `#{sfile(store_where?)}`."
end

#guess_program_nameObject

#

guess_program_name

This method will try to guess the program name.

#


237
238
239
240
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 237

def guess_program_name
  _ = data?.short_name?
  set_program_name(_)
end

#homepage?Boolean

#

homepage?

#

Returns:

  • (Boolean)


217
218
219
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 217

def homepage?
  data?.homepage?
end

#is_on_gentoo?Boolean

#

is_on_gentoo?

#

Returns:

  • (Boolean)


245
246
247
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 245

def is_on_gentoo?
  false # <- May have to be changed one day (Sep 2018).
end

#license?Boolean Also known as: licence?

#

license?

#

Returns:

  • (Boolean)


137
138
139
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 137

def license?
  data?.license?
end

#notify_the_user_what_we_are_about_to_doObject

#

notify_the_user_what_we_are_about_to_do

#


224
225
226
227
228
229
230
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 224

def notify_the_user_what_we_are_about_to_do
  e
  cliner {
    opne 'Now creating ebuild for '+sfancy(@program_name)+' in'
    opne "  `#{sfile(store_where?)}`."
  }; e
end

#program_name?Boolean Also known as: program?

#

program_name?

#

Returns:

  • (Boolean)


252
253
254
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 252

def program_name?
  @program_name
end

#required_deps_on?Boolean

#

required_deps_on?

#

Returns:

  • (Boolean)


203
204
205
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 203

def required_deps_on?
  data?.required_deps_on?.to_s
end

#resetObject

#

reset

#


77
78
79
80
81
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 77

def reset
  super()
  infer_the_namespace
  set_program_name # Set to empty String.
end

#runObject

#

run

#


259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 259

def run
  create_directory(DIRECTORY_FOR_EBUILDS)  # Create the basic ebuild directory.
  # ======================================================================= #
  # Next, consider creating the portage base directory.
  # Not everyone wants this though, so I have uncommented it for now -
  # or rather, it uses a "is_on_gentoo?" check, which currently will
  # always return false.
  # ======================================================================= #
  if is_on_gentoo?
    create_directory(PORTAGE_BASE_DIRECTORY) unless File.directory? PORTAGE_BASE_DIRECTORY
  end
  guess_program_name if program_name?.empty?
  notify_the_user_what_we_are_about_to_do
  do_create_the_ebuild
end

#set_data(i = nil) ⇒ Object

#

set_data

The input should be a Hash.

#


88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 88

def set_data(i = nil)
  i = DEFAULT_PROGRAM if i.nil?
  i = RBT::Cookbooks::SanitizeCookbook.new(i).dataset? if i.is_a? String
  if i.is_a? Array
    if i.empty? # Empty Arrays will be treated differently.
      i = RBT::Cookbooks::SanitizeCookbook.new(DEFAULT_PROGRAM).dataset?
    else
      i = i.join(' ')
    end
  end
  @data = i
  if @data.is_a? Hash
    set_program_name(@data['short_name'])
  end
end

#set_program_name(i = '') ⇒ Object

#

set_program_name

#


114
115
116
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 114

def set_program_name(i = '')
  @program_name = i
end

#short_name?Boolean

#

short_name?

#

Returns:

  • (Boolean)


130
131
132
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 130

def short_name?
  data?.short_name?
end

#store_where?Boolean

#

store_where?

We could also store in the directory PORTAGE_BASE_DIRECTORY.

#

Returns:

  • (Boolean)


123
124
125
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 123

def store_where?
  DIRECTORY_FOR_EBUILDS+program_name?+'.ebuild'
end

#url1?Boolean

#

url1?

#

Returns:

  • (Boolean)


210
211
212
# File 'lib/rbt/linux/gentoo/create_ebuild.rb', line 210

def url1?
  data?.url1?
end