class EacLauncher::Context::InstanceDiscovery

Attributes

instances[R]

Public Class Methods

new(context) click to toggle source
# File lib/eac_launcher/context/instance_discovery.rb, line 11
def initialize(context)
  @context = context
  @progress = ::ProgressBar.create(title: 'Instance discovery', total: 1)
  @instances = path_instances(@context.root, nil)
ensure
  @progress&.finish
end

Private Instance Methods

on_rescued_path_instances(path) { |r| ... } click to toggle source
# File lib/eac_launcher/context/instance_discovery.rb, line 34
def on_rescued_path_instances(path)
  r = []
  begin
    yield(r) if path.included?
  rescue StandardError => e
    warn("#{path}: #{e}")
  end
  r
end
path_instances(path, parent_instance) click to toggle source
# File lib/eac_launcher/context/instance_discovery.rb, line 21
def path_instances(path, parent_instance)
  update_progress_format(path)
  on_rescued_path_instances(path) do |r|
    if path.project?
      parent_instance = ::EacLauncher::Instances::Base.instanciate(path, parent_instance)
      r << path
    end
    children = path.children
    update_progress_count(children)
    r.concat(children.flat_map { |c| path_instances(c, parent_instance) })
  end
end
update_progress_count(children) click to toggle source
# File lib/eac_launcher/context/instance_discovery.rb, line 48
def update_progress_count(children)
  @progress.total += children.count
  @progress.increment
end
update_progress_format(path) click to toggle source
# File lib/eac_launcher/context/instance_discovery.rb, line 44
def update_progress_format(path)
  @progress.format = "%t (Paths: %c/%C, Current: #{path.logical}) |%B| %a"
end