]> git.immae.eu Git - perso/Immae/Projets/Nodejs/Surfer.git/blame - cli/config.js
Make listen port and ldap filter more flexible
[perso/Immae/Projets/Nodejs/Surfer.git] / cli / config.js
CommitLineData
8c3ae071
JZ
1/* jshint node:true */
2
3'use strict';
4
5var fs = require('fs'),
6 path = require('path'),
7 safe = require('safetydance'),
8 _ = require('underscore');
9
10exports = module.exports = {
11 clear: clear,
12 set: set,
13 get: get,
14 unset: unset,
15 has: has,
16
17 // convenience
a90a633f 18 server: function () { return get('server'); },
9b7a26fc 19 accessToken: function () { return get('accessToken'); }
8c3ae071
JZ
20};
21
22var HOME = process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
23var CONFIG_FILE_PATH = path.join(HOME, '.surfer.json');
24
25var gConfig = (function () {
26 return safe.JSON.parse(safe.fs.readFileSync(CONFIG_FILE_PATH)) || {};
27})();
28
29function save() {
30 fs.writeFileSync(CONFIG_FILE_PATH, JSON.stringify(gConfig, null, 4));
31}
32
33function clear() {
34 safe.fs.unlinkSync(CONFIG_FILE_PATH);
35}
36
37function set(key, value) {
38 if (typeof key === 'object') {
39 _.extend(gConfig, key);
40 } else {
41 safe.set(gConfig, key, value);
42 }
43 save();
44}
45
46function get(key) {
47 return safe.query(gConfig, key);
48}
49
50function unset(key /*, .... */) {
51 for (var i = 0; i < arguments.length; i++) {
52 gConfig = safe.unset(gConfig, arguments[i]);
53 }
54
55 save();
56}
57
58function has(key /*, ... */) {
59 for (var i = 0; i < arguments.length; i++) {
60 if (!(arguments[i] in gConfig)) return false;
61 }
62 return true;
63}