Sha256: b66dfcd8e9bbeafca575fb5471a3861a6dd893d98e711bc6ce9b6ceedee221d4

Contents?: true

Size: 1.36 KB

Versions: 13

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true

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

module Avm
  module Apps
    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::Apps::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
end

Version data entries

13 entries across 13 versions & 3 rubygems

Version Path
avm-tools-0.106.0 vendor/avm-apps/lib/avm/apps/jobs/base.rb
avm-apps-0.4.1 lib/avm/apps/jobs/base.rb
avm-tools-0.105.0 vendor/avm-apps/lib/avm/apps/jobs/base.rb
avm-tools-0.104.0 vendor/avm-apps/lib/avm/apps/jobs/base.rb
avm-tools-0.103.1 vendor/avm-apps/lib/avm/apps/jobs/base.rb
avm-tools-0.103.0 vendor/avm-apps/lib/avm/apps/jobs/base.rb
avm-apps-0.4.0 lib/avm/apps/jobs/base.rb
ehbrs-tools-0.22.0 vendor/avm-apps/lib/avm/apps/jobs/base.rb
avm-tools-0.102.2 vendor/avm-apps/lib/avm/apps/jobs/base.rb
avm-tools-0.102.1 vendor/avm-apps/lib/avm/apps/jobs/base.rb
avm-tools-0.102.0 vendor/avm-apps/lib/avm/apps/jobs/base.rb
avm-apps-0.3.0 lib/avm/apps/jobs/base.rb
avm-tools-0.101.0 vendor/avm-apps/lib/avm/apps/jobs/base.rb