2016-01-03 23:58:51 -04:00
|
|
|
###
|
2019-04-02 12:26:21 +01:00
|
|
|
Copyright 2016-2019 Balena
|
2016-01-03 23:58:51 -04:00
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
###
|
|
|
|
|
2015-08-19 11:21:08 -04:00
|
|
|
Promise = require('bluebird')
|
2017-03-27 12:14:55 +03:00
|
|
|
capitano = require('capitano')
|
2014-11-26 15:11:34 -04:00
|
|
|
actions = require('./actions')
|
2016-02-12 14:34:16 -04:00
|
|
|
events = require('./events')
|
2017-03-29 12:03:40 +01:00
|
|
|
|
2015-01-16 09:34:59 -03:00
|
|
|
capitano.permission 'user', (done) ->
|
2019-04-02 12:26:21 +01:00
|
|
|
require('./utils/patterns').exitIfNotLoggedIn()
|
2019-03-25 15:16:23 +00:00
|
|
|
.then(done, done)
|
2015-01-16 09:34:59 -03:00
|
|
|
|
2014-12-12 17:20:29 -04:00
|
|
|
capitano.command
|
|
|
|
signature: '*'
|
2019-11-01 14:45:45 +01:00
|
|
|
action: (params, options, done) ->
|
|
|
|
capitano.execute(command: 'help', done)
|
2019-11-08 17:04:55 +00:00
|
|
|
process.exitCode = process.exitCode || 1
|
2014-11-27 09:28:24 -04:00
|
|
|
|
2016-07-29 15:32:12 +03:00
|
|
|
capitano.globalOption
|
|
|
|
signature: 'help'
|
|
|
|
boolean: true
|
|
|
|
alias: 'h'
|
|
|
|
|
2019-06-24 16:51:07 +01:00
|
|
|
capitano.globalOption
|
|
|
|
signature: 'version'
|
|
|
|
boolean: true
|
|
|
|
alias: 'v'
|
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
|
|
|
|
2018-04-04 14:42:57 +02:00
|
|
|
# ---------- Api key module ----------
|
|
|
|
capitano.command(actions.apiKey.generate)
|
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.remove)
|
|
|
|
capitano.command(actions.app.restart)
|
2015-06-04 11:54:15 -04:00
|
|
|
capitano.command(actions.app.info)
|
2014-12-11 11:31:56 -04:00
|
|
|
|
2018-04-04 14:42:57 +02:00
|
|
|
# ---------- Auth Module ----------
|
|
|
|
capitano.command(actions.auth.login)
|
|
|
|
capitano.command(actions.auth.logout)
|
|
|
|
capitano.command(actions.auth.whoami)
|
|
|
|
|
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.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.remove)
|
|
|
|
capitano.command(actions.device.identify)
|
2016-03-04 09:38:11 -04:00
|
|
|
capitano.command(actions.device.reboot)
|
2016-11-01 12:41:16 -03:00
|
|
|
capitano.command(actions.device.shutdown)
|
2016-08-09 18:44:50 +05:30
|
|
|
capitano.command(actions.device.enableDeviceUrl)
|
|
|
|
capitano.command(actions.device.disableDeviceUrl)
|
|
|
|
capitano.command(actions.device.getDeviceUrl)
|
|
|
|
capitano.command(actions.device.hasDeviceUrl)
|
2015-09-29 14:33:31 -04:00
|
|
|
capitano.command(actions.device.register)
|
2015-11-11 15:00:02 -04:00
|
|
|
capitano.command(actions.device.move)
|
2019-06-11 15:08:15 +03:00
|
|
|
capitano.command(actions.device.osUpdate)
|
2015-10-19 14:14:04 -04:00
|
|
|
capitano.command(actions.device.info)
|
2014-11-21 14:21:47 -04:00
|
|
|
|
2018-12-10 23:05:35 +02:00
|
|
|
# ---------- Tags Module ----------
|
|
|
|
capitano.command(actions.tags.list)
|
|
|
|
capitano.command(actions.tags.set)
|
|
|
|
capitano.command(actions.tags.remove)
|
|
|
|
|
2015-09-29 13:03:14 -04:00
|
|
|
# ---------- OS Module ----------
|
2017-06-08 22:58:37 +03:00
|
|
|
capitano.command(actions.os.versions)
|
2015-09-29 13:03:14 -04:00
|
|
|
capitano.command(actions.os.download)
|
2017-06-12 11:42:08 +03:00
|
|
|
capitano.command(actions.os.buildConfig)
|
2015-09-29 14:52:34 -04:00
|
|
|
capitano.command(actions.os.initialize)
|
2015-09-29 13:03:14 -04:00
|
|
|
|
2015-11-10 12:53:34 -04:00
|
|
|
# ---------- Config Module ----------
|
|
|
|
capitano.command(actions.config.read)
|
2015-11-10 14:27:01 -04:00
|
|
|
capitano.command(actions.config.write)
|
2016-03-17 16:07:19 -04:00
|
|
|
capitano.command(actions.config.inject)
|
2015-11-11 10:38:45 -04:00
|
|
|
capitano.command(actions.config.reconfigure)
|
2016-02-26 22:37:15 -04:00
|
|
|
capitano.command(actions.config.generate)
|
2015-11-10 12:53:34 -04:00
|
|
|
|
2014-11-28 12:46:24 -04:00
|
|
|
# ---------- Logs Module ----------
|
2019-04-24 11:59:30 +01:00
|
|
|
capitano.command(actions.logs.logs)
|
2014-11-28 12:46:24 -04:00
|
|
|
|
2019-02-15 15:27:03 +00:00
|
|
|
# ---------- Tunnel Module ----------
|
|
|
|
capitano.command(actions.tunnel.tunnel)
|
|
|
|
|
2017-08-04 14:53:31 +02:00
|
|
|
# ---------- Preload Module ----------
|
|
|
|
capitano.command(actions.preload)
|
|
|
|
|
2016-04-24 22:52:41 +03:00
|
|
|
# ---------- SSH Module ----------
|
2019-04-24 18:45:19 +01:00
|
|
|
capitano.command(actions.ssh.ssh)
|
2016-04-24 22:52:41 +03:00
|
|
|
|
2018-10-19 16:38:50 +02:00
|
|
|
# ---------- Local balenaOS Module ----------
|
2017-03-08 19:26:08 +00:00
|
|
|
capitano.command(actions.local.configure)
|
2019-05-30 15:18:58 +01:00
|
|
|
capitano.command(actions.local.flash)
|
2017-03-08 19:26:08 +00:00
|
|
|
|
2017-06-15 00:20:15 +03:00
|
|
|
# ---------- Public utils ----------
|
|
|
|
capitano.command(actions.util.availableDrives)
|
|
|
|
|
2017-03-29 12:03:40 +01:00
|
|
|
#------------ Local build and deploy -------
|
|
|
|
capitano.command(actions.build)
|
|
|
|
capitano.command(actions.deploy)
|
|
|
|
|
2018-04-25 15:20:07 +01:00
|
|
|
#------------ Push/remote builds -------
|
|
|
|
capitano.command(actions.push.push)
|
|
|
|
|
2019-08-09 18:36:52 +01:00
|
|
|
exports.run = (argv) ->
|
2019-08-15 13:40:55 +01:00
|
|
|
cli = capitano.parse(argv.slice(2))
|
2019-08-09 18:36:52 +01:00
|
|
|
runCommand = ->
|
|
|
|
capitanoExecuteAsync = Promise.promisify(capitano.execute)
|
|
|
|
if cli.global?.help
|
|
|
|
capitanoExecuteAsync(command: "help #{cli.command ? ''}")
|
|
|
|
else
|
|
|
|
capitanoExecuteAsync(cli)
|
|
|
|
|
2019-08-28 02:14:19 +01:00
|
|
|
trackCommand = ->
|
|
|
|
getMatchCommandAsync = Promise.promisify(capitano.state.getMatchCommand)
|
|
|
|
getMatchCommandAsync(cli.command)
|
|
|
|
.then (command) ->
|
|
|
|
# cmdSignature is literally a string like, for example:
|
|
|
|
# "push <applicationOrDevice>"
|
|
|
|
# ("applicationOrDevice" is NOT replaced with its actual value)
|
2020-03-13 12:32:29 +01:00
|
|
|
# In case of failures like an nonexistent or invalid command,
|
2019-08-28 02:14:19 +01:00
|
|
|
# command.signature.toString() returns '*'
|
|
|
|
cmdSignature = command.signature.toString()
|
|
|
|
events.trackCommand(cmdSignature)
|
|
|
|
|
|
|
|
Promise.all([trackCommand(), runCommand()])
|
2019-08-09 18:36:52 +01:00
|
|
|
.catch(require('./errors').handleError)
|