Sha256: 8077d497df8ecd492a9327c06d3daff478f807d4b3c6b242a6f3429332ed9f25

Contents?: true

Size: 1.73 KB

Versions: 33

Compression:

Stored size: 1.73 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/require_sub'
require 'eac_ruby_utils/simple_cache'
require 'avm/instances/entries'
require 'avm/instances/entry_keys'
::EacRubyUtils.require_sub(__FILE__)

module Avm
  module Instances
    class Base
      include ::EacRubyUtils::Listable
      include ::EacRubyUtils::SimpleCache
      include ::Avm::Instances::Base::AutoValues
      include ::Avm::Instances::Base::Dockerizable
      include ::Avm::Instances::Entries

      lists.add_string :access, :local, :ssh

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

      class << self
        def by_id(id)
          application_id, suffix = parse_id(id)
          require 'avm/instances/application'
          new(::Avm::Instances::Application.new(application_id), suffix)
        end

        private

        def parse_id(id)
          m = ID_PATTERN.match(id)
          return [m[1], m[2]] if m

          raise "ID Pattern no matched: \"#{id}\""
        end
      end

      attr_reader :application, :suffix

      def initialize(application, suffix)
        @application = application
        @suffix = suffix.to_s
      end

      def id
        "#{application.id}_#{suffix}"
      end

      def to_s
        id
      end

      def host_env_uncached
        access = read_entry(:access, list: ::Avm::Instances::Base.lists.access.values)
        case access
        when 'local' then ::EacRubyUtils::Envs.local
        when 'ssh' then ::EacRubyUtils::Envs.ssh(read_entry('ssh.url'))
        else raise("Unmapped access value: \"#{access}\"")
        end
      end

      private

      def source_instance_uncached
        ::Avm::Instances::Base.by_id(read_entry(::Avm::Instances::EntryKeys::SOURCE_INSTANCE_ID))
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
avm-tools-0.95.0 lib/avm/instances/base.rb
avm-tools-0.94.3 lib/avm/instances/base.rb
avm-tools-0.94.2 lib/avm/instances/base.rb
avm-tools-0.94.1 lib/avm/instances/base.rb
avm-tools-0.94.0 lib/avm/instances/base.rb
avm-tools-0.93.0 lib/avm/instances/base.rb
avm-tools-0.92.0 lib/avm/instances/base.rb
avm-tools-0.91.0 lib/avm/instances/base.rb
avm-tools-0.90.0 lib/avm/instances/base.rb
avm-tools-0.89.0 lib/avm/instances/base.rb
avm-tools-0.88.0 lib/avm/instances/base.rb
avm-tools-0.87.1 lib/avm/instances/base.rb
avm-tools-0.87.0 lib/avm/instances/base.rb
avm-tools-0.86.0 lib/avm/instances/base.rb
avm-tools-0.85.1 lib/avm/instances/base.rb
avm-tools-0.85.0 lib/avm/instances/base.rb
avm-tools-0.84.0 lib/avm/instances/base.rb
avm-tools-0.83.0 lib/avm/instances/base.rb
avm-tools-0.82.1 lib/avm/instances/base.rb
avm-tools-0.82.0 lib/avm/instances/base.rb