]> git.immae.eu Git - perso/Immae/Projets/Nodejs/Surfer.git/blob - cli/config.js
Add auth to client
[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 username: function () { return get('username'); },
20 password: function () { return get('password'); }
21 };
22
23 var HOME = process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
24 var CONFIG_FILE_PATH = path.join(HOME, '.surfer.json');
25
26 var gConfig = (function () {
27 return safe.JSON.parse(safe.fs.readFileSync(CONFIG_FILE_PATH)) || {};
28 })();
29
30 function save() {
31 fs.writeFileSync(CONFIG_FILE_PATH, JSON.stringify(gConfig, null, 4));
32 }
33
34 function clear() {
35 safe.fs.unlinkSync(CONFIG_FILE_PATH);
36 }
37
38 function 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
47 function get(key) {
48 return safe.query(gConfig, key);
49 }
50
51 function unset(key /*, .... */) {
52 for (var i = 0; i < arguments.length; i++) {
53 gConfig = safe.unset(gConfig, arguments[i]);
54 }
55
56 save();
57 }
58
59 function has(key /*, ... */) {
60 for (var i = 0; i < arguments.length; i++) {
61 if (!(arguments[i] in gConfig)) return false;
62 }
63 return true;
64 }