Sha256: 308677901aa6c95c01f4247cfcd5578e61b19337010b3638342cb5a0687bf451

Contents?: true

Size: 1.36 KB

Versions: 11

Compression:

Stored size: 1.36 KB

Contents

module VPNMaker
  class KeyDB
    def initialize(path)
      @path = path
      @db = File.exists?(path) ? YAML.load_file(path) : {}
      @touched = false
    end

    def [](k); @db[k]; end

    def []=(k, v)
      @db[k] = v
      @db[:modified] = Time.now
      @touched = true
    end

    def touched!
      @touched = true
      @db[:modified] = Time.now
    end


    def datadir; self[:datadir]; end

    def data_path(k)
      File.join(File.dirname(@path), self.datadir, k)
    end

    def dump(k, v, overwrite=false)
      p = data_path(k)
      raise "#{k} already exists" if File.exists?(p) && !overwrite
      File.open(p, 'w') {|f| f.write(v)}
      @touched = true
    end

    def data(k)
      File.exists?(data_path(k)) ? File.read(data_path(k)) : nil
    end

    def disk_version
      File.exists?(@path) ? YAML.load_file(@path)[:version] : 0
    end

    def sync
      if disk_version == @db[:version]
        if @touched
          FileUtils.mkdir_p(File.dirname(@path) + "/" + self.datadir)
          @db[:version] += 1
          File.open(@path, 'w') {|f| f.write(@db.to_yaml)}
          true
        else
          false
        end
      else
        raise "Disk version of #{@path} (#{disk_version}) != loaded version (#{@db[:version]}). " + \
        "Try reloading and making your changes again."
      end
    end

    def version; @db[:version]; end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
vpnmaker-1.0.11 lib/vpnmaker/key_db.rb
vpnmaker-1.0.10 lib/vpnmaker/key_db.rb
vpnmaker-1.0.9 lib/vpnmaker/key_db.rb
vpnmaker-1.0.8 lib/vpnmaker/key_db.rb
vpnmaker-1.0.7 lib/vpnmaker/key_db.rb
vpnmaker-1.0.6 lib/vpnmaker/key_db.rb
vpnmaker-1.0.4 lib/vpnmaker/key_db.rb
vpnmaker-1.0.3 lib/vpnmaker/key_db.rb
vpnmaker-1.0.2 lib/vpnmaker/key_db.rb
vpnmaker-1.0.1 lib/vpnmaker/key_db.rb
vpnmaker-1.0.0 lib/vpnmaker/key_db.rb