Sha256: 9d473138e3102487341291b8a4da19268e595df2e211812c43dbac054206b24d

Contents?: true

Size: 1.77 KB

Versions: 28

Compression:

Stored size: 1.77 KB

Contents

# frozen_string_literal: true

require 'avm/instances/ids'
require 'avm/with/application_stereotype'
require 'avm/with/extra_subcommands'
require 'eac_ruby_utils/require_sub'
require 'eac_ruby_utils/simple_cache'
require 'avm/entries/base'

module Avm
  module Instances
    class Base
      enable_abstract_methods
      enable_listable
      enable_simple_cache
      include ::Avm::Entries::Base
      require_sub __FILE__, include_modules: true
      include ::Avm::With::ExtraSubcommands
      include ::Avm::With::ApplicationStereotype

      lists.add_string :access, :local, :ssh

      ID_PATTERN = /\A([a-z0-9]+(?:-[a-z0-9]+)*)_(.+)\z/.freeze

      class << self
        def by_id(id)
          parsed_id = ::Avm::Instances::Ids.parse!(id)
          require 'avm/applications/base'
          new(::Avm::Applications::Base.new(parsed_id.application_id), parsed_id.instance_suffix)
        end
      end

      common_constructor :application, :suffix do
        self.suffix = suffix.to_s
      end

      # @return [Avm::Instances::Data::Package]
      def data_package
        @data_package ||= data_package_create
      end

      # @return [Avm::Instances::Data::Package]
      def data_package_create
        ::Avm::Instances::Data::Package.new(self)
      end

      # @return [String]
      def id
        ::Avm::Instances::Ids.build(application.id, suffix)
      end

      def to_s
        id
      end

      def host_env_uncached
        case install_scheme
        when 'file' then ::EacRubyUtils::Envs.local
        when 'ssh' then ::EacRubyUtils::Envs.ssh(install_url)
        else raise("Unmapped access value: \"#{install_scheme}\"")
        end
      end

      private

      def source_instance_uncached
        ::Avm::Instances::Base.by_id(source_instance_id)
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 2 rubygems

Version Path
avm-0.92.0 lib/avm/instances/base.rb
eac_tools-0.91.0 sub/avm/lib/avm/instances/base.rb
avm-0.90.1 lib/avm/instances/base.rb
eac_tools-0.87.1 sub/avm/lib/avm/instances/base.rb
avm-0.90.0 lib/avm/instances/base.rb
eac_tools-0.87.0 sub/avm/lib/avm/instances/base.rb
avm-0.89.0 lib/avm/instances/base.rb
eac_tools-0.86.12 sub/avm/lib/avm/instances/base.rb
avm-0.88.0 lib/avm/instances/base.rb
eac_tools-0.86.11 sub/avm/lib/avm/instances/base.rb
avm-0.87.0 lib/avm/instances/base.rb
eac_tools-0.86.8 sub/avm/lib/avm/instances/base.rb
avm-0.86.2 lib/avm/instances/base.rb
eac_tools-0.86.7 sub/avm/lib/avm/instances/base.rb
avm-0.86.1 lib/avm/instances/base.rb
eac_tools-0.86.5 sub/avm/lib/avm/instances/base.rb
avm-0.86.0 lib/avm/instances/base.rb
eac_tools-0.86.4 sub/avm/lib/avm/instances/base.rb
eac_tools-0.86.3 sub/avm/lib/avm/instances/base.rb
avm-0.85.0 lib/avm/instances/base.rb