Sha256: f39d2cdf8d6d1684f0950c174713ffc25efd76a6df52f32588fec87525d09b1d

Contents?: true

Size: 1.87 KB

Versions: 100

Compression:

Stored size: 1.87 KB

Contents

# frozen_string_literal: true

require 'avm/launcher/errors/non_project'
require 'avm/registry'
require 'eac_ruby_utils/speaker/sender'

module Avm
  module Launcher
    module Instances
      module Base
        class << self
          def extend_object(object)
            object.extend ::EacRubyUtils::SimpleCache
            object.extend ::EacRubyUtils::Speaker::Sender
            object.extend ::Avm::Launcher::Instances::Base::Cache
            object.extend ::Avm::Launcher::Instances::Base::Publishing
            super
          end

          def instanciate(path, parent)
            unless path.is_a?(::Avm::Launcher::Instances::Base)
              raise ::Avm::Launcher::Errors::NonProject, path unless path.project?

              path.extend(::Avm::Launcher::Instances::Base)
              path.parent = parent
            end
            path
          end
        end

        require_sub __FILE__

        attr_accessor :parent

        # @return [Avm::Applications::Base]
        def application
          @application ||= ::Avm::Registry.applications.detect(project_name)
        end

        def name
          logical
        end

        def stereotype?(stereotype)
          stereotypes.include?(stereotype)
        end

        def to_parent_path
          return self unless @parent

          logical.gsub(/\A#{Regexp.quote(@parent.logical)}/, '')
        end

        def project?
          stereotypes.any?
        end

        def project_name
          ::File.basename(logical)
        end

        def included?
          !::Avm::Launcher::Context.current.settings.excluded_projects.include?(project_name)
        end

        def to_h
          super.to_h.merge(parent: parent ? parent.logical : nil)
        end

        private

        def options_uncached
          ::Avm::Launcher::Context.current.settings.instance_settings(self)
        end
      end
    end
  end
end

Version data entries

100 entries across 100 versions & 2 rubygems

Version Path
avm-0.84.0 lib/avm/launcher/instances/base.rb
eac_tools-0.83.0 sub/avm/lib/avm/launcher/instances/base.rb
avm-0.83.0 lib/avm/launcher/instances/base.rb
eac_tools-0.82.0 sub/avm/lib/avm/launcher/instances/base.rb
avm-0.82.0 lib/avm/launcher/instances/base.rb
eac_tools-0.81.0 sub/avm/lib/avm/launcher/instances/base.rb
eac_tools-0.80.0 sub/avm/lib/avm/launcher/instances/base.rb
avm-0.81.0 lib/avm/launcher/instances/base.rb
eac_tools-0.79.0 sub/avm/lib/avm/launcher/instances/base.rb
avm-0.80.0 lib/avm/launcher/instances/base.rb
eac_tools-0.78.0 sub/avm/lib/avm/launcher/instances/base.rb
eac_tools-0.77.1 sub/avm/lib/avm/launcher/instances/base.rb
eac_tools-0.77.0 sub/avm/lib/avm/launcher/instances/base.rb
eac_tools-0.76.1 sub/avm/lib/avm/launcher/instances/base.rb
eac_tools-0.76.0 sub/avm/lib/avm/launcher/instances/base.rb
eac_tools-0.75.2 sub/avm/lib/avm/launcher/instances/base.rb
eac_tools-0.75.1 sub/avm/lib/avm/launcher/instances/base.rb
eac_tools-0.75.0 sub/avm/lib/avm/launcher/instances/base.rb
eac_tools-0.74.1 sub/avm/lib/avm/launcher/instances/base.rb
eac_tools-0.74.0 sub/avm/lib/avm/launcher/instances/base.rb