Sha256: 211a1fcbef2080b2fee00f2dfea97245791c6bb93b27d5f7c8f4d3992d56b449

Contents?: true

Size: 1.97 KB

Versions: 1

Compression:

Stored size: 1.97 KB

Contents

require 'kvm/resource'
require 'kvm/rice_release'
require 'kvm/impex'
require 'kvm/log'
require 'fileutils'

module KVM
  class RiceReleaseGeneratedDataset < DirResource
    BASE_DIR=File.expand_path('datasets', KVM_DIR)
    
    attr_reader :project, :ds_name, :db_type
  
    # project is the fully resolved project dir basename (including dist)
    def initialize(project, ds_name, db_type, opts = {})
      @project = project
      @ds_name = ds_name
      @db_type = db_type
      @opts = opts
      @ds_src_dir = RiceReleaseGeneratedDataset.project_dataset_src_dir(@project, @ds_name)
      LOG.debug "DS SOURCE DIR: " + @ds_src_dir
      LOG.debug "DS NAME: " + @ds_name
      file = File.join(BASE_DIR, project, RiceReleaseGeneratedDataset.ds_dirname(ds_name), db_type)
      super(file)
    end
    
    def generate!
      LOG.debug "Generating dataset #{path}"
      FileUtils.mkdir_p @path
      KVM::RiceRelease.new(@project).get
      KVM::Impex::IMPEX_SOURCE.get
      KVM::Impex::IMPEX.generate_sql(@ds_src_dir, @db_type, @path, @opts)
    end
    
    # the generated dataset base dir (excluding db type)
    def basedir
      File.dirname(path)
    end

    protected
    
    # the project dataset src dir
    # alternative: create RiceRelease object and lookup dataset by name (dataset_base_dir or dataset_dir)
    def self.project_dataset_src_dir(project, ds_name)
      File.join(RiceRelease::BASE_DIR, project, "database", ds_dirname(ds_name))
    end
    
    def self.ds_dirname(ds)
      "#{ds}-dataset"
    end
    
    def self.list
      super(File.join(self::BASE_DIR, "*", "*", "*"))
    end
    
    def self.from_file(f)
      type = File.basename(f)
      ds_path = File.dirname(f)
      ds_name = File.basename(ds_path).split('-')[0]
      project_path = File.dirname(ds_path)
      project = File.basename(project_path)
      RiceReleaseGeneratedDataset.new(project, ds_name, type)
    end
    
    def self.dataset_path(dataset, type)
      "#{dataset}/#{type}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kvm-0.0.1.pre lib/kvm/rice_release_generated_dataset.rb