Sha256: 7be6782c5ef8ea333a80e9e2a0ada1c5fd86c48804406875006b49c169bd42eb

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

module Shaman
  class Deploy
    attr_reader :options

    def initialize(options)
      @options = options
      verify_options
    end

    def deploy
      say_ok "Connecting to #{LABS_URL}/api/v1/releases"
      say_ok "Sending #{deploy_options.to_yaml}"
      response = HTTP.post("#{LABS_URL}/api/v1/releases", form: deploy_options)
      response.code == 200 ? say_ok(response.body.to_s) : say_error(response.body.to_s)
    end

    private

    def deploy_options
      @deploy_options ||= {
        environment_token: options.token || config[:environment_token],
        release: HTTP::FormData::File.new(options.file || config[:release_path]),
        message: message || '',
        deployer: deployer
      }
    end

    def verify_options
      deploy_options.each do |key, value|
        fail "Please specify #{key}" if value.nil?
      end
    end

    def config
      @config ||= YAML.load_file(options.config || PROJECT_CONFIG_PATH)
    end

    def gcommit
      @gcommit ||= Git.open('.').gcommit(options.commit || 'HEAD')
    end

    def message
      options.git ? gcommit.message : options.message || ask_editor(nil, 'vi')
    end

    def deployer
      options.git ? gcommit.committer.email : options.deployer || config[:deployer_email]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shaman_cli-2.0.0 lib/shaman/deploy.rb