Sha256: 0db0598b588120cc43486741e7e747c4f31994dd0e680b7796e5bdc77ff39447

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

require 'yaml'

module App
  extend self

  attr_accessor \
    :seeds,
    :machine_configs,
    :root

  class Hashy < Hash
    alias_method :__old_get__ , :[]

    def get( key )
      if has_key?( key )
        __old_get__ key
      else
        self[ key ] = self.class.new
      end
    end
    alias_method :[] , :get

    def register( key , &block )
      self[ key ] = block
    end
  end

  self.machine_configs = Hashy.new
  self.seeds           = Hashy.new

  self.root = File.expand_path "#{ __FILE__ }/../.."

  def load_seed!( seed )
    seed_name = seed.split( '/' ).last.split( '.' ).first
    data = YAML.load_file seed
    seeds[ seed_name ] = data
  end

  def load_seeds!
    Dir[ "#{ root }/seeds/**/**.seed.yml" ].each do | seed |
      load_seed! seed
    end
  end

  def load_machines!( config )
    Dir[ "#{ root }/machines/**/**.vagrant.rb" ].each do | machine |
      load machine
    end

    machines =
      if ENV[ 'MACHINES' ]
        ENV[ 'MACHINES' ].split ','
      else
        machine_configs.keys
      end

    machines.each do | machine |
      if machine_config = machine_configs[ machine ]
        instance_exec config , &machine_config
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
petra-0.0.2 lib/sources/project/new/lib/app.rb