Module: TerUtil::Remember

Defined in:
lib/remember.rb

Constant Summary collapse

FPATH =
File.expand_path("terutil", ENV['XDG_CONFIG_HOME'] || "~/.config")
FNAME =
FPATH + '/remember.json'

Class Method Summary collapse

Class Method Details

.delete(key) ⇒ Object



56
57
58
# File 'lib/remember.rb', line 56

def self.delete(key)
    write_data load_data.reject { |k| k == key }
end

.load_dataObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/remember.rb', line 21

def self.load_data
    ret = JSON.parse load_file
    raise JSON::ParserError if ret.class != Hash
    ret

rescue JSON::ParserError
    puts "The remember data file (#{FNAME}) is corrupted."
    puts "Please fix it manually or reset it."
    print "Reset (ALL DATA WILL BE LOST!)? (y/n): "
    if ['y', 'yes'].include? gets.chomp
        reset_file
        puts "File reset."
    end
end

.load_fileObject



12
13
14
15
16
17
18
19
# File 'lib/remember.rb', line 12

def self.load_file
    if !File.exists? FNAME
        FileUtils.mkdir_p FPATH
        reset_file
    end

    File.read(FNAME)
end

.read(key) ⇒ Object



42
43
44
# File 'lib/remember.rb', line 42

def self.read(key)
    load_data[key]
end

.reset_fileObject



8
9
10
# File 'lib/remember.rb', line 8

def self.reset_file
    File.open(FNAME, 'w') { |f| f.write "{}" }
end

.write(key, val, silent = true) ⇒ Object



46
47
48
49
50
51
52
53
54
# File 'lib/remember.rb', line 46

def self.write(key, val, silent=true)
    if val == '' 
        delete key
        puts "Deleted #{key}." if !silent
    else 
        write_data load_data.tap { |d| d[key] = val }
        puts "Set #{key} to #{val}." if !silent
    end
end

.write_data(data) ⇒ Object



38
39
40
# File 'lib/remember.rb', line 38

def self.write_data(data)
    File.open(FNAME, 'w') { |f| f.write JSON.generate(data) }
end