Sha256: 52e221c39dad562ff192aeb433739fdc58415471e9a90ccf6cedd36bdea69c1d

Contents?: true

Size: 1.17 KB

Versions: 262

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

require 'avm/launcher/instances/settings'
require 'eac_ruby_utils/simple_cache'
require 'yaml'

module Avm
  module Launcher
    class Context
      class Settings
        include ::EacRubyUtils::SimpleCache

        def initialize(file)
          unless ::File.exist?(file)
            ::FileUtils.mkdir_p(::File.dirname(file))
            ::File.write(file, {}.to_yaml)
          end
          @data = YAML.load_file(file)
        end

        def instance_settings(instance)
          ::Avm::Launcher::Instances::Settings.new(value(['Instances', instance.name]))
        end

        private

        def excluded_projects_uncached
          enum_value(%w[Projects Exclude])
        end

        def excluded_paths_uncached
          enum_value(%w[Paths Exclude])
        end

        def enum_value(path)
          r = value(path)
          r.is_a?(Enumerable) ? r : []
        end

        def value(path)
          node_value(@data, path)
        end

        def node_value(data, path)
          return data if path.empty?
          return nil unless data.is_a?(Hash)

          node_value(data[path.first], path.drop(1))
        end
      end
    end
  end
end

Version data entries

262 entries across 262 versions & 3 rubygems

Version Path
avm-0.94.1 lib/avm/launcher/context/settings.rb
eac_tools-0.98.0 sub/avm/lib/avm/launcher/context/settings.rb
avm-0.94.0 lib/avm/launcher/context/settings.rb
eac_tools-0.94.0 sub/avm/lib/avm/launcher/context/settings.rb
avm-0.93.0 lib/avm/launcher/context/settings.rb
eac_tools-0.92.0 sub/avm/lib/avm/launcher/context/settings.rb
avm-0.92.0 lib/avm/launcher/context/settings.rb
eac_tools-0.91.0 sub/avm/lib/avm/launcher/context/settings.rb
avm-0.90.1 lib/avm/launcher/context/settings.rb
eac_tools-0.87.1 sub/avm/lib/avm/launcher/context/settings.rb
avm-0.90.0 lib/avm/launcher/context/settings.rb
eac_tools-0.87.0 sub/avm/lib/avm/launcher/context/settings.rb
avm-0.89.0 lib/avm/launcher/context/settings.rb
eac_tools-0.86.12 sub/avm/lib/avm/launcher/context/settings.rb
avm-0.88.0 lib/avm/launcher/context/settings.rb
eac_tools-0.86.11 sub/avm/lib/avm/launcher/context/settings.rb
avm-0.87.0 lib/avm/launcher/context/settings.rb
eac_tools-0.86.8 sub/avm/lib/avm/launcher/context/settings.rb
avm-0.86.2 lib/avm/launcher/context/settings.rb
eac_tools-0.86.7 sub/avm/lib/avm/launcher/context/settings.rb