Sha256: 4f2da3d79ec27758094e7fc780847477f7039fcd2629e59c45312a4fbe6f9148

Contents?: true

Size: 949 Bytes

Versions: 69

Compression:

Stored size: 949 Bytes

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/configs/base'
require 'yaml'

module EacRubyUtils
  class Configs
    class File < ::EacRubyUtils::Configs::Base
      attr_reader :path, :options

      # Valid options: [:autosave]
      def initialize(path, options = {})
        @path = path
        @options = options.to_sym_keys_hash.freeze
        super(raw_data_from_file)
      end

      def save
        ::FileUtils.mkdir_p(::File.dirname(path))
        ::File.write(path, data.to_h.to_yaml)
      end

      def load
        replace(raw_data_from_file)
      end

      def write(entry_key, entry_value)
        super
        save if autosave?
      end

      def autosave?
        options[:autosave] ? true : false
      end

      private

      def raw_data_from_file
        if ::File.exist?(path) && ::File.size(path).positive?
          ::YAML.load_file(path)
        else
          {}
        end
      end
    end
  end
end

Version data entries

69 entries across 69 versions & 3 rubygems

Version Path
avm-tools-0.98.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
avm-tools-0.97.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
avm-tools-0.96.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
eac_ruby_utils-0.63.0 lib/eac_ruby_utils/configs/file.rb
avm-tools-0.95.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
eac_ruby_utils-0.62.1 lib/eac_ruby_utils/configs/file.rb
avm-tools-0.94.3 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
eac_ruby_utils-0.62.0 lib/eac_ruby_utils/configs/file.rb
eac_ruby_utils-0.61.0 lib/eac_ruby_utils/configs/file.rb
avm-tools-0.94.2 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
eac_ruby_utils-0.60.0 lib/eac_ruby_utils/configs/file.rb
avm-tools-0.94.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
eac_ruby_utils-0.59.0 lib/eac_ruby_utils/configs/file.rb
ehbrs-tools-0.20.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
avm-tools-0.94.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
avm-tools-0.93.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
avm-tools-0.92.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
avm-tools-0.91.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
avm-tools-0.90.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb
avm-tools-0.89.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb