Sha256: f26049f84a51df6447692fbf0607efccc334fdd2a0c9854f6d3e0f37bae91746

Contents?: true

Size: 1.84 KB

Versions: 4

Compression:

Stored size: 1.84 KB

Contents

require "thor"
require "aws-sdk"
require "pp"
require "open3"

module Ebfly
  module Command
    PREDEFINED_SOLUTION_STACKS = {
      "php53"    => "64bit Amazon Linux running PHP 5.3",
      "php54"    => "64bit Amazon Linux 2013.09 running PHP 5.4",
      "php55"    => "64bit Amazon Linux 2013.09 running PHP 5.5",
      "nodejs"   => "64bit Amazon Linux 2013.09 running Node.js",
      "java7"    => "64bit Amazon Linux 2013.09 running Tomcat 7 Java 7",
      "java6"    => "64bit Amazon Linux 2013.09 running Tomcat 7 Java 6",
      "python27" => "64bit Amazon Linux 2013.09 running Python 2.7",
      "ruby18"   => "64bit Amazon Linux 2013.09 running Ruby 1.8.7",
      "ruby19"   => "64bit Amazon Linux 2013.09 running Ruby 1.9.3",
    }

    def eb
      @eb ||= AWS::ElasticBeanstalk.new
      @eb.client
    end

    def s3
      @s3 ||= AWS::S3.new
    end

    def run(&block)
      begin
        res = yield
        raise res.error unless res.successful?
        res
      rescue => err
        style_err(err)
        exit 1
      end
    end

    def s3_bucket
      @s3_bucket ||= (run { eb.create_storage_location }[:s3_bucket])
    end

    def style_err(err)
      puts "ERR! #{err.message}" 
    end

    def debug(obj)
      pp obj if ENV["DEBUG"]
    end

    def exist_command?(cmd)
      Open3.capture3("type", cmd)[2].exitstatus == 0 rescue nil
    end

    def env_name(app, env)
      "#{app}-#{env}"
    end

    def tier(type)
      if type == "web"
        return { name: "WebServer", type: "Standard", version: "1.0" }
      elsif type == "worker"
        return { name: "Worker", type: "SQS/HTTP", version: "1.0" }
      else
        raise "Environment tier definition not found"
      end
    end

    def solution_stack(name)
      return PREDEFINED_SOLUTION_STACKS[name] if PREDEFINED_SOLUTION_STACKS.key?(name)
      return name
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ebfly-0.0.4 lib/ebfly/ebfly.rb
ebfly-0.0.3 lib/ebfly/ebfly.rb
ebfly-0.0.2 lib/ebfly/ebfly.rb
ebfly-0.0.1 lib/ebfly/ebfly.rb