Sha256: f2a66c940b1139c5c374be8ebfa3c7f2b833f838d27f05581c01fa895d0492f9

Contents?: true

Size: 1.2 KB

Versions: 3

Compression:

Stored size: 1.2 KB

Contents

module HerokuSan
  class Configuration
    attr_reader :config_file
    attr_accessor :configuration
    attr_accessor :external_configuration
    attr_reader :options
    attr_reader :stage_factory

    def initialize(configurable, stage_factory = HerokuSan::Stage)
      @config_file = configurable.config_file
      default_options = {
          'deploy' => HerokuSan::Deploy::Rails
      }
      @options = default_options.merge(configurable.options || {})
      @stage_factory = stage_factory
    end

    def parse
      HerokuSan::Parser.new.parse(self)
    end

    def stages
      configured? or parse
      configuration.inject({}) do |stages, (stage, settings)|
        stages[stage] = stage_factory.new(stage, settings.merge('deploy' => (options[:deploy]||options['deploy'])))
        stages
      end
    end

    def configured?
      !!configuration
    end

    def template
      File.expand_path(File.join(File.dirname(__FILE__), '../templates', 'heroku.example.yml'))
    end

    def generate_config
      # TODO: Convert true/false returns to success/exception
      if File.exists?(config_file)
        false
      else
        FileUtils.cp(template, config_file)
        true
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
heroku_san-4.4.0 lib/heroku_san/configuration.rb
heroku_san-4.3.2 lib/heroku_san/configuration.rb
heroku_san-4.3.1 lib/heroku_san/configuration.rb