class BooticCli::Store

Constants

DEFAULT_NAMESPACE
DIRNAME
FILE_NAME
VERSION

Attributes

base_dir[R]
namespace[R]

Public Class Methods

new(base_dir: ENV['HOME'], dir: DIRNAME, namespace: DEFAULT_NAMESPACE) click to toggle source
# File lib/bootic_cli/store.rb, line 12
def initialize(base_dir: ENV['HOME'], dir: DIRNAME, namespace: DEFAULT_NAMESPACE)
  @base_dir = File.join(base_dir, dir)
  @namespace = namespace
  FileUtils.mkdir_p @base_dir
end

Public Instance Methods

[](k) click to toggle source
# File lib/bootic_cli/store.rb, line 24
def [](k)
  hash = store[namespace] || {}
  hash[k]
end
[]=(k, v) click to toggle source
# File lib/bootic_cli/store.rb, line 18
def []=(k, v)
  hash = store[namespace] || {}
  hash[k] = v
  store[namespace] = hash
end
erase() click to toggle source
# File lib/bootic_cli/store.rb, line 33
def erase
  FileUtils.rm_rf base_dir
end
needs_upgrade?() click to toggle source
# File lib/bootic_cli/store.rb, line 37
def needs_upgrade?
  transaction do
    store['version'].to_i < VERSION
  end
end
transaction(&block) click to toggle source
# File lib/bootic_cli/store.rb, line 29
def transaction(&block)
  store.transaction(&block)
end
upgrade!() click to toggle source
# File lib/bootic_cli/store.rb, line 43
def upgrade!
  return unless needs_upgrade?

  transaction do
    current_values = {}
    store.roots.each do |r|
      v = store[r]
      store.delete(r)
      current_values[r] = v
    end

    current_values.each do |k, v|
      self[k] = v
    end

    store['version'] = VERSION
  end
end

Private Instance Methods

store() click to toggle source
# File lib/bootic_cli/store.rb, line 66
def store
  @store ||= PStore.new(File.join(base_dir, FILE_NAME))
end