Sha256: 0f077504fc94aaf97052f0cdd541335a08fead1052175f2b51b7aae0d3d058af

Contents?: true

Size: 1.55 KB

Versions: 3

Compression:

Stored size: 1.55 KB

Contents

require 'fileutils'
require_relative '../helpers/application_helper'
module CapistranoMulticonfigParallel
  # class used to find application dependencies
  class StandardDeploy
    include FileUtils
    include CapistranoMulticonfigParallel::ApplicationHelper

    attr_reader :app, :stage, :action, :task_arguments, :env_options
    def initialize(options)
      @app = options.fetch('app', '')
      @stage = options.fetch('env', '')
      @action = options.fetch('action', '')
      @task_arguments = options.fetch('task_arguments:', [])
      @env_options = options.fetch('env_options', {})
      execute_standard_deploy
    end

    def job_stage
      @app.present? ? "#{@app}:#{@stage}" : "#{@stage}"
    end

    def capistrano_action(action)
      argv = task_arguments.present? ? "[#{@task_arguments}]" : ''
      "#{action}#{argv}"
    end

    def setup_command_line_standard(options)
      opts = ''
      options.each do |key, value|
        opts << "#{key}=#{value} " if value.present?
      end
      opts
    end

    def build_capistrano_task(action = @action, env = {})
      environment_options = setup_command_line_standard(@env_options.merge(env))
      "bundle exec cap #{job_stage} #{capistrano_action(action)}  #{environment_options} --trace"
    end

    def execute_standard_deploy(action = @action)
      command = build_capistrano_task(action)
      puts("\n\n\n Executing '#{command}' \n\n\n .")
      sh("#{command}")
    rescue => ex
      log_error(ex)
      execute_standard_deploy('deploy:rollback') if action.blank? && @name == 'deploy'
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
capistrano_multiconfig_parallel-0.18.2 lib/capistrano_multiconfig_parallel/classes/standard_deploy.rb
capistrano_multiconfig_parallel-0.18.1 lib/capistrano_multiconfig_parallel/classes/standard_deploy.rb
capistrano_multiconfig_parallel-0.18.0 lib/capistrano_multiconfig_parallel/classes/standard_deploy.rb