Sha256: 6338643d65075eeda11effd783fea211e851c2e976b397e8a26228734c769671

Contents?: true

Size: 1.3 KB

Versions: 13

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

module Carioca
  class RegistryFile
    attr_accessor :validated, :altered

    include Carioca::Constants

    def initialize(filename:)
      @filename = filename
      @candidates = {}
      @validated = {}
      @altered = []
      open
    end

    def altered?
      !@altered.empty?
    end

    def create!(force: false)
      write_ok = true
      write_ok = force if File.exist? @filename
      File.write(@filename, @validated.to_yaml) if write_ok
    end

    def save!
      create! force: true
    end

    def add(service:, definition:)
      checker = Carioca::Services::Validator.new service: service, definition: definition
      checker.validate!
      @validated[service] = checker.definition
    end

    def open
      if File.exist?(@filename)
        @candidates = YAML.load_file(@filename)
      else
        create!
      end
      prepare!
    end

    private

    def prepare!
      save = @candidates.dup
      @candidates.delete_if { |key, _value| BUILTINS.keys.include? key }
      @altered = save.keys - @candidates.keys
      @candidates.each do |service, definition|
        checker = Carioca::Services::Validator.new service: service, definition: definition
        checker.validate!
        @validated[service] = checker.definition
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
carioca-2.1.4 lib/carioca/registry_file.rb
carioca-2.1.3 lib/carioca/registry_file.rb
carioca-2.1.2 lib/carioca/registry_file.rb
carioca-2.1.1 lib/carioca/registry_file.rb
carioca-2.1.0 lib/carioca/registry_file.rb
carioca-2.0.12 lib/carioca/registry_file.rb
carioca-2.0.11 lib/carioca/registry_file.rb
carioca-2.0.10 lib/carioca/registry_file.rb
carioca-2.0.9 lib/carioca/registry_file.rb
carioca-2.0.8 lib/carioca/registry_file.rb
carioca-2.0.7 lib/carioca/registry_file.rb
carioca-2.0.6 lib/carioca/registry_file.rb
carioca-2.0.5 lib/carioca/registry_file.rb