UNPKG

1.7 kBJavaScriptView Raw
1var fs = require('fs');
2var inquirer = require('inquirer');
3var log = require('../lib/log');
4var api = require('../lib/api');
5var Table = require('cli-table');
6var _ = require('lodash');
7var moment = require('moment');
8var urljoin = require('url-join');
9var helper = require('../lib/helper');
10var chalk = require('chalk');
11
12// Register a new profile in the 4front global config file
13module.exports = function(program, done) {
14 // If the user is a member of more than 1 org, make them select which one
15 // to display apps for.
16
17 api(program, {
18 method: 'GET',
19 path: '/profile/orgs'
20 }, function(err, orgs) {
21 if (err) return done(err);
22
23 if (orgs.length === 0) {
24 log.messageBox("You don't belong to any organizations yet.\n" +
25 "Visit " + urljoin(program.profile.endpoint, '/portal/orgs/create') + " to get started.");
26
27 return done();
28 }
29
30 if (orgs.length === 1)
31 return displayApps(orgs[0].orgId);
32
33 var selectOrgQuestion = helper.pickOrgQuestion(orgs, "Select organization");
34 inquirer.prompt([selectOrgQuestion], function(answers) {
35 displayApps(answers.orgId);
36 });
37 });
38
39 function displayApps(orgId) {
40 api(program, {
41 method: 'GET',
42 path: '/orgs/' + orgId + '/apps'
43 }, function(err, apps) {
44 if (err) return done(err);
45
46 // Display the apps in a grid.
47 var table = new Table({
48 head: [chalk.cyan('name'), chalk.cyan('url'), chalk.cyan('created')],
49 colWidths: [25, 35, 22]
50 });
51
52 _.each(apps, function(app) {
53 table.push([app.name || '', app.url, moment(app.created).format("MMM D, YYYY")])
54 });
55
56 console.log(table.toString());
57 done();
58 });
59 }
60};