2014-11-24 12:12:12 -04:00
|
|
|
_ = require('lodash')
|
2015-02-10 11:55:30 -04:00
|
|
|
async = require('async')
|
2014-12-12 17:20:29 -04:00
|
|
|
capitano = require('capitano')
|
2015-01-08 09:04:37 -03:00
|
|
|
resin = require('resin-sdk')
|
2014-11-26 15:11:34 -04:00
|
|
|
actions = require('./actions')
|
2015-02-10 11:38:19 -04:00
|
|
|
errors = require('./errors')
|
2015-02-10 11:46:22 -04:00
|
|
|
plugins = require('./plugins')
|
2015-03-04 14:40:40 -04:00
|
|
|
update = require('./update')
|
2014-11-17 15:48:26 -04:00
|
|
|
|
2015-01-16 09:34:59 -03:00
|
|
|
capitano.permission 'user', (done) ->
|
|
|
|
resin.auth.isLoggedIn (isLoggedIn) ->
|
|
|
|
if not isLoggedIn
|
|
|
|
return done(new Error('You have to log in'))
|
|
|
|
return done()
|
|
|
|
|
2014-12-12 17:20:29 -04:00
|
|
|
capitano.command
|
|
|
|
signature: '*'
|
|
|
|
action: ->
|
|
|
|
capitano.execute(command: 'help')
|
2014-11-27 09:28:24 -04:00
|
|
|
|
2014-12-12 17:20:29 -04:00
|
|
|
# ---------- Options ----------
|
|
|
|
capitano.globalOption
|
|
|
|
signature: 'quiet'
|
2014-11-27 09:28:24 -04:00
|
|
|
description: 'quiet (no output)'
|
2014-12-12 17:20:29 -04:00
|
|
|
boolean: true
|
|
|
|
alias: 'q'
|
2014-11-27 09:28:24 -04:00
|
|
|
|
2014-12-22 10:08:12 -04:00
|
|
|
capitano.globalOption
|
|
|
|
signature: 'project'
|
|
|
|
parameter: 'path'
|
|
|
|
description: 'project path'
|
2015-02-09 11:47:49 -04:00
|
|
|
alias: 'j'
|
2014-12-22 10:08:12 -04:00
|
|
|
|
2015-04-30 11:56:15 -04:00
|
|
|
capitano.globalOption
|
|
|
|
signature: 'version'
|
|
|
|
description: actions.info.version.description
|
|
|
|
boolean: true
|
|
|
|
alias: 'v'
|
|
|
|
|
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
|
|
|
|
|
2015-01-15 14:10:14 -03:00
|
|
|
# ---------- Info Module ----------
|
|
|
|
capitano.command(actions.info.version)
|
2014-12-19 14:07:53 -04:00
|
|
|
|
2015-01-15 14:10:14 -03: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 ----------
|
2015-01-15 14:10:14 -03:00
|
|
|
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 ----------
|
2015-01-15 14:10:14 -03:00
|
|
|
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)
|
2015-03-09 09:14:39 -04:00
|
|
|
capitano.command(actions.app.associate)
|
2015-01-15 14:10:14 -03:00
|
|
|
capitano.command(actions.app.init)
|
2014-12-11 11:31:56 -04:00
|
|
|
|
2014-11-19 13:38:15 -04:00
|
|
|
# ---------- Device Module ----------
|
2015-01-15 14:10:14 -03:00
|
|
|
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)
|
2015-01-15 14:10:14 -03:00
|
|
|
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 ----------
|
2015-01-15 14:10:14 -03:00
|
|
|
capitano.command(actions.notes.set)
|
2014-12-24 12:40:40 -04:00
|
|
|
|
2014-11-19 08:59:17 -04:00
|
|
|
# ---------- Preferences Module ----------
|
2015-01-15 14:10:14 -03:00
|
|
|
capitano.command(actions.preferences.preferences)
|
2014-11-20 12:13:59 -04:00
|
|
|
|
2014-11-20 13:02:29 -04:00
|
|
|
# ---------- Keys Module ----------
|
2015-01-15 14:10:14 -03:00
|
|
|
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 ----------
|
2015-01-15 14:10:14 -03:00
|
|
|
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 ----------
|
2015-01-15 14:10:14 -03:00
|
|
|
capitano.command(actions.logs.logs)
|
2014-11-28 12:46:24 -04:00
|
|
|
|
2014-12-02 11:08:22 -04:00
|
|
|
# ---------- OS Module ----------
|
2015-01-15 14:10:14 -03:00
|
|
|
capitano.command(actions.os.download)
|
2015-02-03 13:31:16 -04:00
|
|
|
capitano.command(actions.os.install)
|
2014-12-12 17:20:29 -04:00
|
|
|
|
2014-12-22 12:00:01 -04:00
|
|
|
# ---------- Examples Module ----------
|
2015-01-15 14:10:14 -03:00
|
|
|
capitano.command(actions.examples.list)
|
|
|
|
capitano.command(actions.examples.clone)
|
|
|
|
capitano.command(actions.examples.info)
|
2014-12-22 12:00:01 -04:00
|
|
|
|
2015-02-12 09:41:25 -04:00
|
|
|
# ---------- Plugins Module ----------
|
|
|
|
capitano.command(actions.plugin.list)
|
2015-02-12 12:23:01 -04:00
|
|
|
capitano.command(actions.plugin.install)
|
2015-03-02 10:41:08 -04:00
|
|
|
capitano.command(actions.plugin.update)
|
2015-02-12 12:50:40 -04:00
|
|
|
capitano.command(actions.plugin.remove)
|
2015-02-12 09:41:25 -04:00
|
|
|
|
2015-03-04 14:03:08 -04:00
|
|
|
# ---------- Update Module ----------
|
|
|
|
capitano.command(actions.update.update)
|
|
|
|
|
2015-01-23 13:54:30 -04:00
|
|
|
changeProjectDirectory = (directory) ->
|
|
|
|
try
|
|
|
|
process.chdir(directory)
|
|
|
|
catch
|
|
|
|
errors.handle(new Error("Invalid project: #{directory}"))
|
|
|
|
|
2015-02-10 11:55:30 -04:00
|
|
|
async.waterfall([
|
2015-02-10 11:46:22 -04:00
|
|
|
|
2015-03-04 14:40:40 -04:00
|
|
|
(callback) ->
|
|
|
|
update.check(callback)
|
|
|
|
|
2015-02-10 11:55:30 -04:00
|
|
|
(callback) ->
|
2015-02-24 13:36:10 -04:00
|
|
|
plugins.register('resin-plugin-', callback)
|
2015-01-14 14:25:16 -03:00
|
|
|
|
2015-02-10 11:55:30 -04:00
|
|
|
(callback) ->
|
|
|
|
cli = capitano.parse(process.argv)
|
2014-11-26 15:05:00 -04:00
|
|
|
|
2015-01-23 13:24:57 -04:00
|
|
|
if cli.global.quiet
|
|
|
|
console.info = _.noop
|
2014-11-26 15:05:00 -04:00
|
|
|
|
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-04-30 11:56:15 -04:00
|
|
|
if cli.global.version
|
|
|
|
actions.info.version.action(null, null, callback)
|
|
|
|
else
|
|
|
|
capitano.execute(cli, callback)
|
2015-02-10 11:55:30 -04:00
|
|
|
|
|
|
|
], errors.handle)
|