balena-cli/lib/actions/wizard.coffee
Juan Cruz Viotti f17e9c97b8 Prompt for select application if running device init with no arguments
Currently, if `device init` was ran without an application argument, we
attempted to get the application name from the current directory, given
it was a git repository.

This approach led to confusions from time to time, so now we prompt the
user to select one of it's own applications from a dropdown instead of
checking the current directory in this edge case.

Fixes: https://github.com/resin-io/resin-cli/issues/197
2015-09-29 15:10:59 -04:00

59 lines
1.7 KiB
CoffeeScript

Promise = require('bluebird')
capitano = Promise.promisifyAll(require('capitano'))
mkdirp = Promise.promisify(require('mkdirp'))
resin = require('resin-sdk')
form = require('resin-cli-form')
patterns = require('../utils/patterns')
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
'''
root: true
permission: 'user'
action: (params, options, done) ->
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}")
.tap ->
console.log('Your device is ready, lets start pushing some code!')
.then(patterns.selectProjectDirectory)
.tap(mkdirp)
.tap(process.chdir)
.then ->
return capitano.runAsync("app associate #{params.name}")
.then (remoteUrl) ->
console.log("Resin git remote added: #{remoteUrl}")
console.log """
Please type:
$ cd #{process.cwd()} && git push resin master
To push your project to resin.io.
"""
.nodeify(done)