backand
Version:
Command line interface for Backand cloud services - Online backend REST API as a service
73 lines (58 loc) • 2.37 kB
JavaScript
;
var config = require('../config');
var appCreate = require('./app/create');
var logger = require('../logger');
var auth = require('../api/auth');
var analytics = require('../api/analytics');
var tokenStore = require('../api/token-storage');
var question = require('readline-sync').question;
module.exports = function (options) {
//provide info if no options parameter and instruction for the wizard
if(!options.email && !options.password){
logger.log('You\'ll need an email, a password, and an app name to get started with Backand. You can supply' +
' these as parameters to the call:')
.log('backand signup --email joe.user@backand.com --password Password123 --app mysuperapp\n'.blue)
.log('Or you can complete the wizard below:\n');
}
var email = options.email || question('Email: '.grey);
var password = options.password || question('Password: '.grey, {noEchoBack: true});
var fullname = options.fullname;//make it simple without the full name. options.fullname || question('Full Name (optional): '.grey);
var appName = options.app;
if(!options.email && !options.password && !options.app){
appName = question('App Name: '.grey);
}
var appTitle = options.title || appName;
if (!email || !password) {
logger.warn('Must provide email & password');
return
}
if(!fullname || fullname === '')
fullname = email.replace(/@.*$/,"");
//analytics.identify(email, fullname);
auth.register(email, password, fullname).then(function(data) {
//need to do signin to get token
analytics.track(email, 'cli signup');
auth.signin(email, password, config.mainAppName).then(function(data){
var token = data.access_token;
tokenStore.set(config.mainAppName, email, token);
if(!appName){
logger.success("Welcome to backand! Create your first app by running")
.log('backand app create --name <appName> --title <appTitle>'.blue);
process.exit(0);
}
else {
logger.success("Welcome to backand!\n");
//update the option for create
options.name = appName;
options.title = appTitle;
options.email = email;
options.password = password;
appCreate(options);
}
},function(err){
process.exit(1);
});
}, function(err){
process.exit(1);
});
};