2017-06-08 10:52:47 +00:00
// Generated by CoffeeScript 1.12.6
2016-01-11 19:58:35 +00:00
/ *
2017-06-14 21:20:15 +00:00
Copyright 2016 - 2017 Resin . io
2016-01-11 19:58:35 +00:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2017-03-22 09:46:06 +00:00
exports . login = {
signature : 'login' ,
description : 'login to resin.io' ,
help : 'Use this command to login to your resin.io account.\n\nThis command will prompt you to login using the following login types:\n\n- Web authorization: open your web browser and prompt you to authorize the CLI\nfrom the dashboard.\n\n- Credentials: using email/password and 2FA.\n\n- Token: using the authentication token from the preferences page.\n\nExamples:\n\n $ resin login\n $ resin login --web\n $ resin login --token "..."\n $ resin login --credentials\n $ resin login --credentials --email johndoe@gmail.com --password secret' ,
options : [
{
signature : 'token' ,
description : 'auth token' ,
parameter : 'token' ,
alias : 't'
} , {
signature : 'web' ,
description : 'web-based login' ,
boolean : true ,
alias : 'w'
} , {
signature : 'credentials' ,
description : 'credential-based login' ,
boolean : true ,
alias : 'c'
} , {
signature : 'email' ,
parameter : 'email' ,
description : 'email' ,
alias : [ 'e' , 'u' ]
} , {
signature : 'password' ,
parameter : 'password' ,
description : 'password' ,
alias : 'p'
}
] ,
primary : true ,
action : function ( params , options , done ) {
2017-03-27 09:14:55 +00:00
var Promise , _ , auth , form , login , messages , patterns , resin ;
2017-03-22 09:46:06 +00:00
_ = require ( 'lodash' ) ;
Promise = require ( 'bluebird' ) ;
resin = require ( 'resin-sdk-preconfigured' ) ;
auth = require ( 'resin-cli-auth' ) ;
form = require ( 'resin-cli-form' ) ;
patterns = require ( '../utils/patterns' ) ;
messages = require ( '../utils/messages' ) ;
login = function ( options ) {
if ( options . token != null ) {
return Promise [ "try" ] ( function ( ) {
if ( _ . isString ( options . token ) ) {
return options . token ;
}
return form . ask ( {
message : 'Token (from the preferences page)' ,
name : 'token' ,
type : 'input'
} ) ;
} ) . then ( resin . auth . loginWithToken ) ;
} else if ( options . credentials ) {
return patterns . authenticate ( options ) ;
} else if ( options . web ) {
console . info ( 'Connecting to the web dashboard' ) ;
return auth . login ( ) ;
2015-12-03 14:22:22 +00:00
}
2017-03-22 09:46:06 +00:00
return patterns . askLoginType ( ) . then ( function ( loginType ) {
2017-03-27 09:14:55 +00:00
var capitanoRunAsync ;
2017-03-22 09:46:06 +00:00
if ( loginType === 'register' ) {
2017-03-27 09:14:55 +00:00
capitanoRunAsync = Promise . promisify ( require ( 'capitano' ) . run ) ;
return capitanoRunAsync ( 'signup' ) ;
2015-12-03 14:22:22 +00:00
}
2017-03-22 09:46:06 +00:00
options [ loginType ] = true ;
2016-01-12 13:07:15 +00:00
return login ( options ) ;
2017-03-22 09:46:06 +00:00
} ) ;
} ;
return resin . settings . get ( 'resinUrl' ) . then ( function ( resinUrl ) {
console . log ( messages . resinAsciiArt ) ;
console . log ( "\nLogging in to " + resinUrl ) ;
return login ( options ) ;
} ) . then ( resin . auth . whoami ) . tap ( function ( username ) {
console . info ( "Successfully logged in as: " + username ) ;
return console . info ( "\nNow what?\n\n" + messages . gettingStarted + "\n\nFind out about more super powers by running:\n\n $ resin help\n\n" + messages . reachingOut ) ;
} ) . nodeify ( done ) ;
}
} ;
2015-02-26 15:47:56 +00:00
2017-03-22 09:46:06 +00:00
exports . logout = {
signature : 'logout' ,
description : 'logout from resin.io' ,
help : 'Use this command to logout from your resin.io account.o\n\nExamples:\n\n $ resin logout' ,
permission : 'user' ,
action : function ( params , options , done ) {
var resin ;
resin = require ( 'resin-sdk-preconfigured' ) ;
return resin . auth . logout ( ) . nodeify ( done ) ;
}
} ;
2015-02-26 15:47:56 +00:00
2017-03-22 09:46:06 +00:00
exports . signup = {
signature : 'signup' ,
description : 'signup to resin.io' ,
2017-03-27 09:29:40 +00:00
help : 'Use this command to signup for a resin.io account.\n\nIf signup is successful, you\'ll be logged in to your new user automatically.\n\nExamples:\n\n $ resin signup\n Email: johndoe@acme.com\n Password: ***********\n\n $ resin whoami\n johndoe' ,
2017-03-22 09:46:06 +00:00
action : function ( params , options , done ) {
var form , resin , validation ;
resin = require ( 'resin-sdk-preconfigured' ) ;
form = require ( 'resin-cli-form' ) ;
validation = require ( '../utils/validation' ) ;
return resin . settings . get ( 'resinUrl' ) . then ( function ( resinUrl ) {
console . log ( "\nRegistering to " + resinUrl ) ;
return form . run ( [
{
message : 'Email:' ,
name : 'email' ,
type : 'input' ,
validate : validation . validateEmail
} , {
message : 'Password:' ,
name : 'password' ,
type : 'password' ,
validate : validation . validatePassword
}
] ) ;
} ) . then ( resin . auth . register ) . then ( resin . auth . loginWithToken ) . nodeify ( done ) ;
}
} ;
2015-02-26 15:47:56 +00:00
2017-03-22 09:46:06 +00:00
exports . whoami = {
signature : 'whoami' ,
description : 'get current username and email address' ,
help : 'Use this command to find out the current logged in username and email address.\n\nExamples:\n\n $ resin whoami' ,
permission : 'user' ,
action : function ( params , options , done ) {
var Promise , resin , visuals ;
Promise = require ( 'bluebird' ) ;
resin = require ( 'resin-sdk-preconfigured' ) ;
visuals = require ( 'resin-cli-visuals' ) ;
return Promise . props ( {
username : resin . auth . whoami ( ) ,
email : resin . auth . getEmail ( ) ,
url : resin . settings . get ( 'resinUrl' )
} ) . then ( function ( results ) {
return console . log ( visuals . table . vertical ( results , [ '$account information$' , 'username' , 'email' , 'url' ] ) ) ;
} ) . nodeify ( done ) ;
}
} ;