Class: Wabi::Lockfile
- Inherits:
-
Object
- Object
- Wabi::Lockfile
- Defined in:
- lib/wabi/lockfile.rb
Overview
Manages config/wabi.lock.json in a user’s Rails app. Tracks installed components, versions, hashes, and registry origin.
Constant Summary collapse
- DEFAULT_REGISTRY =
"https://wabikit.dev/r"
Instance Attribute Summary collapse
-
#components ⇒ Object
readonly
Returns the value of attribute components.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#registry ⇒ Object
readonly
Returns the value of attribute registry.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(path:, data: {}) ⇒ Lockfile
constructor
A new instance of Lockfile.
- #record(name, version:, hash:) ⇒ Object
- #save ⇒ Object
Constructor Details
#initialize(path:, data: {}) ⇒ Lockfile
Returns a new instance of Lockfile.
24 25 26 27 28 |
# File 'lib/wabi/lockfile.rb', line 24 def initialize(path:, data: {}) @path = path @registry = data["registry"] || DEFAULT_REGISTRY @components = data["components"] || {} end |
Instance Attribute Details
#components ⇒ Object (readonly)
Returns the value of attribute components.
12 13 14 |
# File 'lib/wabi/lockfile.rb', line 12 def components @components end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
12 13 14 |
# File 'lib/wabi/lockfile.rb', line 12 def path @path end |
#registry ⇒ Object (readonly)
Returns the value of attribute registry.
12 13 14 |
# File 'lib/wabi/lockfile.rb', line 12 def registry @registry end |
Class Method Details
.load(path) ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'lib/wabi/lockfile.rb', line 14 def self.load(path) data = if File.exist?(path) JSON.parse(File.read(path)) else {} end new(path: path, data: data) end |
Instance Method Details
#record(name, version:, hash:) ⇒ Object
30 31 32 |
# File 'lib/wabi/lockfile.rb', line 30 def record(name, version:, hash:) @components[name] = { "version" => version, "hash" => hash } end |
#save ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/wabi/lockfile.rb', line 34 def save FileUtils.mkdir_p(File.dirname(@path)) File.write(@path, JSON.pretty_generate({ "registry" => @registry, "components" => @components, })) end |