Sha256: cb2ad62377d7f6d15137c6dcbf4d4b62f51f7e5fc292e5f0881a90582c2112e2

Contents?: true

Size: 1.72 KB

Versions: 12

Compression:

Stored size: 1.72 KB

Contents

module EY
  module Serverside
    class Adapter
      class Arguments < Struct.new(:app, :environment_name, :account_name, :config, :framework_env, :instances, :migrate, :ref, :repo, :stack, :verbose)

        def app=(app)
          enforce_nonempty!('app', app)
          super
        end

        def environment_name=(env)
          enforce_nonempty!('environment_name', env)
          super
        end

        def account_name=(acc)
          enforce_nonempty!('account_name', acc)
          super
        end

        def framework_env=(framework_env)
          enforce_nonempty!('framework_env', framework_env)
          super
        end

        def instances=(instances)
          unless instances.respond_to?(:each)
            raise ArgumentError, "Value for 'instances' must look like an enumerable."
          end

          if instances.empty?
            raise ArgumentError, "Value for 'instances' must not be empty."
          end

          instances.each do |instance|
            unless instance.respond_to?(:[]) && instance[:hostname] && instance[:roles]
              raise ArgumentError, "Malformed instance #{instance.inspect}; it must have both [:hostname] and [:roles]"
            end
          end

          super
        end

        def ref=(ref)
          enforce_nonempty!('ref', ref)
          super
        end

        def repo=(repo)
          enforce_nonempty!('repo', repo)
          super
        end

        def stack=(stack)
          enforce_nonempty!('stack', stack)
          super
        end

        private

        def enforce_nonempty!(name, value)
          if value.to_s.empty?
            raise ArgumentError, "Value for '#{name}' must be non-empty."
          end
        end

      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
engineyard-serverside-adapter-2.0.1 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-2.0.0 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-2.0.0.rc1 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-2.0.0.pre5 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-2.0.0.pre4 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-2.0.0.pre3 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-2.0.0.pre2 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-2.0.0.pre1 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.7.0.pre2 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.7.0.pre lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.6.0.pre2 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.6.0.pre lib/engineyard-serverside-adapter/arguments.rb