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