Sha256: cadd5c7cac33c7aa69684989315bdd8843df62b284d4e9c8eda84dd90ec6264a

Contents?: true

Size: 1.34 KB

Versions: 161

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true

require 'avm/entries/jobs/with_variables_source'
require 'avm/result'
require 'eac_cli/core_ext'

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

          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

          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
end

Version data entries

161 entries across 161 versions & 2 rubygems

Version Path
avm-0.94.1 lib/avm/entries/jobs/base.rb
eac_tools-0.98.0 sub/avm/lib/avm/entries/jobs/base.rb
avm-0.94.0 lib/avm/entries/jobs/base.rb
eac_tools-0.94.0 sub/avm/lib/avm/entries/jobs/base.rb
avm-0.93.0 lib/avm/entries/jobs/base.rb
eac_tools-0.92.0 sub/avm/lib/avm/entries/jobs/base.rb
avm-0.92.0 lib/avm/entries/jobs/base.rb
eac_tools-0.91.0 sub/avm/lib/avm/entries/jobs/base.rb
avm-0.90.1 lib/avm/entries/jobs/base.rb
eac_tools-0.87.1 sub/avm/lib/avm/entries/jobs/base.rb
avm-0.90.0 lib/avm/entries/jobs/base.rb
eac_tools-0.87.0 sub/avm/lib/avm/entries/jobs/base.rb
avm-0.89.0 lib/avm/entries/jobs/base.rb
eac_tools-0.86.12 sub/avm/lib/avm/entries/jobs/base.rb
avm-0.88.0 lib/avm/entries/jobs/base.rb
eac_tools-0.86.11 sub/avm/lib/avm/entries/jobs/base.rb
avm-0.87.0 lib/avm/entries/jobs/base.rb
eac_tools-0.86.8 sub/avm/lib/avm/entries/jobs/base.rb
avm-0.86.2 lib/avm/entries/jobs/base.rb
eac_tools-0.86.7 sub/avm/lib/avm/entries/jobs/base.rb