-
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathset.js
More file actions
112 lines (103 loc) · 2.24 KB
/
set.js
File metadata and controls
112 lines (103 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
'use strict';
var utils = require('../utils');
/**
* Set the given value, or a value was previously cached by `--get`.
*
* ```json
* $ app --set=pkg.name:foo
* # example: persist `pkg.name` to `store.data.name`
* $ app --get=pkg.name --set=store.name
* ```
* @name set
* @api public
*/
module.exports = function(app) {
return function(prop, key, config, next) {
if (typeof prop === 'undefined') {
next();
return;
}
if (utils.isObject(prop)) {
var temp = prop;
for (var k in temp) {
if (temp.hasOwnProperty(k)) {
prop = k + ':' + temp[k];
}
}
}
var cached = app.get('cache.get');
var name, rest, val;
var keys = [];
if (utils.isObject(prop)) {
keys = [];
name = Object.keys(prop)[0];
val = prop[name];
} else {
keys = String(prop).split('.');
name = keys.shift();
rest = keys.join('.');
if (typeof cached !== 'undefined') {
val = cached;
} else {
keys = [];
val = {};
val[rest] = true;
}
}
utils.assertPlugins(app, name);
switch(name) {
case 'pkg':
if (keys.length) {
app.pkg.set(rest, val);
} else {
app.pkg.set(val);
}
app.pkg.save();
break;
case 'config':
if (keys.length) {
app.pkg.set([app._name, rest], val);
} else {
app.pkg.set(app._name, val);
}
app.pkg.save();
break;
case 'globals':
if (keys.length) {
app.globals.set(rest, val);
} else {
app.globals.set(val);
}
break;
case 'store':
if (keys.length) {
app.store.set(rest, val);
} else {
app.store.set(val);
}
break;
case 'option':
if (keys.length) {
app.option(rest, val);
} else {
app.option(val);
}
break;
case 'data':
if (keys.length) {
app.data(rest, val);
} else {
app.data(val);
}
break;
default:
if (keys.length) {
app.set(prop, val);
} else {
app.set(val);
}
break;
}
next();
};
};