increments/circleci-parallel

View on GitHub
lib/circleci/parallel/configuration.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'circleci/parallel/configuration/configuration_collection_proxy'
require 'circleci/parallel/configuration/master_node_configuration'
require 'circleci/parallel/configuration/slave_node_configuration'
require 'circleci/parallel/hook'

module CircleCI
  module Parallel
    class Configuration
      # @return [Boolean] whether progress messages should be outputted to STDOUT (default: false)
      attr_accessor :silent

      # @return [Boolean] whether mock mode is enabled (default: false)
      attr_accessor :mock_mode

      def initialize
        @silent = false
        @mock_mode = false
      end

      # @return [ConfigurationCollectionProxy]
      def on_every_node
        @every_node_configuration ||=
          ConfigurationCollectionProxy.new(master_node_configuration, slave_node_configuration)
      end

      # @return [MasterNodeConfiguration]
      def on_master_node
        master_node_configuration
      end

      # @return [SlaveNodeConfiguration]
      def on_each_slave_node
        slave_node_configuration
      end

      # @deprecated Use `on_every_node.before_sync` instead.
      def before_join(chdir: true, &block)
        on_every_node.before_sync(chdir: chdir, &block)
      end

      # @deprecated Use `on_master_node.after_download` instead.
      def after_download(chdir: true, &block)
        on_master_node.after_download(chdir: chdir, &block)
      end

      # @deprecated Use `on_every_node.after_sync` instead.
      def after_join(chdir: true, &block)
        on_every_node.after_sync(chdir: chdir, &block)
      end

      # @api private
      def master_node_configuration
        @master_node_configuration ||= MasterNodeConfiguration.new
      end

      # @api private
      def slave_node_configuration
        @slave_node_configuration ||= SlaveNodeConfiguration.new
      end
    end
  end
end