class Capsium::Registry::Local
A static registry in a local directory (read-write). Push validates the .cap (Capsium::Package::Validator), copies it into the registry directory and atomically rewrites index.json (tmp + rename) with recomputed sha256 and size.
Attributes
dir
[R]
String
Public Class Methods
(String dir) → void
Source
# File lib/capsium/registry/local.rb, line 16 def initialize(dir) super() if File.exist?(dir) && !File.directory?(dir) raise InvalidRegistryError, "registry path is not a directory: #{dir}" end @dir = dir end
Calls superclass method
Capsium::Registry::new
Public Instance Methods
(String cap_path) → Entry
Source
# File lib/capsium/registry/local.rb, line 31 def push(cap_path) validate_package!(cap_path) entry = build_entry(read_metadata(cap_path), cap_path) FileUtils.mkdir_p(dir) atomic_copy(cap_path, File.join(dir, entry.file)) record(entry) entry end
Validates cap_path, copies it into the registry as “<name>-<version>.cap” and records it in index.json. Returns the recorded Entry. Raises InvalidPackageError when the package fails validation.