Class: Kiba::Extend::Registry::FileRegistry

Inherits:
Object
  • Object
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

Since:

  • 2.2.0

Defined Under Namespace

Classes: KeyNotRegisteredError

Instance Method Summary collapse

Instance Method Details

#as_destination(filekey, for_job) ⇒ Kiba::Extend::Registry::RegisteredDestination

Parameters:

  • filekey (String, Symbol)

    file registry key for file to be used as destination

Returns:

Since:

  • 2.2.0



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

Parameters:

  • filekey (String, Symbol)

    file registry key for file to be used as a lookup source

Returns:

Since:

  • 2.2.0



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

Parameters:

  • filekey (String, Symbol)

    file registry key for file to be used as a source

Returns:

Since:

  • 2.2.0



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

#entriesArray<Hash,FileRegistryEntry>

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.

Returns:

Since:

  • 2.2.0



96
97
98
# File 'lib/kiba/extend/registry/file_registry.rb', line 96

def entries
  @entries ||= populate_entries
end

#entry_objsArray<FileRegistryEntry>

Returns:

Since:

  • 2.2.0



101
# File 'lib/kiba/extend/registry/file_registry.rb', line 101

def entry_objs = _container.values.map(&:item)

#finalizeObject

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.

Since:

  • 2.2.0



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

Parameters:

  • arr (Array<Hash>)

Since:

  • 2.2.0



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

Note:

This method only works before #freeze or #finalize are called on the FileRegistry.

Parameters:

  • x (String)

    job_key to replace; this job_key will be retained, but its entry is deleted and replaced by the entry for job_key y

  • y (String)

    job_key whose entry is assigned to job_key x; this job_key is removed

Since:

  • 2.2.0



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

#transformObject

Transforms registered file hashes into Kiba::Extend::Registry::FileRegistryEntry objects

Since:

  • 2.2.0



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

Returns:

  • (Boolean)

Since:

  • 2.2.0



150
151
152
# File 'lib/kiba/extend/registry/file_registry.rb', line 150

def valid?
  validator.valid?
end

#warnings?Boolean

Returns:

  • (Boolean)

Since:

  • 2.2.0



154
155
156
# File 'lib/kiba/extend/registry/file_registry.rb', line 154

def warnings?
  validator.warnings?
end