Sha256: 6819132618b0e7ccc1f1e7219db23f94909a40d8756493c573fde054c0f42dea
Contents?: true
Size: 1.1 KB
Versions: 3
Compression:
Stored size: 1.1 KB
Contents
require 'fileutils' require 'yaml/store' require_relative 'mapper' require_relative 'settings' require_relative 'sig_finder' require_relative 'signature' require_relative 'tags' module Signore class Repo def initialize(path: Settings.new.repo_path, sig_finder: SigFinder) @path = path @sig_finder = sig_finder initialise_store if path.zero? or not path.exist? @store = YAML::Store.new(path) end def <<(sig) sigs << sig persist end def find(tags: Tags.new) sig_finder.find(sigs, tags: tags) end def sigs @sigs ||= store.transaction(true) { store['signatures'] }.map do |elem| elem.is_a?(Signature) ? elem : Mapper.from_h(elem) end end private_attr_reader :path, :sig_finder, :store private def initialise_store FileUtils.mkdir_p path.dirname FileUtils.touch path YAML::Store.new(path).transaction { |store| store['signatures'] = [] } end def persist hashes = sigs.map { |sig| Mapper.to_h(sig) } store.transaction { store['signatures'] = hashes } end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
signore-0.4.1 | lib/signore/repo.rb |
signore-0.4.0 | lib/signore/repo.rb |
signore-0.3.3 | lib/signore/repo.rb |