Class: Baltix::Source::Base
- Inherits:
-
Object
- Object
- Baltix::Source::Base
- Extended by:
- Log
- Defined in:
- lib/baltix/source/base.rb
Constant Summary collapse
- OPTION_KEYS =
%i(source_file source_names replace_list aliases alias_names)
- DL_DIRS =
->(s) { ".so.#{s.name}#{RbConfig::CONFIG['sitearchdir']}" }
- RI_DIRS =
->(s) { [ s.default_ridir, 'ri' ] }
- INC_DIRS =
%w(ext)
- EXT_DIRS =
%w(ext)
- LIB_DIRS =
%w(lib)
- APP_DIRS =
%w(app webpack script public)
- EXE_DIRS =
%w(bin exe)
- CONF_DIRS =
%w(etc config conf)
- TEST_DIRS =
%w(tests test spec features acceptance autotest)
- MAN_DIRS =
%w(doc docs Documentation man docs-source)
- SUP_DIRS =
%w(util yardoc benchmarks examples .git vendor sample)
- LOG_DIRS =
%w(log)
- DATA_DIRS =
%w(.)
- STATE_DIRS =
%w(tmp)
- DOCSRC_DIRS =
->(s) { s.libdirs | s.appdirs | s.exedirs | s.confdirs }
- DL_RE =
->(_) { /\.(#{RbConfig::CONFIG['DLEXT']}|build_complete)$/ }
- RI_RE =
/\.ri$/
- INC_RE =
/\.(h|hpp)$/
- MAN_RE =
/\.[1-8](.ronn)?$/
- EXT_RE =
/\b(.*\.rb|rakefile(\.rb)?)$/i
- DATA_RE =
->(s) do dirs = s.extdirs | s.libdirs | s.appdirs | s.exedirs | s.confdirs | s.testdirs | s.mandirs | s.supdirs | s.ridirs | s.dldirs | s.incdirs | s.logdirs | s.statedirs dirs.empty? && /.*/ || /^(?!.*#{dirs.join('\b|').gsub('.', '\\\\.')}\b)/ end
- DOCSRC_RE =
/\.rb$/
- GROUPS =
constants.select { |c| c =~ /_DIRS/ }.map { |c| c.to_s.sub('_DIRS', '').downcase }
- OPTIONS_IN =
{ aliases: ->(o, name) { o.is_a?(Hash) && [ o[nil], o[name], o.values.map {|x|x.flatten}.select {|x|x.include?(name)}.map {|x|x.first}.flatten ].flatten.compact.uniq || o }, alias_names: ->(o, name) { o.is_a?(Hash) && [ o[nil], o[name], o.values.map {|x|x.flatten}.select {|x|x.include?(name)}.map {|x|x.first}.flatten ].flatten.compact.uniq || o }, version_replaces: true, gem_version_replace: true, source_file: ->(file, _name) { file.is_a?(String) && File.file?(file) && file || nil }, loader: true, gemspec: true, source_names: true, name: true, version: true, "source-ri-folder-lists": :name_or_default, "source-inc-folder-lists": :name_or_default, "source-ext-folder-lists": :name_or_default, "source-lib-folder-lists": :name_or_default, "source-app-folder-lists": :name_or_default, "source-exe-folder-lists": :name_or_default, "source-conf-folder-lists": :name_or_default, "source-test-folder-lists": :name_or_default, "source-man-folder-lists": :name_or_default, "source-sup-folder-lists": :name_or_default, "source-data-folder-lists": :name_or_default, "source-docsrc-folder-lists": :name_or_default, "source-log-folder-lists": :name_or_default, "source-state-folder-lists": :name_or_default, "source-ri-folders": true, "source-inc-folders": true, "source-ext-folders": true, "source-lib-folders": true, "source-app-folders": true, "source-exe-folders": true, "source-conf-folders": true, "source-test-folders": true, "source-man-folders": true, "source-sup-folders": true, "source-data-folders": true, "source-docsrc-folders": true, "source-log-folders": true, "source-state-folders": true, }
Constants included from Log
Instance Attribute Summary collapse
-
#loader ⇒ Object
readonly
Returns the value of attribute loader.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
- #replace_list ⇒ Object
-
#source_file ⇒ Object
readonly
Returns the value of attribute source_file.
- #source_names ⇒ Object
Class Method Summary collapse
- .name_for(options_in) ⇒ Object
- .name_or_default(value_in, name, source_name) ⇒ Object
- .opts ⇒ Object
- .rootdir_or_default(value_in, name, _) ⇒ Object
- .source_options(options_in = {}.to_os) ⇒ Object
Instance Method Summary collapse
- #+(other) ⇒ Object
- #alias_names ⇒ Object
- #alias_to(*sources) ⇒ Object
- #aliases ⇒ Object
- #compilable? ⇒ Boolean
- #compilables ⇒ Object
- #default_ridir ⇒ Object
- #definition ⇒ Object
- #dependencies(*types) ⇒ Object
- #deps(groups_in = nil) ⇒ Object
- #development_dependencies ⇒ Object
- #dsl ⇒ Object
-
#fullname ⇒ Object
fullname
returns full name of the source, by default it is the name of the current folder, if it is the root folder the name is “root”. - #has_name?(name) ⇒ Boolean
- #if_dir(dir) ⇒ Object
- #if_exist(file) ⇒ Object
- #if_file(file) ⇒ Object
- #licenses ⇒ Object
-
#name ⇒ Object
name
returns dynamically detected name of the source base on the fullname, in case the fullname is detected in a format of <name-version>, the <name> is returned, otherwise the full name is returned itself. -
#platform ⇒ Object
ruby platform is default for non-gem sources.
- #provide ⇒ Object
- #required_ruby ⇒ Object
- #required_ruby_version ⇒ Object
- #required_rubygems_version ⇒ Object
- #rootdir ⇒ Object
-
#source_path_from(path) ⇒ Object
rebases source_file to path base and returns.
-
#summaries ⇒ Object
summaries
returns an open-struct formatted summaries with a default locale as a key in the spec defined if any, otherwise returns blank open struct. - #to_os ⇒ Object
- #trees(&block) ⇒ Object
- #type ⇒ Object
-
#valid? ⇒ Boolean
questionaries.
-
#version ⇒ Object
version
returns version of the source by default it is the daystamp for today, A subslass can redefine the method to return the proper value.
Methods included from Log
default_prefix, io_name_parse, ios, level, level_match, log, prefix, prefix_for, setup, setup_kind
Instance Attribute Details
#loader ⇒ Object (readonly)
Returns the value of attribute loader.
82 83 84 |
# File 'lib/baltix/source/base.rb', line 82 def loader @loader end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
82 83 84 |
# File 'lib/baltix/source/base.rb', line 82 def @options end |
#replace_list ⇒ Object
199 200 201 |
# File 'lib/baltix/source/base.rb', line 199 def replace_list @gem_version_replace ||= {} end |
#source_file ⇒ Object (readonly)
Returns the value of attribute source_file.
82 83 84 |
# File 'lib/baltix/source/base.rb', line 82 def source_file @source_file end |
#source_names ⇒ Object
186 187 188 |
# File 'lib/baltix/source/base.rb', line 186 def source_names @source_names ||= [:source_names] || source_file && [File.basename(source_file)] || [] end |
Class Method Details
.name_for(options_in) ⇒ Object
94 95 96 97 98 |
# File 'lib/baltix/source/base.rb', line 94 def name_for fullname = ([:rootdir] || "").split('/').last /^(?<name>.*)-([\d\.]+)$/ =~ fullname name || fullname end |
.name_or_default(value_in, name, source_name) ⇒ Object
121 122 123 124 125 |
# File 'lib/baltix/source/base.rb', line 121 def name_or_default value_in, name, source_name value = value_in && (value_in[source_name] || value_in[nil]) || nil value && [ name.make_singular, value ] || nil end |
.opts ⇒ Object
86 87 88 89 90 91 92 |
# File 'lib/baltix/source/base.rb', line 86 def opts @opts ||= ancestors.reverse.map do |a| a.constants.include?(:OPTIONS_IN) && a.const_get(:OPTIONS_IN).to_a || nil end.compact.flatten(1).to_os end |
.rootdir_or_default(value_in, name, _) ⇒ Object
127 128 129 |
# File 'lib/baltix/source/base.rb', line 127 def rootdir_or_default value_in, name, _ [ name, value_in || Dir.pwd ] end |
.source_options(options_in = {}.to_os) ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/baltix/source/base.rb', line 100 def = {}.to_os source_name = name_for() opts.map do |name_in, rule| value_in = [name_in.to_s] name, value = case rule when true [name_in, value_in] when Proc [name_in, rule[value_in, source_name] ] when Symbol method(rule)[value_in, name_in, source_name] else nil end value end.compact.to_os end |
Instance Method Details
#+(other) ⇒ Object
345 346 347 348 349 350 351 |
# File 'lib/baltix/source/base.rb', line 345 def + other self.replace_list = replace_list.merge(other.replace_list) self.source_names = source_names | other.source_names self.dsl.merge_in(other.dsl) self end |
#alias_names ⇒ Object
203 204 205 |
# File 'lib/baltix/source/base.rb', line 203 def alias_names @alias_names ||= [:alias_names] || [] end |
#alias_to(*sources) ⇒ Object
357 358 359 |
# File 'lib/baltix/source/base.rb', line 357 def alias_to *sources @aliases = aliases | sources.flatten end |
#aliases ⇒ Object
353 354 355 |
# File 'lib/baltix/source/base.rb', line 353 def aliases @aliases ||= [] end |
#compilable? ⇒ Boolean
249 250 251 |
# File 'lib/baltix/source/base.rb', line 249 def compilable? extfiles.any? end |
#compilables ⇒ Object
307 308 309 310 |
# File 'lib/baltix/source/base.rb', line 307 def compilables # TODO make compilables from ext extfiles end |
#default_ridir ⇒ Object
297 298 299 |
# File 'lib/baltix/source/base.rb', line 297 def default_ridir ".ri.#{name}" end |
#definition ⇒ Object
273 274 275 |
# File 'lib/baltix/source/base.rb', line 273 def definition dsl.definition end |
#dependencies(*types) ⇒ Object
329 330 331 332 333 334 335 |
# File 'lib/baltix/source/base.rb', line 329 def dependencies *types if definition definition.dependencies.select {|dep| types.empty? || types.include?(dep.type) } else [] end end |
#deps(groups_in = nil) ⇒ Object
277 278 279 |
# File 'lib/baltix/source/base.rb', line 277 def deps groups_in = nil dsl.deps_for(groups_in) end |
#development_dependencies ⇒ Object
337 338 339 |
# File 'lib/baltix/source/base.rb', line 337 def development_dependencies Baltix::DSL.merge_dependencies(*Baltix::DSL.filter_dependencies(:development, definition.dependencies, spec.dependencies)) end |
#dsl ⇒ Object
190 191 192 193 194 195 196 197 |
# File 'lib/baltix/source/base.rb', line 190 def dsl @dsl ||= [:dsl] || Baltix::DSL.new(source_file, spec: spec, replace_list: replace_list, skip_list: ([:gem_skip_list] || []) | [name], append_list: [:gem_append_list]) end |
#fullname ⇒ Object
fullname
returns full name of the source, by default it is the name of the current folder, if it is the root folder the name is “root”. A mixin can redefine the method to return the proper value
source.name #=> “source_name”
142 143 144 |
# File 'lib/baltix/source/base.rb', line 142 def fullname @fullname ||= rootdir.split('/').last || "root" end |
#has_name?(name) ⇒ Boolean
281 282 283 |
# File 'lib/baltix/source/base.rb', line 281 def has_name? name self.name == name || alias_names.include?(name) end |
#if_dir(dir) ⇒ Object
293 294 295 |
# File 'lib/baltix/source/base.rb', line 293 def if_dir dir File.directory?(File.join(rootdir, dir)) && dir || nil end |
#if_exist(file) ⇒ Object
289 290 291 |
# File 'lib/baltix/source/base.rb', line 289 def if_exist file File.exist?(File.join(rootdir, file)) && file || nil end |
#if_file(file) ⇒ Object
285 286 287 |
# File 'lib/baltix/source/base.rb', line 285 def if_file file File.file?(File.join(rootdir, file)) && file || nil end |
#licenses ⇒ Object
341 342 343 |
# File 'lib/baltix/source/base.rb', line 341 def licenses [] end |
#name ⇒ Object
name
returns dynamically detected name of the source base on the fullname, in case the fullname is detected in a format of <name-version>, the <name> is returned, otherwise the full name is returned itself. A mixin can redefine the method to return the proper value
source.name #=> “source_name”
153 154 155 156 157 158 159 160 161 |
# File 'lib/baltix/source/base.rb', line 153 def name return @name if @name if /^(?<name>.*)-([\d\.]+)$/ =~ fullname name else fullname || rootdir.split("/").last || "root" end end |
#platform ⇒ Object
ruby platform is default for non-gem sources
178 179 180 |
# File 'lib/baltix/source/base.rb', line 178 def platform 'ruby' end |
#provide ⇒ Object
312 313 314 |
# File 'lib/baltix/source/base.rb', line 312 def provide Gem::Dependency.new(name, "= #{version || "0"}") end |
#required_ruby ⇒ Object
261 262 263 |
# File 'lib/baltix/source/base.rb', line 261 def required_ruby dsl.required_ruby end |
#required_ruby_version ⇒ Object
265 266 267 |
# File 'lib/baltix/source/base.rb', line 265 def required_ruby_version dsl.required_ruby_version end |
#required_rubygems_version ⇒ Object
269 270 271 |
# File 'lib/baltix/source/base.rb', line 269 def required_rubygems_version dsl.required_rubygems_version end |
#rootdir ⇒ Object
182 183 184 |
# File 'lib/baltix/source/base.rb', line 182 def rootdir @rootdir ||= detect_root end |
#source_path_from(path) ⇒ Object
rebases source_file to path base and returns.
362 363 364 365 366 367 368 369 370 371 |
# File 'lib/baltix/source/base.rb', line 362 def source_path_from path file = if source_file.include?(path) source_file[path.size + 1..-1] else source_file end File.dirname(file) end |
#summaries ⇒ Object
summaries
returns an open-struct formatted summaries with a default locale as a key in the spec defined if any, otherwise returns blank open struct.
source.summaries # => #<OpenStruct en_US.UTF-8: …>
321 322 323 324 325 326 327 |
# File 'lib/baltix/source/base.rb', line 321 def summaries if spec&.summary { Baltix::I18n.default_locale => spec&.summary }.to_os else {}.to_os end end |
#to_os ⇒ Object
253 254 255 |
# File 'lib/baltix/source/base.rb', line 253 def to_os .merge(type: type, source_names: source_names) end |
#trees(&block) ⇒ Object
301 302 303 304 305 |
# File 'lib/baltix/source/base.rb', line 301 def trees &block GROUPS.map do |set| yield(set, send("#{set}tree")) end end |
#type ⇒ Object
257 258 259 |
# File 'lib/baltix/source/base.rb', line 257 def type self.class.to_s.split('::').last.downcase end |
#valid? ⇒ Boolean
questionaries
245 246 247 |
# File 'lib/baltix/source/base.rb', line 245 def valid? false end |
#version ⇒ Object
version
returns version of the source by default it is the daystamp for today, A subslass can redefine the method to return the proper value
source.version #=> “20000101” source.version #=> “2.1.0”
169 170 171 172 173 174 175 |
# File 'lib/baltix/source/base.rb', line 169 def version return @version if @version if /-(?<version>[\d\.]+)$/ =~ fullname version end end |