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
-
.discovered_generators ⇒ Object
Returns a hash of { "name" => generator_class } for all discovered generators.
-
.find(name) ⇒ Object
Loads and returns the generator class for a given name.
-
.generator_names ⇒ Object
Returns just the names of discovered generators.
-
.reset! ⇒ Object
Reset cache (useful in tests).
Class Method Details
.discovered_generators ⇒ Object
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_names ⇒ Object
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 |