Sha256: c794b79b0bf2711e630d39706c5dc191562bc3dd7977f7e31c819cc969556d15

Contents?: true

Size: 883 Bytes

Versions: 95

Compression:

Stored size: 883 Bytes

Contents

# frozen_string_literal: true

module Orchestration
  class Settings
    def initialize(path)
      @path = path
      @dirty = false
      @exist = File.exist?(path)
    end

    def get(identifier)
      identifier.to_s.split('.').reduce(config) do |result, key|
        (result || {}).fetch(key)
      end
    rescue KeyError
      nil
    end

    def set(identifier, val)
      *keys, setting_key = identifier.to_s.split('.')
      new_config = config || {}
      parent = keys.reduce(new_config) { |result, key| result[key] ||= {} }
      parent[setting_key] = val
      @dirty ||= config != new_config
      File.write(@path, new_config.to_yaml)
    end

    def dirty?
      @dirty
    end

    def exist?
      @exist
    end

    private

    def config
      File.write(@path, {}.to_yaml) unless File.exist?(@path)
      YAML.safe_load(File.read(@path))
    end
  end
end

Version data entries

95 entries across 95 versions & 1 rubygems

Version Path
orchestration-0.7.15 lib/orchestration/settings.rb
orchestration-0.6.16 lib/orchestration/settings.rb
orchestration-0.7.14 lib/orchestration/settings.rb
orchestration-0.7.13 lib/orchestration/settings.rb
orchestration-0.6.15 lib/orchestration/settings.rb
orchestration-0.7.12 lib/orchestration/settings.rb
orchestration-0.6.14 lib/orchestration/settings.rb
orchestration-0.7.11 lib/orchestration/settings.rb
orchestration-0.6.13 lib/orchestration/settings.rb
orchestration-0.7.10 lib/orchestration/settings.rb
orchestration-0.7.9 lib/orchestration/settings.rb
orchestration-0.6.12 lib/orchestration/settings.rb
orchestration-0.7.8 lib/orchestration/settings.rb
orchestration-0.6.11 lib/orchestration/settings.rb
orchestration-0.7.6 lib/orchestration/settings.rb
orchestration-0.6.10 lib/orchestration/settings.rb
orchestration-0.7.5 lib/orchestration/settings.rb
orchestration-0.7.4 lib/orchestration/settings.rb
orchestration-0.6.9 lib/orchestration/settings.rb
orchestration-0.6.8 lib/orchestration/settings.rb