Sha256: 6683247a55cfdda6d3db503ff876aac511aec66788e9d2edf800471cbd971c7c

Contents?: true

Size: 791 Bytes

Versions: 1

Compression:

Stored size: 791 Bytes

Contents

require 'psych'

module Canals
  class CanalEnvironmentError < StandardError; end

  class Environment
    attr_reader :name, :user, :hostname, :pem
    def initialize(args)
      @args = validate?(args)
      @name = @args[:name]
      @user = @args[:user]
      @hostname = @args[:hostname]
      @pem = @args[:pem]
    end

    def validate?(args)
      vargs = args.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
      raise CanalEnvironmentError.new("Missing option: \"name\" in environment creation") if vargs[:name].nil?
      vargs
    end

    def default=(val)
      @args[:default] = !!val
    end

    def is_default?
      !!@args[:default]
    end

    def to_yaml
      Psych.dump(@args)
    end

    def to_hash
      Marshal.load(Marshal.dump(@args))
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
canals-0.9.0 lib/canals/environment.rb