Class: Kiba::Extend::Registry::FileRegistry
- Inherits:
-
Object
- Object
- Kiba::Extend::Registry::FileRegistry
- Includes:
- Dry::Container::Mixin
- Defined in:
- lib/kiba/extend/registry/file_registry.rb
Overview
Transforms a file_registry hash into an object that can return source, lookup, or destination config for that file, for passing to jobs
An example of a file registry setup in a project can be found at: https://github.com/lyrasis/fwm-cspace-migration/blob/main/lib/fwm/registry_data.rb
Defined Under Namespace
Classes: KeyNotRegisteredError
Instance Method Summary collapse
-
#as_destination(filekey, for_job) ⇒ Kiba::Extend::Registry::RegisteredDestination
-
#as_lookup(filekey, for_job) ⇒ Kiba::Extend::Registry::RegisteredLookup
-
#as_source(filekey, for_job) ⇒ Kiba::Extend::Registry::RegisteredSource
-
#entries ⇒ Array<Hash,FileRegistryEntry>
-
#entry_objs ⇒ Array<FileRegistryEntry>
-
#finalize ⇒ Object
Convenience method combining the steps of transforming initial registry entry hashes into FileRegistryEntry objects, and then making the registry immutable for the rest of the application’s run.
-
#replace_entries(arr) ⇒ Object
-
#replace_entry_x_with_entry_y(x:, y:) ⇒ Object
-
#transform ⇒ Object
Transforms registered file hashes into FileRegistryEntry objects.
-
#valid? ⇒ Boolean
-
#warnings? ⇒ Boolean
Instance Method Details
#as_destination(filekey, for_job) ⇒ Kiba::Extend::Registry::RegisteredDestination
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/kiba/extend/registry/file_registry.rb', line 46 def as_destination(filekey, for_job) if Kiba::Extend.job_verbosity == :debug puts "Registering #{filekey} as destination for #{for_job}" end RegisteredDestination.new( key: filekey, data: lookup(filekey), for_job: for_job ) rescue KeyNotRegisteredError => err raise KeyNotRegisteredError.new(err.key, :destination) end |
#as_lookup(filekey, for_job) ⇒ Kiba::Extend::Registry::RegisteredLookup
62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/kiba/extend/registry/file_registry.rb', line 62 def as_lookup(filekey, for_job) if Kiba::Extend.job_verbosity == :debug puts "Registering #{filekey} as lookup for #{for_job}" end RegisteredLookup.new( key: filekey, data: lookup(filekey), for_job: for_job ) rescue KeyNotRegisteredError => err raise KeyNotRegisteredError.new(err.key, :lookup) end |
#as_source(filekey, for_job) ⇒ Kiba::Extend::Registry::RegisteredSource
78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/kiba/extend/registry/file_registry.rb', line 78 def as_source(filekey, for_job) if Kiba::Extend.job_verbosity == :debug puts "Registering #{filekey} as source for #{for_job}" end RegisteredSource.new( key: filekey, data: lookup(filekey), for_job: for_job ) rescue KeyNotRegisteredError => err raise KeyNotRegisteredError.new(err.key, :source) end |
#entries ⇒ Array<Hash,FileRegistryEntry>
Refactor this away, if possible
In general, avoid this. Prior to registry finalization, it will return Hashes. After, it will return FileRegistryEntry objects. This makes the results unpredicatable to work with.
96 97 98 |
# File 'lib/kiba/extend/registry/file_registry.rb', line 96 def entries @entries ||= populate_entries end |
#entry_objs ⇒ Array<FileRegistryEntry>
101 |
# File 'lib/kiba/extend/registry/file_registry.rb', line 101 def entry_objs = _container.values.map(&:item) |
#finalize ⇒ Object
Convenience method combining the steps of transforming
initial registry entry hashes into FileRegistryEntry
objects, and then making the registry immutable for the
rest of the application’s run. :freeze
is from
dry-container.
132 133 134 135 136 137 |
# File 'lib/kiba/extend/registry/file_registry.rb', line 132 def finalize transform @frozen = true puts "Registry is frozen!" if Kiba::Extend.job_verbosity == :debug freeze end |
#replace_entries(arr) ⇒ Object
104 105 106 |
# File 'lib/kiba/extend/registry/file_registry.rb', line 104 def replace_entries(arr) @entries = arr end |
#replace_entry_x_with_entry_y(x:, y:) ⇒ Object
This method only works before #freeze or #finalize are called on the FileRegistry.
114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/kiba/extend/registry/file_registry.rb', line 114 def replace_entry_x_with_entry_y(x:, y:) if @frozen return self && warn("#{Kiba::Extend.warning_label}: Cannot modify "\ "frozen registry (replace #{x} with #{y})") end _container.delete(x.to_s) entry = _container[y.to_s] _container.delete(y.to_s) _container[x.to_s] = entry self end |
#transform ⇒ Object
Transforms registered file hashes into Kiba::Extend::Registry::FileRegistryEntry objects
141 142 143 144 145 146 147 148 |
# File 'lib/kiba/extend/registry/file_registry.rb', line 141 def transform if Kiba::Extend.job_verbosity == :debug puts "Transforming registered jobs into FileRegistryEntries" end each { |key, val| decorate(key) { FileRegistryEntry.new(key, val) } } verify_paths end |
#valid? ⇒ Boolean
150 151 152 |
# File 'lib/kiba/extend/registry/file_registry.rb', line 150 def valid? validator.valid? end |
#warnings? ⇒ Boolean
154 155 156 |
# File 'lib/kiba/extend/registry/file_registry.rb', line 154 def warnings? validator.warnings? end |