Sha256: 0d016c4d046ebd47569319e75b6a36ec42cd87df07d32ff5c8a74521bef3c388

Contents?: true

Size: 1.26 KB

Versions: 102

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

require 'avm/jobs/variables_source'
require 'avm/result'
require 'eac_cli/core_ext'

module Avm
  module Jobs
    module Base
      common_concern do
        include ::ActiveSupport::Callbacks

        enable_speaker
        enable_simple_cache
        enable_listable
        common_constructor :instance, :options, default: [{}] do
          if option_list.present?
            self.options = option_list.hash_keys_validate!(options.symbolize_keys)
          end
        end
        define_callbacks(*jobs)
      end

      module ClassMethods
        def jobs
          const_get('JOBS').dup
        end
      end

      module InstanceMethods
        def option_list
          nil
        end

        def run
          start_banner if respond_to?(:start_banner)
          run_jobs
          ::Avm::Result.success('Done!')
        rescue ::Avm::Result::Error => e
          e.to_result
        end

        def variables_source
          ::Avm::Jobs::VariablesSource.new(self, instance)
        end

        protected

        def run_jobs
          jobs.each do |job|
            run_callbacks job do
              send(job)
            end
          end
        end

        def jobs
          self.class.jobs
        end
      end
    end
  end
end

Version data entries

102 entries across 102 versions & 3 rubygems

Version Path
avm-0.44.0 lib/avm/jobs/base.rb
eac_tools-0.31.1 sub/avm/lib/avm/jobs/base.rb
eac_tools-0.31.0 sub/avm/lib/avm/jobs/base.rb
eac_tools-0.30.0 sub/avm/lib/avm/jobs/base.rb
avm-0.43.0 lib/avm/jobs/base.rb
eac_tools-0.29.0 sub/avm/lib/avm/jobs/base.rb
avm-0.42.0 lib/avm/jobs/base.rb
eac_tools-0.28.0 sub/avm/lib/avm/jobs/base.rb
eac_tools-0.27.2 sub/avm/lib/avm/jobs/base.rb
avm-0.41.1 lib/avm/jobs/base.rb
eac_tools-0.27.1 sub/avm/lib/avm/jobs/base.rb
avm-0.41.0 lib/avm/jobs/base.rb
eac_tools-0.27.0 sub/avm/lib/avm/jobs/base.rb
avm-0.40.0 lib/avm/jobs/base.rb
eac_tools-0.26.0 sub/avm/lib/avm/jobs/base.rb
avm-0.39.1 lib/avm/jobs/base.rb
eac_tools-0.25.1 sub/avm/lib/avm/jobs/base.rb
avm-0.39.0 lib/avm/jobs/base.rb
eac_tools-0.25.0 sub/avm/lib/avm/jobs/base.rb
avm-0.38.0 lib/avm/jobs/base.rb