1 | _ = require 'underscore'
|
2 | fs = require "fs"
|
3 | path = require "path"
|
4 | {logger} = require "./utils"
|
5 |
|
6 | log = logger "config"
|
7 |
|
8 |
|
9 | if process.env?.HOME?
|
10 | KD_DIR = path.join process.env.HOME, ".kd"
|
11 | else
|
12 | KD_DIR = "/root/.kd"
|
13 |
|
14 | MODULE_ROOT = path.join __dirname, "..", "modules"
|
15 | CURRENT_MODULE_ROOT = path.join process.cwd(), ".kd", "modules"
|
16 | USER_MODULE_ROOT = path.join KD_DIR, "modules"
|
17 |
|
18 | class ConfigFile
|
19 |
|
20 | dontSaveThemInFile: ["publicKey", "privateKey"]
|
21 |
|
22 | constructor: ->
|
23 |
|
24 | if process.env?.HOME?
|
25 | @configFile = path.join process.env.HOME, ".kd", "kdconfig"
|
26 | else
|
27 | @configFile = "/root/.kd/kdconfig"
|
28 |
|
29 | try
|
30 | @config = @load @configFile
|
31 | catch error
|
32 | @config = {}
|
33 | @save()
|
34 |
|
35 |
|
36 | get: (key)->
|
37 | @config[key]
|
38 |
|
39 | set: (key, value...)->
|
40 | @config[key] = value.join " "
|
41 |
|
42 | remove: (key)-> delete @config[key]
|
43 |
|
44 | getAll: -> @config
|
45 |
|
46 | save:->
|
47 | cloned = _.omit @config, @dontSaveThemInFile
|
48 | fs.writeFileSync @configFile, (JSON.stringify cloned, null, 2)
|
49 |
|
50 | load:->
|
51 | data = fs.readFileSync(@configFile).toString()
|
52 | @config = JSON.parse data
|
53 |
|
54 |
|
55 | module.exports = {ConfigFile, KD_DIR, MODULE_ROOT, CURRENT_MODULE_ROOT, USER_MODULE_ROOT}
|