Sha256: b82594a9da67dc89e0fe3a8a6dacd3daad9f1f6c8ce4dd648910f7efd470aa4b

Contents?: true

Size: 1.66 KB

Versions: 13

Compression:

Stored size: 1.66 KB

Contents

# frozen_string_literal: true

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
      require_sub __FILE__, include_modules: true
      include ::Avm::Entries::Base
      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)
          application_id, suffix = parse_id(id)
          require 'avm/applications/base'
          new(::Avm::Applications::Base.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

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

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

      def to_s
        id
      end

      def host_env_uncached
        install_uri = entry(::Avm::Instances::EntryKeys::INSTALL_URL).value.to_uri
        case install_uri.scheme
        when 'local' then ::EacRubyUtils::Envs.local
        when 'ssh' then ::EacRubyUtils::Envs.ssh(install_uri)
        else raise("Unmapped access value: \"#{install_uri}\"")
        end
      end

      private

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

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
avm-0.35.1 lib/avm/instances/base.rb
eac_tools-0.22.0 sub/avm/lib/avm/instances/base.rb
eac_tools-0.21.0 sub/avm/lib/avm/instances/base.rb
eac_tools-0.20.0 sub/avm/lib/avm/instances/base.rb
eac_tools-0.19.0 sub/avm/lib/avm/instances/base.rb
avm-0.35.0 lib/avm/instances/base.rb
eac_tools-0.18.0 sub/avm/lib/avm/instances/base.rb
avm-0.34.0 lib/avm/instances/base.rb
eac_tools-0.17.0 sub/avm/lib/avm/instances/base.rb
eac_tools-0.16.1 sub/avm/lib/avm/instances/base.rb
eac_tools-0.16.0 sub/avm/lib/avm/instances/base.rb
avm-0.33.0 lib/avm/instances/base.rb
eac_tools-0.15.0 sub/avm/lib/avm/instances/base.rb