Sha256: 4404fd5c26d236792eff085e5a8176d37e078d4b4809cef4b375830891ef35c9

Contents?: true

Size: 1.78 KB

Versions: 15

Compression:

Stored size: 1.78 KB

Contents

module Foreplay
  class Engine
    module Defaults
      include Foreplay

      DEFAULT_CONFIG_FILE = "#{Dir.getwd}/config/foreplay.yml"
      DEFAULTS_KEY        = 'defaults'

      def defaults
        return @defaults if @defaults

        # Establish defaults
        # First the default defaults
        @defaults = {
          'name'            =>  File.basename(Dir.getwd),
          'environment'     =>  environment,
          'port'            =>  DEFAULT_PORT
        }

        @defaults['env'] = secrets
        @defaults['application'] = secrets
        @defaults = @defaults.supermerge(roles_all[DEFAULTS_KEY]) if roles_all.key? DEFAULTS_KEY
        @defaults = @defaults.supermerge(roles[DEFAULTS_KEY])     if roles.key? DEFAULTS_KEY
        @defaults
      end

      # Secret environment variables
      def secrets
        @secrets ||= (Foreplay::Engine::Secrets.new(environment, roles_all['secrets']).fetch || {})
      end

      def roles
        @roles ||= roles_all[environment]
      end

      def roles_all
        return @roles_all if @roles_all

        @roles_all = YAML.load(File.read(config_file))

        # This environment
        unless @roles_all.key? environment
          terminate("No deployment configuration defined for #{environment} environment.\nCheck #{config_file}")
        end

        @roles_all
      rescue Errno::ENOENT
        terminate "Can't find configuration file #{config_file}.\n"\
          'Please run foreplay setup or create the file manually.'
      rescue Psych::SyntaxError
        terminate "I don't understand the configuration file #{config_file}.\n"\
          'Please run foreplay setup or edit the file manually.'
      end

      def config_file
        @config_file ||= (filters['config_file'] || DEFAULT_CONFIG_FILE)
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
foreplay-0.15.2 lib/foreplay/engine/defaults.rb
foreplay-0.15.1 lib/foreplay/engine/defaults.rb
foreplay-0.15.0 lib/foreplay/engine/defaults.rb
foreplay-0.13.5 lib/foreplay/engine/defaults.rb
foreplay-0.13.4 lib/foreplay/engine/defaults.rb
foreplay-0.13.3 lib/foreplay/engine/defaults.rb
foreplay-0.13.2 lib/foreplay/engine/defaults.rb
foreplay-0.13.1 lib/foreplay/engine/defaults.rb
foreplay-0.13.0 lib/foreplay/engine/defaults.rb
foreplay-0.11.2 lib/foreplay/engine/defaults.rb
foreplay-0.11.1 lib/foreplay/engine/defaults.rb
foreplay-0.11.0 lib/foreplay/engine/defaults.rb
foreplay-0.10.3 lib/foreplay/engine/defaults.rb
foreplay-0.10.2 lib/foreplay/engine/defaults.rb
foreplay-0.10.1 lib/foreplay/engine/defaults.rb