Class: Mnenv::SourceRegistry
- Inherits:
-
Object
- Object
- Mnenv::SourceRegistry
- Defined in:
- lib/mnenv/source_registry.rb
Overview
Registry for version sources (gemfile, binary, snap, homebrew, chocolatey) Enables plugin architecture - new sources just need to register themselves
Defined Under Namespace
Classes: DuplicateSourceError, UnknownSourceError
Class Method Summary collapse
-
.all_names ⇒ Object
Get all registered source names.
-
.clear ⇒ Object
Clear all registrations (useful for testing).
-
.installer(name) ⇒ Object
Get installer class for a source.
-
.model(name) ⇒ Object
Get model class for a source.
-
.register(name:, repository:, model:, installer: nil) ⇒ Object
Register a new source.
-
.registered?(name) ⇒ Boolean
Check if a source is registered.
-
.repository(name) ⇒ Object
Get repository class for a source.
- .sources ⇒ Object
Class Method Details
.all_names ⇒ Object
Get all registered source names
51 52 53 |
# File 'lib/mnenv/source_registry.rb', line 51 def self.all_names sources.keys.sort end |
.clear ⇒ Object
Clear all registrations (useful for testing)
61 62 63 |
# File 'lib/mnenv/source_registry.rb', line 61 def self.clear @sources = nil end |
.installer(name) ⇒ Object
Get installer class for a source
43 44 45 46 47 48 |
# File 'lib/mnenv/source_registry.rb', line 43 def self.installer(name) source = sources[name.to_s] raise UnknownSourceError, "Unknown source: #{name}" unless source source[:installer] end |
.model(name) ⇒ Object
Get model class for a source
35 36 37 38 39 40 |
# File 'lib/mnenv/source_registry.rb', line 35 def self.model(name) source = sources[name.to_s] raise UnknownSourceError, "Unknown source: #{name}" unless source source[:model] end |
.register(name:, repository:, model:, installer: nil) ⇒ Object
Register a new source
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/mnenv/source_registry.rb', line 15 def self.register(name:, repository:, model:, installer: nil) name = name.to_s raise DuplicateSourceError, "Source '#{name}' is already registered" if sources.key?(name) sources[name] = { repository: repository, model: model, installer: installer } end |
.registered?(name) ⇒ Boolean
Check if a source is registered
56 57 58 |
# File 'lib/mnenv/source_registry.rb', line 56 def self.registered?(name) sources.key?(name.to_s) end |
.repository(name) ⇒ Object
Get repository class for a source
27 28 29 30 31 32 |
# File 'lib/mnenv/source_registry.rb', line 27 def self.repository(name) source = sources[name.to_s] raise UnknownSourceError, "Unknown source: #{name}" unless source source[:repository] end |
.sources ⇒ Object
65 66 67 |
# File 'lib/mnenv/source_registry.rb', line 65 def self.sources @sources ||= {} end |