]> git.immae.eu Git - perso/Immae/Projets/Nodejs/Surfer.git/blame - cli/config.js
Do not show * for password entry
[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
JZ
18 server: function () { return get('server'); },
19 username: function () { return get('username'); },
20 password: function () { return get('password'); }
8c3ae071
JZ
21};
22
23var HOME = process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
24var CONFIG_FILE_PATH = path.join(HOME, '.surfer.json');
25
26var gConfig = (function () {
27 return safe.JSON.parse(safe.fs.readFileSync(CONFIG_FILE_PATH)) || {};
28})();
29
30function save() {
31 fs.writeFileSync(CONFIG_FILE_PATH, JSON.stringify(gConfig, null, 4));
32}
33
34function clear() {
35 safe.fs.unlinkSync(CONFIG_FILE_PATH);
36}
37
38function set(key, value) {
39 if (typeof key === 'object') {
40 _.extend(gConfig, key);
41 } else {
42 safe.set(gConfig, key, value);
43 }
44 save();
45}
46
47function get(key) {
48 return safe.query(gConfig, key);
49}
50
51function unset(key /*, .... */) {
52 for (var i = 0; i < arguments.length; i++) {
53 gConfig = safe.unset(gConfig, arguments[i]);
54 }
55
56 save();
57}
58
59function has(key /*, ... */) {
60 for (var i = 0; i < arguments.length; i++) {
61 if (!(arguments[i] in gConfig)) return false;
62 }
63 return true;
64}