Class: Bukin::FileState
- Inherits:
-
Object
- Object
- Bukin::FileState
- Defined in:
- lib/bukin/state.rb
Instance Method Summary collapse
- #[](name, version = nil) ⇒ Object
- #[]=(name, version = nil, value) ⇒ Object
- #delete(name) ⇒ Object
-
#initialize(path, base_path) ⇒ FileState
constructor
A new instance of FileState.
- #installed?(name, version) ⇒ Boolean
- #names ⇒ Object
- #save ⇒ Object
Constructor Details
#initialize(path, base_path) ⇒ FileState
Returns a new instance of FileState.
28 29 30 31 32 |
# File 'lib/bukin/state.rb', line 28 def initialize(path, base_path) @path = path @base_path = base_path @files = (File.exist?(@path) ? YAML::load_file(@path) : {}) end |
Instance Method Details
#[](name, version = nil) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/bukin/state.rb', line 34 def [](name, version = nil) if version (@files[name] || {})[version] else @files[name] end end |
#[]=(name, version = nil, value) ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/bukin/state.rb', line 42 def []=(name, version = nil, value) if version (@files[name] ||= {})[version] = value else @files[name] = value end end |
#delete(name) ⇒ Object
59 60 61 62 63 64 65 66 67 |
# File 'lib/bukin/state.rb', line 59 def delete(name) (self[name] || {}).each do |version, files| files.each do |file| FileUtils.rm_r(file) if File.exist?(file) end end @files.delete(name) end |
#installed?(name, version) ⇒ Boolean
50 51 52 53 54 55 56 57 |
# File 'lib/bukin/state.rb', line 50 def installed?(name, version) files = self[name, version] return false unless files files.all? do |file| File.exist?(File.join(@base_path, file)) end end |
#names ⇒ Object
69 70 71 |
# File 'lib/bukin/state.rb', line 69 def names @files.keys end |
#save ⇒ Object
73 74 75 |
# File 'lib/bukin/state.rb', line 73 def save File.open(@path, "w") {|file| file.write @files.to_yaml} end |