Sha256: 57d20077819af0dbbd5d9c7e4383682b2f518e7a3106d81b20088187bf75cacd

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

require_relative './base_manager'
require_relative '../multi_app_helpers/dependency_tracker'
module CapistranoMulticonfigParallel
  # class used to find application dependencies
  class MultiAppManager < CapistranoMulticonfigParallel::BaseManager
    include Celluloid
    include Celluloid::Logger

    def run_normal_command(options)
      multi_collect_and_run_jobs(options) do |apps, new_options|
        deploy_multiple_apps(apps, new_options)
        deploy_app(new_options) if !custom_command? && new_options['app'].present?
      end
    end

    def run_custom_command(options)
      stages = fetch_multi_stages
      return if stages.blank?
      stages = check_multi_stages(stages)
      multi_collect_and_run_jobs(options) do |apps, new_options|
        apps.each do |app|
          stages.each do |stage|
            deploy_app(new_options.merge('app' => app, 'stage' => stage))
          end
        end if apps.present?
      end
    end

  private

    def multi_collect_and_run_jobs(options = {}, &block)
      collect_jobs(options) do |new_options|
        applications = @dependency_tracker.fetch_apps_needed_for_deployment(new_options['app'], new_options['action'])
        backup_the_branch
        block.call(applications, new_options) if block_given?
      end
    end

    def backup_the_branch
      return if custom_command? || @argv['BRANCH'].blank?
      @branch_backup = @argv['BRANCH'].to_s
      @argv['BRANCH'] = nil
    end

    def deploy_multiple_apps(applications, options)
      options = options.stringify_keys
      return unless applications.present?
      applications.each do |app|
        deploy_app(options.merge('app' => app))
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
capistrano_multiconfig_parallel-0.13.2 lib/capistrano_multiconfig_parallel/managers/multi_app_manager.rb