UNPKG

2.05 kBJavaScriptView Raw
1var _ = require('lodash');
2var debug = require('debug')('4front:cli:env');
3var api = require('../lib/api');
4var log = require('../lib/log');
5
6var INVALID_KEY_ERR = "Environment variable keys can only contain letters, numbers, dashes, and underscores.";
7
8module.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 // Get the value of an environment variable
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};