balena-cli/lib/app.coffee

132 lines
3.5 KiB
CoffeeScript
Raw Normal View History

2014-11-24 12:12:12 -04:00
_ = require('lodash')
2015-01-14 14:25:16 -03:00
path = require('path')
capitano = require('capitano')
2015-01-08 09:04:37 -03:00
resin = require('resin-sdk')
2015-01-23 10:23:47 -04:00
nplugm = require('nplugm')
actions = require('./actions')
errors = require('./errors/errors')
2014-11-17 15:48:26 -04:00
capitano.permission 'user', (done) ->
resin.auth.isLoggedIn (isLoggedIn) ->
if not isLoggedIn
return done(new Error('You have to log in'))
return done()
capitano.command
signature: '*'
action: ->
capitano.execute(command: 'help')
# ---------- Options ----------
capitano.globalOption
signature: 'quiet'
description: 'quiet (no output)'
boolean: true
alias: 'q'
2014-12-22 10:08:12 -04:00
capitano.globalOption
signature: 'project'
parameter: 'path'
description: 'project path'
alias: 'p'
2014-12-23 09:21:11 -04:00
# We don't do anything in response to this options
# explicitly. We use InquirerJS to provide CLI widgets,
# and that module understands --no-color automatically.
capitano.globalOption
signature: 'no-color'
description: 'disable colour highlighting'
boolean: true
# ---------- Info Module ----------
capitano.command(actions.info.version)
2014-12-19 14:07:53 -04:00
# ---------- Help Module ----------
capitano.command(actions.help.help)
2014-12-24 12:40:40 -04:00
2014-11-18 11:37:29 -04:00
# ---------- Auth Module ----------
capitano.command(actions.auth.login)
capitano.command(actions.auth.logout)
capitano.command(actions.auth.signup)
capitano.command(actions.auth.whoami)
2014-12-12 10:25:32 -04:00
2014-11-18 11:37:29 -04:00
# ---------- App Module ----------
capitano.command(actions.app.create)
capitano.command(actions.app.list)
capitano.command(actions.app.info)
capitano.command(actions.app.remove)
capitano.command(actions.app.restart)
capitano.command(actions.app.init)
2014-12-11 11:31:56 -04:00
2014-11-19 13:38:15 -04:00
# ---------- Device Module ----------
capitano.command(actions.device.list)
capitano.command(actions.device.supported)
capitano.command(actions.device.rename)
2015-02-04 14:13:28 -04:00
capitano.command(actions.device.init)
capitano.command(actions.device.info)
capitano.command(actions.device.remove)
capitano.command(actions.device.identify)
2014-11-21 14:21:47 -04:00
2015-01-30 08:45:38 -04:00
# ---------- Drive Module ----------
capitano.command(actions.drive.list)
# ---------- Notes Module ----------
capitano.command(actions.notes.set)
2014-12-24 12:40:40 -04:00
2014-11-19 08:59:17 -04:00
# ---------- Preferences Module ----------
capitano.command(actions.preferences.preferences)
2014-11-20 12:13:59 -04:00
2014-11-20 13:02:29 -04:00
# ---------- Keys Module ----------
capitano.command(actions.keys.list)
capitano.command(actions.keys.add)
capitano.command(actions.keys.info)
capitano.command(actions.keys.remove)
2014-11-21 13:56:11 -04:00
2014-11-24 12:12:12 -04:00
# ---------- Env Module ----------
capitano.command(actions.env.list)
capitano.command(actions.env.add)
capitano.command(actions.env.rename)
capitano.command(actions.env.remove)
2014-11-24 13:00:36 -04:00
2014-11-28 12:46:24 -04:00
# ---------- Logs Module ----------
capitano.command(actions.logs.logs)
2014-11-28 12:46:24 -04:00
2014-12-02 11:08:22 -04:00
# ---------- OS Module ----------
capitano.command(actions.os.download)
capitano.command(actions.os.install)
# ---------- Examples Module ----------
capitano.command(actions.examples.list)
capitano.command(actions.examples.clone)
capitano.command(actions.examples.info)
registerPlugin = (plugin) ->
return capitano.command(plugin) if not _.isArray(plugin)
return _.each(plugin, capitano.command)
changeProjectDirectory = (directory) ->
try
process.chdir(directory)
catch
errors.handle(new Error("Invalid project: #{directory}"))
2015-01-23 13:24:57 -04:00
nplugm.load 'resin-plugin-*', (error, plugin) ->
return console.error(error.message) if error?
registerPlugin(plugin.require())
, (error, loadedPlugins) ->
errors.handle(error) if error?
2015-01-14 14:25:16 -03:00
2015-01-23 13:24:57 -04:00
cli = capitano.parse(process.argv)
2014-12-02 11:08:22 -04:00
2015-01-23 13:24:57 -04:00
resin.data.prefix.set resin.settings.get('dataPrefix'), (error) ->
errors.handle(error) if error?
2015-01-23 13:24:57 -04:00
if cli.global.quiet
console.info = _.noop
2015-01-23 13:24:57 -04:00
if cli.global.project?
changeProjectDirectory(cli.global.project)
2014-12-22 10:08:12 -04:00
2015-01-23 13:24:57 -04:00
capitano.execute cli, (error) ->
errors.handle(error) if error?