1 | var _ = require('lodash');
|
2 | var debug = require('debug')('4front:cli:env');
|
3 | var api = require('../lib/api');
|
4 | var log = require('../lib/log');
|
5 |
|
6 | var INVALID_KEY_ERR = "Environment variable keys can only contain letters, numbers, dashes, and underscores.";
|
7 |
|
8 | module.exports = function(program, done) {
|
9 | switch (program.subCommand) {
|
10 | case "set":
|
11 | set(); break;
|
12 | case "list":
|
13 | list(); break;
|
14 | case "del":
|
15 | del(); break;
|
16 | default:
|
17 | return done("Invalid sub-command " + program.subCommand + ". Expected set, get, del, or list.")
|
18 | }
|
19 |
|
20 | function set() {
|
21 | debug('setting env variable');
|
22 | if (_.isEmpty(program.key))
|
23 | return done("No environment variable key specified");
|
24 |
|
25 | if (!validateKey())
|
26 | return done(INVALID_KEY_ERR);
|
27 |
|
28 | if (_.isEmpty(program.value))
|
29 | return done("No environment variable value specified");
|
30 |
|
31 | var apiPath = '/apps/' + program.virtualApp.appId + '/env';
|
32 | if (program.virtualEnv)
|
33 | apiPath += '/' + program.virtualEnv;
|
34 |
|
35 | apiPath += '/' + program.key;
|
36 |
|
37 | var requestOptions = {
|
38 | path: apiPath,
|
39 | method: 'PUT',
|
40 | json: {
|
41 | value: program.value,
|
42 | encrypted: program.encrypted === true
|
43 | }
|
44 | };
|
45 |
|
46 | debug("invoking api to set env var %s", program.key);
|
47 | api(program, requestOptions, done);
|
48 | }
|
49 |
|
50 |
|
51 | function list() {
|
52 | var requestOptions = {
|
53 | path: '/apps/' + program.virtualApp.appId + '/env',
|
54 | method: 'GET'
|
55 | };
|
56 |
|
57 | api(program, requestOptions, function(err, env) {
|
58 | if (err) return done(err);
|
59 |
|
60 | console.log(JSON.stringify(env, null, 2));
|
61 | done();
|
62 | });
|
63 | }
|
64 |
|
65 | function del() {
|
66 | if (!validateKey())
|
67 | return done(INVALID_KEY_ERR);
|
68 |
|
69 | var apiPath = '/apps/' + program.virtualApp.appId + '/env/';
|
70 | if (program.virtualEnv)
|
71 | apiPath += program.virtualEnv + '/';
|
72 |
|
73 | apiPath += program.key;
|
74 |
|
75 | api(program, {path: apiPath, method: 'DELETE'}, done);
|
76 | }
|
77 |
|
78 | function validateKey() {
|
79 | return /^[A-Z_\-0-9]+$/i.test(program.key);
|
80 | }
|
81 | };
|