Class: Bukin::FileState

Inherits:
Object
  • Object
show all
Defined in:
lib/bukin/state.rb

Instance Method Summary collapse

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

Returns:

  • (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

#namesObject



69
70
71
# File 'lib/bukin/state.rb', line 69

def names
  @files.keys
end

#saveObject



73
74
75
# File 'lib/bukin/state.rb', line 73

def save
  File.open(@path, "w") {|file| file.write @files.to_yaml}
end