Sha256: b4d5d52aa545b9abbbbc63545980a4bef22ca25ecc5f7123387df12da2e50b13

Contents?: true

Size: 1.44 KB

Versions: 2

Compression:

Stored size: 1.44 KB

Contents

require 'pushwagner/ext'
require 'pushwagner/maven'
require 'yaml'

module Pushwagner

  class Environment
    attr_reader :config
    attr_accessor :current, :version

    def initialize(opts = {})
      opts = HashWithIndifferentAccess.new(opts)

      config_file = look_for_config_file(opts[:config_file])

      @version = opts[:version] && opts[:version].to_s
      @current = opts[:environment] || 'development'

      @config = HashWithIndifferentAccess.new(YAML::load_file(config_file) || {})
    end

    def path_prefix
      config['path_prefix'] || '/'
    end

    def maven
      @maven = (config['maven'] ? Maven.new(config['maven'], version) : {})
    end

    def maven?
      maven.any?
    end

    def static
      config['static'] || {}
    end

    def static?
      static.any?
    end

    def environments
      config['environments'] || {}
    end

    def environment
      environments[current] || {}
    end

    def hosts
      environment['hosts'] || []
    end

    def user
      environment['user'] || "nobody"
    end

    private
    def look_for_config_file(file)
      locations = [file, './deploy.yml', './.pw.yml', './config/deploy.yml']

      locations.each do |location|
        return location if File.exist? location
        cf = File.join(File.dirname(__FILE__), location) # i.e rake/thor.
        return cf if File.exist? cf
      end
      raise "Couldn't find config file in locations: #{locations.join(', ')}"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pushwagner-0.0.1.8 lib/pushwagner/environment.rb
pushwagner-0.0.1.7 lib/pushwagner/environment.rb