2015-02-26 15:47:56 +00:00
( function ( ) {
2015-03-11 13:03:13 +00:00
var _ , async , examplesData , fs , gitwrap , path , resin , visuals ;
2015-02-26 15:47:56 +00:00
async = require ( 'async' ) ;
fs = require ( 'fs' ) ;
path = require ( 'path' ) ;
_ = require ( 'lodash' ) ;
resin = require ( 'resin-sdk' ) ;
visuals = require ( 'resin-cli-visuals' ) ;
2015-03-11 13:03:13 +00:00
gitwrap = require ( 'gitwrap' ) ;
2015-02-26 15:47:56 +00:00
examplesData = require ( '../data/examples.json' ) ;
exports . list = {
signature : 'examples' ,
description : 'list all example applications' ,
2015-03-03 14:14:16 +00:00
help : 'Use this command to list available example applications from resin.io\n\nExample:\n\n $ resin examples' ,
2015-02-26 15:47:56 +00:00
permission : 'user' ,
action : function ( ) {
examplesData = _ . map ( examplesData , function ( example , index ) {
example . id = index + 1 ;
return example ;
} ) ;
examplesData = _ . map ( examplesData , function ( example ) {
if ( example . author == null ) {
example . author = 'Unknown' ;
}
return example ;
} ) ;
return console . log ( visuals . widgets . table . horizontal ( examplesData , [ 'id' , 'display_name' , 'repository' , 'author' ] ) ) ;
}
} ;
exports . info = {
signature : 'example <id>' ,
description : 'list a single example application' ,
2015-03-03 14:14:16 +00:00
help : 'Use this command to show information of a single example application\n\nExample:\n\n $ resin example 3' ,
2015-02-26 15:47:56 +00:00
permission : 'user' ,
action : function ( params , options , done ) {
var example , id ;
id = params . id - 1 ;
example = examplesData [ id ] ;
if ( example == null ) {
return done ( new Error ( "Unknown example: " + id ) ) ;
}
example . id = id ;
if ( example . author == null ) {
example . author = 'Unknown' ;
}
console . log ( visuals . widgets . table . vertical ( example , [ 'id' , 'display_name' , 'description' , 'author' , 'repository' ] ) ) ;
return done ( ) ;
}
} ;
exports . clone = {
signature : 'example clone <id>' ,
description : 'clone an example application' ,
2015-03-03 14:14:16 +00:00
help : 'Use this command to clone an example application to the current directory\n\nThis command outputs information about the cloning process.\nUse `--quiet` to remove that output.\n\nExample:\n\n $ resin example clone 3' ,
2015-02-26 15:47:56 +00:00
permission : 'user' ,
action : function ( params , options , done ) {
var example ;
example = examplesData [ params . id - 1 ] ;
if ( example == null ) {
return done ( new Error ( "Unknown example: " + id ) ) ;
}
return async . waterfall ( [
function ( callback ) {
var exampleAbsolutePath ;
exampleAbsolutePath = path . join ( process . cwd ( ) , example . name ) ;
return fs . exists ( exampleAbsolutePath , function ( exists ) {
var error ;
if ( ! exists ) {
return callback ( ) ;
}
error = new Error ( "Directory exists: " + example . name ) ;
return callback ( error ) ;
} ) ;
} , function ( callback ) {
2015-03-11 13:03:13 +00:00
var currentDirectory , git ;
currentDirectory = process . cwd ( ) ;
console . info ( "Cloning " + example . display _name + " to " + currentDirectory ) ;
git = gitwrap . create ( currentDirectory ) ;
return git . execute ( "clone " + example . repository , callback ) ;
2015-02-26 15:47:56 +00:00
}
] , done ) ;
}
} ;
} ) . call ( this ) ;