mirror of
https://github.com/balena-io/balena-cli.git
synced 2025-02-27 11:36:37 +00:00
Implement and make use of errors.handleCallback()
This function is introduced to remove some duplication
This commit is contained in:
parent
41fcedb171
commit
05812ba442
@ -1,4 +1,4 @@
|
|||||||
_ = require('lodash')
|
_ = require('lodash-contrib')
|
||||||
async = require('async')
|
async = require('async')
|
||||||
resin = require('resin-sdk')
|
resin = require('resin-sdk')
|
||||||
ui = require('../ui')
|
ui = require('../ui')
|
||||||
@ -29,9 +29,7 @@ exports.create = permissions.user (params, options) ->
|
|||||||
], errors.handle
|
], errors.handle
|
||||||
|
|
||||||
exports.list = permissions.user ->
|
exports.list = permissions.user ->
|
||||||
resin.models.application.getAll (error, applications) ->
|
resin.models.application.getAll errors.handleCallback (applications) ->
|
||||||
errors.handle(error) if error?
|
|
||||||
|
|
||||||
log.out ui.widgets.table.horizontal applications, [
|
log.out ui.widgets.table.horizontal applications, [
|
||||||
'ID'
|
'ID'
|
||||||
'Name'
|
'Name'
|
||||||
@ -41,9 +39,7 @@ exports.list = permissions.user ->
|
|||||||
]
|
]
|
||||||
|
|
||||||
exports.info = permissions.user (params) ->
|
exports.info = permissions.user (params) ->
|
||||||
resin.models.application.get params.id, (error, application) ->
|
resin.models.application.get params.id, errors.handleCallback (application) ->
|
||||||
errors.handle(error) if error?
|
|
||||||
|
|
||||||
log.out ui.widgets.table.vertical application, [
|
log.out ui.widgets.table.vertical application, [
|
||||||
'ID'
|
'ID'
|
||||||
'Name'
|
'Name'
|
||||||
@ -53,8 +49,7 @@ exports.info = permissions.user (params) ->
|
|||||||
]
|
]
|
||||||
|
|
||||||
exports.restart = permissions.user (params) ->
|
exports.restart = permissions.user (params) ->
|
||||||
resin.models.application.restart params.id, (error) ->
|
resin.models.application.restart(params.id, _.unary(errors.handle))
|
||||||
errors.handle(error) if error?
|
|
||||||
|
|
||||||
exports.remove = permissions.user (params, options) ->
|
exports.remove = permissions.user (params, options) ->
|
||||||
ui.patterns.remove 'application', options.yes, (callback) ->
|
ui.patterns.remove 'application', options.yes, (callback) ->
|
||||||
@ -82,5 +77,4 @@ exports.init = permissions.user (params) ->
|
|||||||
(application, callback) ->
|
(application, callback) ->
|
||||||
resin.vcs.initProjectWithApplication(application, currentDirectory, callback)
|
resin.vcs.initProjectWithApplication(application, currentDirectory, callback)
|
||||||
|
|
||||||
], (error) ->
|
], errors.handle
|
||||||
errors.handle(error) if error?
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
_ = require('lodash')
|
_ = require('lodash-contrib')
|
||||||
url = require('url')
|
url = require('url')
|
||||||
async = require('async')
|
async = require('async')
|
||||||
resin = require('resin-sdk')
|
resin = require('resin-sdk')
|
||||||
@ -23,8 +23,7 @@ exports.login = (params) ->
|
|||||||
], errors.handle
|
], errors.handle
|
||||||
|
|
||||||
exports.logout = permissions.user ->
|
exports.logout = permissions.user ->
|
||||||
resin.auth.logout (error) ->
|
resin.auth.logout(_.unary(errors.handle))
|
||||||
errors.handle(error) if error?
|
|
||||||
|
|
||||||
exports.signup = ->
|
exports.signup = ->
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
@ -43,8 +42,7 @@ exports.signup = ->
|
|||||||
], errors.handle)
|
], errors.handle)
|
||||||
|
|
||||||
exports.whoami = permissions.user ->
|
exports.whoami = permissions.user ->
|
||||||
resin.auth.whoami (error, username) ->
|
resin.auth.whoami errors.handleCallback (username) ->
|
||||||
errors.handle(error) if error?
|
|
||||||
|
|
||||||
if not username?
|
if not username?
|
||||||
error = new Error('Username not found')
|
error = new Error('Username not found')
|
||||||
|
@ -7,9 +7,7 @@ errors = require('../errors/errors')
|
|||||||
permissions = require('../permissions/permissions')
|
permissions = require('../permissions/permissions')
|
||||||
|
|
||||||
exports.list = permissions.user (params, options) ->
|
exports.list = permissions.user (params, options) ->
|
||||||
resin.models.device.getAllByApplication options.application, (error, devices) ->
|
resin.models.device.getAllByApplication options.application, errors.handleCallback (devices) ->
|
||||||
errors.handle(error) if error?
|
|
||||||
|
|
||||||
log.out ui.widgets.table.horizontal devices, [
|
log.out ui.widgets.table.horizontal devices, [
|
||||||
'ID'
|
'ID'
|
||||||
'Name'
|
'Name'
|
||||||
@ -21,9 +19,7 @@ exports.list = permissions.user (params, options) ->
|
|||||||
]
|
]
|
||||||
|
|
||||||
exports.info = permissions.user (params) ->
|
exports.info = permissions.user (params) ->
|
||||||
resin.models.device.get params.id, (error, device) ->
|
resin.models.device.get params.id, errors.handleCallback (device) ->
|
||||||
errors.handle(error) if error?
|
|
||||||
|
|
||||||
log.out ui.widgets.table.vertical device, [
|
log.out ui.widgets.table.vertical device, [
|
||||||
'ID'
|
'ID'
|
||||||
'Name'
|
'Name'
|
||||||
@ -46,8 +42,7 @@ exports.remove = permissions.user (params, options) ->
|
|||||||
, errors.handle
|
, errors.handle
|
||||||
|
|
||||||
exports.identify = permissions.user (params) ->
|
exports.identify = permissions.user (params) ->
|
||||||
resin.models.device.identify params.uuid, (error) ->
|
resin.models.device.identify(params.uuid, _.unary(errors.handle))
|
||||||
errors.handle(error) if error?
|
|
||||||
|
|
||||||
exports.rename = permissions.user (params) ->
|
exports.rename = permissions.user (params) ->
|
||||||
async.waterfall [
|
async.waterfall [
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
_ = require('lodash')
|
_ = require('lodash-contrib')
|
||||||
resin = require('resin-sdk')
|
resin = require('resin-sdk')
|
||||||
ui = require('../ui')
|
ui = require('../ui')
|
||||||
permissions = require('../permissions/permissions')
|
permissions = require('../permissions/permissions')
|
||||||
@ -6,9 +6,7 @@ log = require('../log/log')
|
|||||||
errors = require('../errors/errors')
|
errors = require('../errors/errors')
|
||||||
|
|
||||||
exports.list = permissions.user (params, options) ->
|
exports.list = permissions.user (params, options) ->
|
||||||
resin.models.environmentVariables.getAllByApplication options.application, (error, environmentVariables) ->
|
resin.models.environmentVariables.getAllByApplication options.application, errors.handleCallback (environmentVariables) ->
|
||||||
errors.handle(error) if error?
|
|
||||||
|
|
||||||
if not options.verbose
|
if not options.verbose
|
||||||
environmentVariables = _.reject(environmentVariables, resin.models.environmentVariables.isSystemVariable)
|
environmentVariables = _.reject(environmentVariables, resin.models.environmentVariables.isSystemVariable)
|
||||||
|
|
||||||
@ -28,9 +26,7 @@ exports.add = permissions.user (params, options) ->
|
|||||||
else
|
else
|
||||||
log.info("Warning: using #{params.key}=#{params.value} from host environment")
|
log.info("Warning: using #{params.key}=#{params.value} from host environment")
|
||||||
|
|
||||||
resin.models.environmentVariables.create options.application, params.key, params.value, (error) ->
|
resin.models.environmentVariables.create(options.application, params.key, params.value, _.unary(errors.handle))
|
||||||
errors.handle(error) if error?
|
|
||||||
|
|
||||||
exports.rename = permissions.user (params, options) ->
|
exports.rename = permissions.user (params, options) ->
|
||||||
resin.models.environmentVariables.update params.id, params.value, (error) ->
|
resin.models.environmentVariables.update(params.id, params.value, _.unary(errors.handle))
|
||||||
errors.handle(error) if error?
|
|
||||||
|
@ -10,15 +10,11 @@ permissions = require('../permissions/permissions')
|
|||||||
errors = require('../errors/errors')
|
errors = require('../errors/errors')
|
||||||
|
|
||||||
exports.list = permissions.user ->
|
exports.list = permissions.user ->
|
||||||
resin.models.key.getAll (error, keys) ->
|
resin.models.key.getAll errors.handleCallback (keys) ->
|
||||||
errors.handle(error) if error?
|
|
||||||
|
|
||||||
log.out ui.widgets.table.horizontal keys, [ 'ID', 'Title' ]
|
log.out ui.widgets.table.horizontal keys, [ 'ID', 'Title' ]
|
||||||
|
|
||||||
exports.info = permissions.user (params) ->
|
exports.info = permissions.user (params) ->
|
||||||
resin.models.key.get params.id, (error, key) ->
|
resin.models.key.get params.id, errors.handleCallback (key) ->
|
||||||
errors.handle(error) if error?
|
|
||||||
|
|
||||||
key.public_key = '\n' + _.str.chop(key.public_key, resin.settings.get('sshKeyWidth')).join('\n')
|
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' ]))
|
log.out(ui.widgets.table.vertical(key, [ 'ID', 'Title', 'Public Key' ]))
|
||||||
|
|
||||||
|
@ -10,6 +10,5 @@ exports.logs = permissions.user (params, options) ->
|
|||||||
resin.logs.subscribe params.uuid, {
|
resin.logs.subscribe params.uuid, {
|
||||||
history: options.num or LOGS_HISTORY_COUNT
|
history: options.num or LOGS_HISTORY_COUNT
|
||||||
tail: options.tail
|
tail: options.tail
|
||||||
}, (error, message) ->
|
}, errors.handleCallback (message) ->
|
||||||
errors.handle(error) if error?
|
|
||||||
log.array(message, log.out)
|
log.array(message, log.out)
|
||||||
|
@ -54,6 +54,5 @@ exports.download = (params, options) ->
|
|||||||
bar.tick(state.received - received)
|
bar.tick(state.received - received)
|
||||||
received = state.received
|
received = state.received
|
||||||
|
|
||||||
], (error) ->
|
], errors.handleCallback ->
|
||||||
errors.handle(error) if error?
|
|
||||||
log.info("\nFinished downloading #{outputFile}")
|
log.info("\nFinished downloading #{outputFile}")
|
||||||
|
@ -22,3 +22,11 @@ exports.handle = (error, exit = true) ->
|
|||||||
errorCode = 1
|
errorCode = 1
|
||||||
|
|
||||||
process.exit(errorCode) if exit
|
process.exit(errorCode) if exit
|
||||||
|
|
||||||
|
exports.handleCallback = (callback, context, exit) ->
|
||||||
|
if not _.isFunction(callback)
|
||||||
|
throw new Error('Callback is not a function')
|
||||||
|
|
||||||
|
return (error, args...) ->
|
||||||
|
exports.handle(error, exit) if error?
|
||||||
|
return callback.apply(context, args)
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
_ = require('lodash')
|
||||||
expect = require('chai').expect
|
expect = require('chai').expect
|
||||||
sinon = require('sinon')
|
sinon = require('sinon')
|
||||||
log = require('../log/log')
|
log = require('../log/log')
|
||||||
@ -77,3 +78,52 @@ describe 'Errors:', ->
|
|||||||
checkProcessExitOption error, false, (processExitStub, logErrorStub) ->
|
checkProcessExitOption error, false, (processExitStub, logErrorStub) ->
|
||||||
expect(logErrorStub).to.have.been.calledOnce
|
expect(logErrorStub).to.have.been.calledOnce
|
||||||
expect(logErrorStub).to.have.been.calledWith('No such file or directory: hello')
|
expect(logErrorStub).to.have.been.calledWith('No such file or directory: hello')
|
||||||
|
|
||||||
|
describe '#handleCallback()', ->
|
||||||
|
|
||||||
|
it 'should throw an error if callback is not a function', ->
|
||||||
|
expect ->
|
||||||
|
errors.handleCallback('hello')
|
||||||
|
.to.throw('Callback is not a function')
|
||||||
|
|
||||||
|
it 'should return a new function', ->
|
||||||
|
callback = errors.handleCallback(_.noop)
|
||||||
|
expect(callback).to.be.an.instanceof(Function)
|
||||||
|
|
||||||
|
describe 'given no error', ->
|
||||||
|
|
||||||
|
it 'should pass arguments back to the callback', ->
|
||||||
|
spy = sinon.spy()
|
||||||
|
callback = errors.handleCallback(spy)
|
||||||
|
callback.call(null, null, 'Hello World', 123)
|
||||||
|
expect(spy).to.have.been.calledOnce
|
||||||
|
expect(spy).to.have.been.calledWithExactly('Hello World', 123)
|
||||||
|
|
||||||
|
it 'should be able to pass a context', ->
|
||||||
|
spy = sinon.spy()
|
||||||
|
context =
|
||||||
|
foo: 'bar'
|
||||||
|
callback = errors.handleCallback(spy, context)
|
||||||
|
callback.call(null, null, 'Hello World', 123)
|
||||||
|
expect(spy).to.have.been.calledOn(context)
|
||||||
|
|
||||||
|
describe 'given an error', ->
|
||||||
|
|
||||||
|
beforeEach ->
|
||||||
|
@handleStub = sinon.stub(errors, 'handle')
|
||||||
|
@error = new Error('hello')
|
||||||
|
|
||||||
|
afterEach ->
|
||||||
|
@handleStub.restore()
|
||||||
|
|
||||||
|
it 'should call handle() with the error', ->
|
||||||
|
callback = errors.handleCallback(_.noop)
|
||||||
|
callback.call(null, @error)
|
||||||
|
expect(@handleStub).to.have.been.calledOnce
|
||||||
|
expect(@handleStub).to.have.been.calledWith(@error)
|
||||||
|
|
||||||
|
it 'should call handle() with the exit boolean parameter', ->
|
||||||
|
callback = errors.handleCallback(_.noop, null, false)
|
||||||
|
callback.call(null, @error)
|
||||||
|
expect(@handleStub).to.have.been.calledOnce
|
||||||
|
expect(@handleStub).to.have.been.calledWithExactly(@error, false)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user