From 3e055b32d2fa89f2ab02e883a5fbcb6c686b6fdc Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Thu, 15 Jan 2015 10:47:17 -0300 Subject: [PATCH] Update Capitano to v1.2.0 and make use of done callback feature --- lib/actions/app.coffee | 31 +++++++++++++----------- lib/actions/auth.coffee | 20 +++++++-------- lib/actions/device.coffee | 28 ++++++++++++--------- lib/actions/environment-variables.coffee | 22 +++++++++-------- lib/actions/examples.coffee | 16 ++++++------ lib/actions/keys.coffee | 21 +++++++++------- lib/actions/logs.coffee | 7 +++--- lib/actions/notes.coffee | 5 ++-- lib/actions/os.coffee | 7 +++--- lib/app.coffee | 3 ++- package.json | 2 +- 11 files changed, 86 insertions(+), 76 deletions(-) diff --git a/lib/actions/app.coffee b/lib/actions/app.coffee index 1ac42da5..e2bae8ac 100644 --- a/lib/actions/app.coffee +++ b/lib/actions/app.coffee @@ -3,11 +3,10 @@ async = require('async') resin = require('resin-sdk') ui = require('../ui') log = require('../log/log') -errors = require('../errors/errors') permissions = require('../permissions/permissions') -exports.create = permissions.user (params, options) -> - async.waterfall [ +exports.create = permissions.user (params, options, done) -> + async.waterfall([ (callback) -> deviceType = options.type @@ -21,10 +20,11 @@ exports.create = permissions.user (params, options) -> (type, callback) -> resin.models.application.create(params.name, type, callback) - ], errors.handle + ], done) -exports.list = permissions.user -> - resin.models.application.getAll errors.handleCallback (applications) -> +exports.list = permissions.user (params, options, done) -> + resin.models.application.getAll (error, applications) -> + return done(error) if error? log.out ui.widgets.table.horizontal applications, [ 'ID' 'Name' @@ -32,9 +32,11 @@ exports.list = permissions.user -> 'Online Devices' 'Devices Length' ] + return done() -exports.info = permissions.user (params) -> - resin.models.application.get params.id, errors.handleCallback (application) -> +exports.info = permissions.user (params, options, done) -> + resin.models.application.get params.id, (error, application) -> + return done(error) if error? log.out ui.widgets.table.vertical application, [ 'ID' 'Name' @@ -42,16 +44,17 @@ exports.info = permissions.user (params) -> 'Git Repository' 'Commit' ] + return done() -exports.restart = permissions.user (params) -> - resin.models.application.restart(params.id, _.unary(errors.handle)) +exports.restart = permissions.user (params, options, done) -> + resin.models.application.restart(params.id, done) -exports.remove = permissions.user (params, options) -> +exports.remove = permissions.user (params, options, done) -> ui.patterns.remove 'application', options.yes, (callback) -> resin.models.application.remove(params.id, callback) - , errors.handle + , done -exports.init = permissions.user (params) -> +exports.init = permissions.user (params, options, done) -> currentDirectory = process.cwd() @@ -72,4 +75,4 @@ exports.init = permissions.user (params) -> (application, callback) -> resin.vcs.initProjectWithApplication(application, currentDirectory, callback) - ], errors.handle + ], done diff --git a/lib/actions/auth.coffee b/lib/actions/auth.coffee index 8feb300c..9d41a729 100644 --- a/lib/actions/auth.coffee +++ b/lib/actions/auth.coffee @@ -4,11 +4,10 @@ async = require('async') resin = require('resin-sdk') ui = require('../ui') log = require('../log/log') -errors = require('../errors/errors') permissions = require('../permissions/permissions') helpers = require('../helpers/helpers') -exports.login = (params) -> +exports.login = (params, options, done) -> async.waterfall [ (callback) -> @@ -20,12 +19,12 @@ exports.login = (params) -> (credentials, callback) -> resin.auth.login(credentials, callback) - ], errors.handle + ], done -exports.logout = permissions.user -> - resin.auth.logout(_.unary(errors.handle)) +exports.logout = permissions.user (params, options, done) -> + resin.auth.logout(done) -exports.signup = -> +exports.signup = (params, options, done) -> async.waterfall([ (callback) -> @@ -38,13 +37,12 @@ exports.signup = -> (credentials, callback) -> resin.auth.login(credentials, callback) - ], errors.handle) + ], done) -exports.whoami = permissions.user -> - resin.auth.whoami errors.handleCallback (username) -> +exports.whoami = permissions.user (params, options, done) -> + resin.auth.whoami (error, username) -> if not username? - error = new Error('Username not found') - errors.handle(error) + return done(new Error('Username not found')) log.out(username) diff --git a/lib/actions/device.coffee b/lib/actions/device.coffee index b35a26f7..4e6c9fde 100644 --- a/lib/actions/device.coffee +++ b/lib/actions/device.coffee @@ -3,11 +3,11 @@ async = require('async') resin = require('resin-sdk') ui = require('../ui') log = require('../log/log') -errors = require('../errors/errors') permissions = require('../permissions/permissions') -exports.list = permissions.user (params, options) -> - resin.models.device.getAllByApplication options.application, errors.handleCallback (devices) -> +exports.list = permissions.user (params, options, done) -> + resin.models.device.getAllByApplication options.application, (error, devices) -> + return done(error) if error? log.out ui.widgets.table.horizontal devices, [ 'ID' 'Name' @@ -18,8 +18,11 @@ exports.list = permissions.user (params, options) -> 'Last Seen' ] -exports.info = permissions.user (params) -> - resin.models.device.get params.id, errors.handleCallback (device) -> + return done() + +exports.info = permissions.user (params, options, done) -> + resin.models.device.get params.id, (error, device) -> + return done(error) if error? log.out ui.widgets.table.vertical device, [ 'ID' 'Name' @@ -36,15 +39,17 @@ exports.info = permissions.user (params) -> 'Note' ] -exports.remove = permissions.user (params, options) -> + return done() + +exports.remove = permissions.user (params, options, done) -> ui.patterns.remove 'device', options.yes, (callback) -> resin.models.device.remove(params.id, callback) - , errors.handle + , done -exports.identify = permissions.user (params) -> - resin.models.device.identify(params.uuid, _.unary(errors.handle)) +exports.identify = permissions.user (params, options, done) -> + resin.models.device.identify(params.uuid, done) -exports.rename = permissions.user (params) -> +exports.rename = permissions.user (params, options, done) -> async.waterfall [ (callback) -> @@ -55,8 +60,7 @@ exports.rename = permissions.user (params) -> (name, callback) -> resin.models.device.rename(params.id, name, callback) - ], (error) -> - errors.handle(error) if error? + ], done exports.supported = permissions.user -> devices = resin.models.device.getSupportedDeviceTypes() diff --git a/lib/actions/environment-variables.coffee b/lib/actions/environment-variables.coffee index 3cdd2650..710f14b7 100644 --- a/lib/actions/environment-variables.coffee +++ b/lib/actions/environment-variables.coffee @@ -3,30 +3,32 @@ resin = require('resin-sdk') ui = require('../ui') permissions = require('../permissions/permissions') log = require('../log/log') -errors = require('../errors/errors') -exports.list = permissions.user (params, options) -> - resin.models.environmentVariables.getAllByApplication options.application, errors.handleCallback (environmentVariables) -> +exports.list = permissions.user (params, options, done) -> + resin.models.environmentVariables.getAllByApplication options.application, (error, environmentVariables) -> + return done(error) if error? + if not options.verbose environmentVariables = _.reject(environmentVariables, resin.models.environmentVariables.isSystemVariable) log.out(ui.widgets.table.horizontal(environmentVariables)) + return done() -exports.remove = permissions.user (params, options) -> +exports.remove = permissions.user (params, options, done) -> ui.patterns.remove 'environment variable', options.yes, (callback) -> resin.models.environmentVariables.remove(params.id, callback) - , errors.handle + , done -exports.add = permissions.user (params, options) -> +exports.add = permissions.user (params, options, done) -> if not params.value? params.value = process.env[params.key] if not params.value? - errors.handle(new Error("Environment value not found for key: #{params.key}")) + return done(new Error("Environment value not found for key: #{params.key}")) else log.info("Warning: using #{params.key}=#{params.value} from host environment") - resin.models.environmentVariables.create(options.application, params.key, params.value, _.unary(errors.handle)) + resin.models.environmentVariables.create(options.application, params.key, params.value, done) -exports.rename = permissions.user (params, options) -> - resin.models.environmentVariables.update(params.id, params.value, _.unary(errors.handle)) +exports.rename = permissions.user (params, options, done) -> + resin.models.environmentVariables.update(params.id, params.value, done) diff --git a/lib/actions/examples.coffee b/lib/actions/examples.coffee index 9a48223c..d584981d 100644 --- a/lib/actions/examples.coffee +++ b/lib/actions/examples.coffee @@ -7,7 +7,6 @@ resin = require('resin-sdk') permissions = require('../permissions/permissions') ui = require('../ui') log = require('../log/log') -errors = require('../errors/errors') examplesData = require('../data/examples.json') exports.list = permissions.user -> @@ -27,13 +26,12 @@ exports.list = permissions.user -> 'Author' ] -exports.info = permissions.user (params) -> +exports.info = permissions.user (params, options, done) -> id = params.id - 1 example = examplesData[id] if not example? - error = new Error("Unknown example: #{id}") - errors.handle(error) + return done(new Error("Unknown example: #{id}")) example.id = id example.author ?= 'Unknown' @@ -46,12 +44,13 @@ exports.info = permissions.user (params) -> 'Repository' ] -exports.clone = permissions.user (params) -> + return done() + +exports.clone = permissions.user (params, options, done) -> example = examplesData[params.id - 1] if not example? - error = new Error("Unknown example: #{id}") - errors.handle(error) + return done(new Error("Unknown example: #{id}")) async.waterfall [ @@ -67,5 +66,4 @@ exports.clone = permissions.user (params) -> log.info("Cloning #{example.display_name} to #{example.name}") gitCli.Repository.clone(example.repository, example.name, callback) - ], (error) -> - errors.handle(error) if error? + ], done diff --git a/lib/actions/keys.coffee b/lib/actions/keys.coffee index 3d6d5bab..3710358a 100644 --- a/lib/actions/keys.coffee +++ b/lib/actions/keys.coffee @@ -7,23 +7,26 @@ helpers = require('../helpers/helpers') ui = require('../ui') log = require('../log/log') permissions = require('../permissions/permissions') -errors = require('../errors/errors') -exports.list = permissions.user -> - resin.models.key.getAll errors.handleCallback (keys) -> +exports.list = permissions.user (params, options, done) -> + resin.models.key.getAll (error, keys) -> + return done(error) if error? log.out ui.widgets.table.horizontal keys, [ 'ID', 'Title' ] + return done() -exports.info = permissions.user (params) -> - resin.models.key.get params.id, errors.handleCallback (key) -> +exports.info = permissions.user (params, options, done) -> + resin.models.key.get params.id, (error, key) -> + return done(error) if error? key.public_key = '\n' + _.str.chop(key.public_key, resin.settings.get('sshKeyWidth')).join('\n') log.out(ui.widgets.table.vertical(key, [ 'ID', 'Title', 'Public Key' ])) + return done() -exports.remove = permissions.user (params, options) -> +exports.remove = permissions.user (params, options, done) -> ui.patterns.remove 'key', options.yes, (callback) -> resin.models.key.remove(params.id, callback) - , errors.handle + , done -exports.add = permissions.user (params) -> +exports.add = permissions.user (params, options, done) -> async.waterfall [ (callback) -> @@ -35,4 +38,4 @@ exports.add = permissions.user (params) -> (key, callback) -> resin.models.key.create(params.name, key, callback) - ], errors.handle + ], done diff --git a/lib/actions/logs.coffee b/lib/actions/logs.coffee index b783185a..fc283cf1 100644 --- a/lib/actions/logs.coffee +++ b/lib/actions/logs.coffee @@ -1,14 +1,15 @@ resin = require('resin-sdk') permissions = require('../permissions/permissions') log = require('../log/log') -errors = require('../errors/errors') LOGS_HISTORY_COUNT = 200 -exports.logs = permissions.user (params, options) -> +exports.logs = permissions.user (params, options, done) -> resin.logs.subscribe params.uuid, { history: options.num or LOGS_HISTORY_COUNT tail: options.tail - }, errors.handleCallback (message) -> + }, (error, message) -> + return done(error) if error? log.array(message, log.out) + return done() diff --git a/lib/actions/notes.coffee b/lib/actions/notes.coffee index b691e9a1..dba9e741 100644 --- a/lib/actions/notes.coffee +++ b/lib/actions/notes.coffee @@ -1,10 +1,9 @@ async = require('async') permissions = require('../permissions/permissions') -errors = require('../errors/errors') helpers = require('../helpers/helpers') resin = require('resin-sdk') -exports.set = permissions.user (params, options) -> +exports.set = permissions.user (params, options, done) -> async.waterfall([ (callback) -> @@ -15,4 +14,4 @@ exports.set = permissions.user (params, options) -> (note, callback) -> resin.models.device.note(options.device, note, callback) - ], errors.handle) + ], done) diff --git a/lib/actions/os.coffee b/lib/actions/os.coffee index 2d780176..c26c9c58 100644 --- a/lib/actions/os.coffee +++ b/lib/actions/os.coffee @@ -6,9 +6,8 @@ ProgressBar = require('progress') resin = require('resin-sdk') log = require('../log/log') permissions = require('../permissions/permissions') -errors = require('../errors/errors') -exports.download = (params, options) -> +exports.download = (params, options, done) -> osParams = network: options.network @@ -48,5 +47,7 @@ exports.download = (params, options) -> bar.tick(state.received - received) received = state.received - ], errors.handleCallback -> + ], (error) -> + return done(error) if error? log.info("\nFinished downloading #{outputFile}") + return done() diff --git a/lib/app.coffee b/lib/app.coffee index 3d2512c4..af71324f 100644 --- a/lib/app.coffee +++ b/lib/app.coffee @@ -624,4 +624,5 @@ resin.data.prefix.set resin.settings.get('dataPrefix'), (error) -> if cli.global.project? changeProjectDirectory(cli.global.project) - capitano.execute(cli) + capitano.execute cli, (error) -> + errors.handle(error) if error? diff --git a/package.json b/package.json index bcfc20f8..8ae5db15 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ }, "dependencies": { "async": "~0.9.0", - "capitano": "~1.1.1", + "capitano": "~1.2.0", "cliff": "~0.1.9", "coffee-script": "~1.8.0", "conf.js": "^0.1.1",