Class: Lilac::CLI::PackageDiscovery
- Inherits:
-
Object
- Object
- Lilac::CLI::PackageDiscovery
- 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 thelilac-*.gemspec. "lilac_package"
Class Method Summary collapse
Instance Method Summary collapse
-
#run ⇒ Object
Returns Array
.
Class Method Details
.run ⇒ Object
26 27 28 |
# File 'lib/lilac/cli/package_discovery.rb', line 26 def self.run new.run end |
Instance Method Details
#run ⇒ Object
Returns Array
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 |