Module: Belt::CLI::GeneratorRegistry

Defined in:
lib/belt/cli/generator_registry.rb

Overview

Discovers and manages generators provided by external gems.

Gems register generators by placing a file at:

lib/belt/generators/<name>_generator.rb

Each generator class must:

- Be named <Name>Generator (e.g., MessagingGenerator)
- Live in the Belt::Generators module
- Implement .run(args) for generation
- Implement .destroy(args) for teardown (optional)
- Implement .description for help text (optional)

Example gem structure:

belt-messaging/
lib/
  belt/
    generators/
      messaging_generator.rb

The generator is then available as:

belt generate messaging
belt destroy messaging

Constant Summary collapse

GENERATOR_PATH =
'lib/belt/generators'

Class Method Summary collapse

Class Method Details

.discovered_generatorsObject

Returns a hash of { "name" => generator_class } for all discovered generators.



33
34
35
# File 'lib/belt/cli/generator_registry.rb', line 33

def discovered_generators
  @discovered_generators ||= discover_all
end

.find(name) ⇒ Object

Loads and returns the generator class for a given name. Returns nil if not found.



44
45
46
# File 'lib/belt/cli/generator_registry.rb', line 44

def find(name)
  discovered_generators[name]
end

.generator_namesObject

Returns just the names of discovered generators.



38
39
40
# File 'lib/belt/cli/generator_registry.rb', line 38

def generator_names
  discovered_generators.keys
end

.reset!Object

Reset cache (useful in tests)



49
50
51
# File 'lib/belt/cli/generator_registry.rb', line 49

def reset!
  @discovered_generators = nil
end