class Teneo::DataModel::SeedLoader
Attributes
base_dir[R]
prompt[R]
Public Class Methods
new(base_dir)
click to toggle source
# File lib/teneo/data_model/seed_loader.rb, line 11 def initialize(base_dir) @base_dir = base_dir @prompt = TTY::Prompt.new load end
Private Instance Methods
load()
click to toggle source
# File lib/teneo/data_model/seed_loader.rb, line 19 def load load_data :format load_data :access_right load_data :retention_policy load_data :representation_info load_data :producer load_data :material_flow load_data :converter load_data :organization load_data :user load_data :ingest_agreement load_data :ingest_model load_data :task load_data :stage_workflow load_data :ingest_workflow end
load_data(klass_name)
click to toggle source
# File lib/teneo/data_model/seed_loader.rb, line 36 def load_data(klass_name) klass = "Teneo::DataModel::#{klass_name.to_s.classify}".constantize spinner = TTY::Spinner::new("[:spinner] Loading #{klass_name}(s) :file :name", interval: 4) spinner.auto_spin spinner.update(file: '...', name: '') spinner.start Dir.children(base_dir).select {|f| f =~ /\.#{klass_name}\.yml$/}.sort.each do |filename| spinner.update(file: "from '#{filename}'") path = File.join(base_dir, filename) data = YAML.load_file(path) case data when Array data.each do |x| x.deep_symbolize_keys! (n = x[:name] || x[x.keys.first]) && spinner.update(name: "object '#{n}'") klass.from_hash(x) spinner.update(name: '') end when Hash klass.from_hash(data.deep_symbolize_keys) else prompt.error "Illegal file content: 'path' - either Array or Hash expected." end spinner.update(file: '...') end spinner.update(file: '- Done', name: '!') spinner.success end