mirror of
https://github.com/balena-io/balena-cli.git
synced 2024-12-24 07:46:39 +00:00
210680c9c9
In my system (MBPr 13), printing the current version takes over 2 seconds: ```sh $ time ./bin/resin version 2.4.0 ./bin/resin version 1.37s user 0.19s system 73% cpu 2.130 total ``` The CLI takes almost all of these time to parse the dependency tree before returning control over the actually called command. To mitigate this problem, we only require the NPM dependencies a command requires when executing such command, and thus prevent dependencies from being required and parsed unnecessary. After this improvement, printing the original example (`resin version`) returns in less than a second (2x improvement): ```sh $ time ./bin/resin version 2.4.0 ./bin/resin version 0.88s user 0.09s system 102% cpu 0.938 total ```
56 lines
1.7 KiB
CoffeeScript
56 lines
1.7 KiB
CoffeeScript
exports.wizard =
|
|
signature: 'quickstart [name]'
|
|
description: 'getting started with resin.io'
|
|
help: '''
|
|
Use this command to run a friendly wizard to get started with resin.io.
|
|
|
|
The wizard will guide you through:
|
|
|
|
- Create an application.
|
|
- Initialise an SDCard with the resin.io operating system.
|
|
- Associate an existing project directory with your resin.io application.
|
|
- Push your project to your devices.
|
|
|
|
Examples:
|
|
|
|
$ sudo resin quickstart
|
|
$ sudo resin quickstart MyApp
|
|
'''
|
|
permission: 'user'
|
|
primary: true
|
|
action: (params, options, done) ->
|
|
Promise = require('bluebird')
|
|
capitano = Promise.promisifyAll(require('capitano'))
|
|
resin = require('resin-sdk')
|
|
patterns = require('../utils/patterns')
|
|
|
|
Promise.try ->
|
|
return if params.name?
|
|
patterns.selectOrCreateApplication().tap (applicationName) ->
|
|
resin.models.application.has(applicationName).then (hasApplication) ->
|
|
return applicationName if hasApplication
|
|
capitano.runAsync("app create #{applicationName}")
|
|
.then (applicationName) ->
|
|
params.name = applicationName
|
|
.then ->
|
|
return capitano.runAsync("device init --application #{params.name}")
|
|
.tap(patterns.awaitDevice)
|
|
.then (uuid) ->
|
|
return capitano.runAsync("device #{uuid}")
|
|
.then ->
|
|
return resin.models.application.get(params.name)
|
|
.then (application) ->
|
|
console.log """
|
|
Your device is ready to start pushing some code!
|
|
|
|
Check our official documentation for more information:
|
|
|
|
http://docs.resin.io/#/pages/introduction/introduction.md
|
|
|
|
Clone an example or go to an existing application directory and run:
|
|
|
|
$ git remote add resin #{application.git_repository}
|
|
$ git push resin master
|
|
"""
|
|
.nodeify(done)
|