Class: Kiba::Extend::Registry::FileRegistry
- Inherits:
-
Object
- Object
- Kiba::Extend::Registry::FileRegistry
show all
- 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
Instance Method Details
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/kiba/extend/registry/file_registry.rb', line 64
def as_lookup(filekey, for_job)
jobkey = filekey.is_a?(Hash) ? filekey[:jobkey] : filekey
if Kiba::Extend.job_verbosity == :debug
puts "Registering #{jobkey} as lookup for #{for_job}"
end
RegisteredLookup.new(
key: filekey,
data: lookup(jobkey),
for_job: for_job
)
rescue KeyNotRegisteredError => err
raise KeyNotRegisteredError.new(err.key, :lookup)
end
|
TODO:
Refactor this away, if possible
Note:
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.
99
100
101
|
# File 'lib/kiba/extend/registry/file_registry.rb', line 99
def entries
@entries ||= populate_entries
end
|
104
|
# File 'lib/kiba/extend/registry/file_registry.rb', line 104
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.
135
136
137
138
139
140
|
# File 'lib/kiba/extend/registry/file_registry.rb', line 135
def finalize
transform
@frozen = true
puts "Registry is frozen!" if Kiba::Extend.job_verbosity == :debug
freeze
end
|
#replace_entries(arr) ⇒ Object
107
108
109
|
# File 'lib/kiba/extend/registry/file_registry.rb', line 107
def replace_entries(arr)
@entries = arr
end
|
#replace_entry_x_with_entry_y(x:, y:) ⇒ Object
Note:
This method only works before #freeze or #finalize are called on
the FileRegistry.
117
118
119
120
121
122
123
124
125
126
127
128
|
# File 'lib/kiba/extend/registry/file_registry.rb', line 117
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
|
144
145
146
147
148
149
150
151
|
# File 'lib/kiba/extend/registry/file_registry.rb', line 144
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
153
154
155
|
# File 'lib/kiba/extend/registry/file_registry.rb', line 153
def valid?
validator.valid?
end
|
#warnings? ⇒ Boolean
157
158
159
|
# File 'lib/kiba/extend/registry/file_registry.rb', line 157
def warnings?
validator.warnings?
end
|