Class: Gemvault::Manifest
- Inherits:
-
Object
- Object
- Gemvault::Manifest
- Defined in:
- lib/gemvault/manifest.rb
Overview
The index stored as the first entry of a Tarvault. Records each gem's identity, timestamp, and SHA256 digest so listing and integrity checks never require reading every gem blob. Its on-disk notation belongs to Gemvault::ManifestText.
Defined Under Namespace
Classes: StoredGem
Constant Summary collapse
- FORMAT_VERSION =
3
Class Method Summary collapse
Instance Method Summary collapse
- #find(entry) ⇒ Object
- #gem_entries ⇒ Object
-
#initialize(created_at:, records:, format_version: FORMAT_VERSION) ⇒ Manifest
constructor
A new instance of Manifest.
- #matching(reference) ⇒ Object
- #size ⇒ Object
- #with_record(record) ⇒ Object
- #without(dropped) ⇒ Object
Constructor Details
#initialize(created_at:, records:, format_version: FORMAT_VERSION) ⇒ Manifest
Returns a new instance of Manifest.
24 25 26 |
# File 'lib/gemvault/manifest.rb', line 24 def initialize(created_at:, records:, format_version: FORMAT_VERSION) super end |
Class Method Details
.digest(bytes) ⇒ Object
20 |
# File 'lib/gemvault/manifest.rb', line 20 def self.digest(bytes) = Digest::SHA256.hexdigest(bytes) |
.empty(created_at:) ⇒ Object
22 |
# File 'lib/gemvault/manifest.rb', line 22 def self.empty(created_at:) = new(created_at:, records: []) |
Instance Method Details
#find(entry) ⇒ Object
32 33 34 |
# File 'lib/gemvault/manifest.rb', line 32 def find(entry) records.find { |record| record.gem.same_identity_as?(entry) } end |
#gem_entries ⇒ Object
42 43 44 |
# File 'lib/gemvault/manifest.rb', line 42 def gem_entries records.map(&:gem).sort_by { |gem| [gem.name, gem.version] } end |
#matching(reference) ⇒ Object
36 37 38 |
# File 'lib/gemvault/manifest.rb', line 36 def matching(reference) records.select { |record| reference.matches?(record.gem) } end |
#size ⇒ Object
40 |
# File 'lib/gemvault/manifest.rb', line 40 def size = records.size |
#with_record(record) ⇒ Object
28 |
# File 'lib/gemvault/manifest.rb', line 28 def with_record(record) = with(records: records + [record]) |
#without(dropped) ⇒ Object
30 |
# File 'lib/gemvault/manifest.rb', line 30 def without(dropped) = with(records: records - dropped) |