Sha256: fa59e28d0fadb0b2f357c472bcc719967a2db64d9c33c8b36a67e5f7bdf0d84c

Contents?: true

Size: 1.02 KB

Versions: 6

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

require 'avm/data/rotate'
require 'eac_ruby_utils/core_ext'
require 'eac_ruby_utils/fs/temp'

module Avm
  module Data
    class Performer
      acts_as_abstract(:cannot_perform_reason, :internal_perform)
      acts_as_immutable
      common_constructor :data_owner
      immutable_accessor :exclude, :include, type: :set

      # @return [Enumerable]
      def immutable_constructor_args
        [data_owner]
      end

      # @return [self]
      def perform
        raise "Cannot run: #{cannot_run_reason}" unless performable?

        internal_perform

        self
      end

      # @return [Boolean]
      def performable?
        cannot_perform_reason.blank?
      end

      protected

      def include_excludes_arguments
        options = include_excludes_options
        options.any? ? [options] : []
      end

      def include_excludes_options
        r = {}
        r[:includes] = includes if includes.any?
        r[:excludes] = excludes if excludes.any?
        r
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
avm-0.74.0 lib/avm/data/performer.rb
eac_tools-0.68.0 sub/avm/lib/avm/data/performer.rb
avm-0.73.1 lib/avm/data/performer.rb
eac_tools-0.67.1 sub/avm/lib/avm/data/performer.rb
avm-0.73.0 lib/avm/data/performer.rb
eac_tools-0.67.0 sub/avm/lib/avm/data/performer.rb