mirror of
https://github.com/balena-io/balena-cli.git
synced 2024-12-25 00:11:04 +00:00
140 lines
3.2 KiB
CoffeeScript
140 lines
3.2 KiB
CoffeeScript
_ = require('lodash')
|
|
TypedError = require('typed-error')
|
|
log = require('../log/log')
|
|
|
|
exports.NotFound = class NotFound extends TypedError
|
|
|
|
# Construct a Not Found error
|
|
#
|
|
# @param {String} name name of the thing that was not found
|
|
#
|
|
# @example Application not found
|
|
# throw new resin.errors.NotFound('application')
|
|
# Error: Couldn't find application
|
|
#
|
|
constructor: (name) ->
|
|
@message = "Couldn't find #{name}"
|
|
|
|
# Error code
|
|
code: 1
|
|
|
|
exports.InvalidConfigFile = class InvalidConfigFile extends TypedError
|
|
|
|
# Construct an Invalid Config File error
|
|
#
|
|
# @param {String} file the name of the invalid configuration file
|
|
#
|
|
# @example Invalid config file error
|
|
# throw new resin.errors.InvalidConfigFile('/opt/resin.conf')
|
|
# Error: Invalid configuration file: /opt/resin.conf
|
|
#
|
|
constructor: (file) ->
|
|
@message = "Invalid configuration file: #{file}"
|
|
|
|
# Error code
|
|
code: 1
|
|
|
|
exports.InvalidCredentials = class InvalidCredentials extends TypedError
|
|
|
|
# Construct an Invalid Credentials error
|
|
#
|
|
# @example Invalid credentials error
|
|
# throw new resin.errors.InvalidCredentials()
|
|
# Error: Invalid credentials
|
|
#
|
|
constructor: ->
|
|
@message = 'Invalid credentials'
|
|
|
|
# Error code
|
|
code: 1
|
|
|
|
exports.InvalidKey = class InvalidKey extends TypedError
|
|
|
|
# Construct an Invalid Key error
|
|
#
|
|
# @example Invalid key error
|
|
# throw new resin.errors.InvalidKey()
|
|
# Error: Invalid key
|
|
#
|
|
constructor: ->
|
|
@message = 'Invalid key'
|
|
|
|
# Error code
|
|
code: 1
|
|
|
|
exports.InvalidPath = class InvalidPath extends TypedError
|
|
|
|
# Construct an Invalid Path error
|
|
#
|
|
# @param {String} path the name of the invalid path
|
|
#
|
|
# @example Invalid path error
|
|
# throw new resin.errors.InvalidPath('/tmp')
|
|
# Error: Invalid path: /tmp
|
|
#
|
|
constructor: (path) ->
|
|
@message = "Invalid path: #{path}"
|
|
|
|
# Error code
|
|
code: 1
|
|
|
|
exports.DirectoryDoesntExist = class DirectoryDoesntExist extends TypedError
|
|
|
|
# Construct a Directory Doesn't Exist error
|
|
#
|
|
# @param {String} directory the name of the directory that doesn't exist
|
|
#
|
|
# @example Directory doesn't exist error
|
|
# throw new resin.errors.DirectoryDoesntExist('/tmp')
|
|
# Error: Directory doesn't exist: /tmp
|
|
#
|
|
constructor: (directory) ->
|
|
@message = "Directory doesn't exist: #{directory}"
|
|
|
|
# Error code
|
|
code: 1
|
|
|
|
exports.NotAny = class NotAny extends TypedError
|
|
|
|
# Construct an Not Any error
|
|
#
|
|
# @param {String} name name of the thing that the user doesn't have
|
|
#
|
|
# @example Not Any applications error
|
|
# throw new resin.errors.NotAny('applications')
|
|
# Error: You don't have any applications
|
|
#
|
|
constructor: (name) ->
|
|
@message = "You don't have any #{name}"
|
|
|
|
# Error code
|
|
code: 0
|
|
|
|
# Handle error instances
|
|
#
|
|
# Prints the message to stderr and aborts the program with the corresponding error code, or 0 if none.
|
|
#
|
|
# @param {Error} error the error instance
|
|
# @param {Boolean} exit whether to exit or not (defaults to true)
|
|
#
|
|
# @example Handle error
|
|
# error = new Error('My Error')
|
|
# shouldExit = false
|
|
# resin.errors.handle(error, shouldExit)
|
|
#
|
|
exports.handle = (error, exit = true) ->
|
|
return if not error? or error not instanceof Error
|
|
|
|
if process.env.DEBUG
|
|
log.error(error.stack)
|
|
else
|
|
if error.message?
|
|
log.error(error.message)
|
|
|
|
if _.isNumber(error.code)
|
|
errorCode = error.code
|
|
else
|
|
errorCode = 1
|
|
|
|
process.exit(errorCode) if exit
|