Class: Mnenv::InstallerFactory
- Inherits:
-
Object
- Object
- Mnenv::InstallerFactory
- Defined in:
- lib/mnenv/installer/factory.rb
Overview
Factory for creating installer instances based on source type Uses SourceRegistry for extensibility - new sources just need to register
Defined Under Namespace
Classes: UnknownSourceError
Class Method Summary collapse
-
.create(version, source:, target_dir: nil) ⇒ Installer
Create an installer for the given version and source.
-
.supported?(source) ⇒ Boolean
Check if a source is supported.
-
.supported_sources ⇒ Array<String>
Get list of supported sources.
Class Method Details
.create(version, source:, target_dir: nil) ⇒ Installer
Create an installer for the given version and source
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/mnenv/installer/factory.rb', line 17 def self.create(version, source:, target_dir: nil) installer_class = SourceRegistry.installer(source.to_s) unless installer_class available = SourceRegistry.all_names.join(', ') raise Installer::InstallationError, "Unknown source: #{source}. Available sources: #{available}" end installer_class.new(version, source: source, target_dir: target_dir) rescue SourceRegistry::UnknownSourceError available = SourceRegistry.all_names.join(', ') raise Installer::InstallationError, "Unknown source: #{source}. Available sources: #{available}" end |
.supported?(source) ⇒ Boolean
Check if a source is supported
36 37 38 |
# File 'lib/mnenv/installer/factory.rb', line 36 def self.supported?(source) SourceRegistry.registered?(source.to_s) end |
.supported_sources ⇒ Array<String>
Get list of supported sources
42 43 44 |
# File 'lib/mnenv/installer/factory.rb', line 42 def self.supported_sources SourceRegistry.all_names end |