2015-02-26 15:47:56 +00:00
( function ( ) {
2015-08-20 19:54:42 +00:00
var Promise , _ , capitano , commandOptions , events , fs , patterns , resin , visuals ;
2015-02-26 15:47:56 +00:00
2015-08-17 13:28:10 +00:00
Promise = require ( 'bluebird' ) ;
2015-02-26 15:47:56 +00:00
2015-08-17 13:28:10 +00:00
fs = Promise . promisifyAll ( require ( 'fs' ) ) ;
2015-02-26 15:47:56 +00:00
2015-08-17 13:28:10 +00:00
_ = require ( 'lodash' ) ;
2015-02-26 15:47:56 +00:00
resin = require ( 'resin-sdk' ) ;
capitano = require ( 'capitano' ) ;
visuals = require ( 'resin-cli-visuals' ) ;
2015-08-31 21:39:48 +00:00
events = require ( 'resin-cli-events' ) ;
2015-02-26 15:47:56 +00:00
commandOptions = require ( './command-options' ) ;
2015-08-20 19:54:42 +00:00
patterns = require ( '../utils/patterns' ) ;
2015-07-27 12:08:55 +00:00
2015-02-26 15:47:56 +00:00
exports . list = {
signature : 'keys' ,
description : 'list all ssh keys' ,
2015-03-03 14:14:16 +00:00
help : 'Use this command to list all your SSH keys.\n\nExamples:\n\n $ resin keys' ,
2015-02-26 15:47:56 +00:00
permission : 'user' ,
action : function ( params , options , done ) {
2015-07-22 22:06:53 +00:00
return resin . models . key . getAll ( ) . then ( function ( keys ) {
2015-07-29 13:34:31 +00:00
return console . log ( visuals . table . horizontal ( keys , [ 'id' , 'title' ] ) ) ;
2015-07-22 22:06:53 +00:00
} ) . nodeify ( done ) ;
2015-02-26 15:47:56 +00:00
}
} ;
exports . info = {
signature : 'key <id>' ,
description : 'list a single ssh key' ,
2015-03-03 14:14:16 +00:00
help : 'Use this command to show information about a single SSH key.\n\nExamples:\n\n $ resin key 17' ,
2015-02-26 15:47:56 +00:00
permission : 'user' ,
action : function ( params , options , done ) {
2015-07-22 22:06:53 +00:00
return resin . models . key . get ( params . id ) . then ( function ( key ) {
2015-08-14 16:25:55 +00:00
console . log ( visuals . table . vertical ( key , [ 'id' , 'title' ] ) ) ;
return console . log ( '\n' + key . public _key ) ;
2015-07-22 22:06:53 +00:00
} ) . nodeify ( done ) ;
2015-02-26 15:47:56 +00:00
}
} ;
exports . remove = {
signature : 'key rm <id>' ,
description : 'remove a ssh key' ,
2015-03-03 14:14:16 +00:00
help : 'Use this command to remove a SSH key from resin.io.\n\nNotice this command asks for confirmation interactively.\nYou can avoid this by passing the `--yes` boolean option.\n\nExamples:\n\n $ resin key rm 17\n $ resin key rm 17 --yes' ,
2015-02-26 15:47:56 +00:00
options : [ commandOptions . yes ] ,
permission : 'user' ,
action : function ( params , options , done ) {
2015-08-20 19:54:42 +00:00
return patterns . confirm ( options . yes , 'Are you sure you want to delete the key?' ) . then ( function ( ) {
2015-08-17 13:28:10 +00:00
return resin . models . key . remove ( params . id ) ;
2015-08-31 21:39:48 +00:00
} ) . tap ( function ( ) {
return events . send ( 'publicKey.delete' , {
id : params . id
} ) ;
2015-08-17 13:28:10 +00:00
} ) . nodeify ( done ) ;
2015-02-26 15:47:56 +00:00
}
} ;
exports . add = {
signature : 'key add <name> [path]' ,
description : 'add a SSH key to resin.io' ,
2015-03-03 14:14:16 +00:00
help : 'Use this command to associate a new SSH key with your account.\n\nIf `path` is omitted, the command will attempt\nto read the SSH key from stdin.\n\nExamples:\n\n $ resin key add Main ~/.ssh/id_rsa.pub\n $ cat ~/.ssh/id_rsa.pub | resin key add Main' ,
2015-02-26 15:47:56 +00:00
permission : 'user' ,
action : function ( params , options , done ) {
2015-08-17 13:28:10 +00:00
return Promise [ "try" ] ( function ( ) {
if ( params . path != null ) {
return fs . readFileAsync ( params . path , {
encoding : 'utf8'
} ) ;
2015-02-26 15:47:56 +00:00
}
2015-08-17 13:28:10 +00:00
return Promise . fromNode ( function ( callback ) {
return capitano . utils . getStdin ( function ( data ) {
return callback ( null , data ) ;
} ) ;
} ) ;
2015-08-31 21:39:48 +00:00
} ) . then ( _ . partial ( resin . models . key . create , params . name ) ) . tap ( function ( ) {
return events . send ( 'publicKey.create' ) ;
} ) . nodeify ( done ) ;
2015-02-26 15:47:56 +00:00
}
} ;
} ) . call ( this ) ;