Class: Lilac::CLI::PackageDiscovery

Inherits:
Object
  • Object
show all
Defined in:
lib/lilac/cli/package_discovery.rb

Overview

Walks Bundler.load.specs to find gems that declare themselves as Lilac packages via metadata["lilac_package"] == "true".

Each entry is described by Discovered (gem name, version, mrblib source files). Builder feeds the source files into PackageBuild#compile_to_bytes at build time and stages the produced .mrb under dist/packages/.

If Bundler isn't loaded (e.g. lilac-cli is being run from a context without a Gemfile), discovery silently returns an empty list. Users who want explicit control set c.packages = [...paths] in lilac.config.rb, which goes through a different code path and bypasses discovery.

Defined Under Namespace

Classes: Discovered

Constant Summary collapse

METADATA_KEY =

Metadata key on a gemspec that marks the gem as a Lilac package. Set via spec.metadata["lilac_package"] = "true" in the lilac-*.gemspec.

"lilac_package"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.runObject



26
27
28
# File 'lib/lilac/cli/package_discovery.rb', line 26

def self.run
  new.run
end

Instance Method Details

#runObject

Returns Array. Empty when Bundler isn't loaded or when no Lilac packages are declared in the current Gemfile.



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/lilac/cli/package_discovery.rb', line 32

def run
  return [] unless bundler_loaded?

  bundler_specs.filter_map do |spec|
    next unless package_spec?(spec)

    files = mrblib_files_for(spec)
    next if files.empty?

    Discovered.new(name: spec.name, mrblib_files: files)
  end
end