class Vara::ContentMigrationsProcessor

Attributes

product_dir[R]
versioner[R]

Public Class Methods

new(product_dir, versioner) click to toggle source

@param product_dir [String] path to product directory root @param versioner [Vara::PrereleaseVersioner,Vara::StaticVersioner]

# File lib/vara/content_migrations_processor.rb, line 10
def initialize(product_dir, versioner)
  @product_dir = product_dir
  @versioner = versioner
end

Public Instance Methods

process() click to toggle source

Composes content_migrations_parts/base.yml and content_migrations_parts/migrations/*.yml into content_migrations/migrations.yml, expanding placeholders as necessary. @return [String] path to the generated content migration file

# File lib/vara/content_migrations_processor.rb, line 18
def process
  return unless File.exist?(parts_dir)
  content_migrations = load_content_migrations
  processed = versioner.update_content_migrations(content_migrations)
  save_content_migrations(processed)
end
update_product_version_migrations() click to toggle source
# File lib/vara/content_migrations_processor.rb, line 25
def update_product_version_migrations
  return unless File.exists? migrations_file_path
  migrations = YAML.load_file(migrations_file_path)
  versioner.update_content_migrations(migrations)
  save_content_migrations(migrations)
end

Private Instance Methods

load_content_migrations() click to toggle source
# File lib/vara/content_migrations_processor.rb, line 36
def load_content_migrations
  base_path = File.join(parts_dir, 'base.yml')
  content_migrations = YAML.load_file(base_path) || {}
  log.info("Composing content migrations: loaded #{base_path}")
  Dir.glob(File.join(parts_dir, 'migrations', '*.yml')).each do |migration_path|
    migration = YAML.load_file(migration_path)
    log.info("Composing content migrations: loaded #{migration_path}")
    content_migrations['migrations'] ||= []
    content_migrations['migrations'] << migration
  end

  content_migrations
end
migrations_file_path() click to toggle source
# File lib/vara/content_migrations_processor.rb, line 64
def migrations_file_path
  File.join(product_dir, 'content_migrations', 'migrations.yml')
end
parts_dir() click to toggle source
# File lib/vara/content_migrations_processor.rb, line 50
def parts_dir
  File.join(product_dir, 'content_migrations_parts')
end
save_content_migrations(processed_hash) click to toggle source
# File lib/vara/content_migrations_processor.rb, line 54
def save_content_migrations(processed_hash)
  out_path = migrations_file_path

  File.open(out_path, 'w') do |out|
    YAML.dump(processed_hash, out)
  end

  out_path
end