UNPKG

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