-
Notifications
You must be signed in to change notification settings - Fork 40
/
storage.js
44 lines (37 loc) · 1.09 KB
/
storage.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
const fs = require('fs')
, path = require('path')
, mkdirp = require('mkdirp')
, rimraf = require('rimraf')
function createSimpleStorage() {
var dataDir = path.join.apply(path, arguments)
, files = {}
function fileName(name) {
return path.resolve(dataDir, name + '.json')
}
return {
dir: dataDir
, reset: function reset() {
rimraf.sync(dataDir)
files = {}
}
, save: function save(name, data) {
mkdirp.sync(dataDir)
fs.writeFileSync(fileName(name), JSON.stringify(data))
}
, get: function get(name) {
var fileData = files[name]
if (!fileData) {
fileData = null
var file = fileName(name)
try {
if (fs.accessSync ? (fs.accessSync(file, fs.R_OK) || true) : fs.existsSync(file))
fileData = JSON.parse(fs.readFileSync(file, 'utf8'))
} catch (e) {}
files[name] = fileData
}
return fileData
}
}
}
createSimpleStorage.userDir = process.env.HOME || process.env.USERPROFILE
module.exports = createSimpleStorage