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