Sha256: e109e12d6b7a07b28166558b410a24be9470248b961832e39e0c9e16650c0eec

Contents?: true

Size: 1.48 KB

Versions: 51

Compression:

Stored size: 1.48 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/configs'
require 'eac_ruby_utils/core_ext'
require 'yaml'

module Avm
  module Instances
    class Configuration < ::EacRubyUtils::Configs
      require_sub __FILE__

      FILENAMES = %w[.avm.yml .avm.yaml].freeze

      class << self
        def find_by_path(path)
          path = ::Pathname.new(path.to_s) unless path.is_a?(::Pathname)
          internal_find_path(path.expand_path)
        end

        def find_in_path(path)
          absolute_pathname = path.to_pathname.expand_path
          if absolute_pathname.directory?
            FILENAMES.each do |filename|
              file = absolute_pathname.join(filename)
              return new(file) if file.exist?
            end
          end
          nil
        end

        private

        def internal_find_path(absolute_pathname)
          r = find_in_path(absolute_pathname)
          return r if r.present?

          internal_find_path(absolute_pathname.dirname) unless absolute_pathname.root?
        end
      end

      def initialize(path)
        super(nil, storage_path: path)
      end

      # Utility to read a configuration as a [EacRubyUtils::Envs::Command].
      # @return [EacRubyUtils::Envs::Command]
      def read_command(key)
        read_entry(key).if_present do |v|
          args = v.is_a?(::Enumerable) ? v.map(&:to_s) : ::Shellwords.split(v)
          ::EacRubyUtils::Envs.local.command(args).chdir(::File.dirname(storage_path))
        end
      end
    end
  end
end

Version data entries

51 entries across 51 versions & 1 rubygems

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