class Shaman::Deploy

Attributes

environment[R]
options[R]

Public Class Methods

new(args, options) click to toggle source
# File lib/shaman/deploy.rb, line 5
def initialize(args, options)
  error!('Must specify environment') if args.count < 1
  @environment = args.first
  @options = options
  verify_options
end

Public Instance Methods

deploy() click to toggle source
# File lib/shaman/deploy.rb, line 12
def deploy
  prompt.ok "Connecting to #{LABS_URL}/api/v1/releases"
  response = HTTP.post("#{LABS_URL}/api/v1/releases", form: deploy_options)
  response.code == 200 ? prompt.ok(response.body.to_s) : error!(response.body.to_s)
end

Private Instance Methods

config() click to toggle source
# File lib/shaman/deploy.rb, line 40
def config
  @config ||=
    YAML.load_file(options.config || PROJECT_CONFIG_PATH)[environment]
end
deploy_options() click to toggle source
# File lib/shaman/deploy.rb, line 22
def deploy_options
  raise 'Wrong environment' if config.nil?
  @deploy_options ||= {
    environment_token: config[:token],
    release: HTTP::FormData::File.new(options.file || config[:release_path]),
    message: message || '',
    token: options.token || ENV['SHAMAN_TOKEN'],
    minimum_version: options.minimum_version || false,
    name: options.release_name || ''
  }
end
gcommit() click to toggle source
# File lib/shaman/deploy.rb, line 45
def gcommit
  @gcommit ||= Git.open('.').gcommit(options.commit || 'HEAD')
end
message() click to toggle source
# File lib/shaman/deploy.rb, line 49
def message
  options.git ? gcommit.message : options.message || ask_editor(nil, 'vi')
end
verify_options() click to toggle source
# File lib/shaman/deploy.rb, line 34
def verify_options
  deploy_options.each do |key, value|
    raise "Please specify #{key}" if value.nil?
  end
end