Commit Graph

187 Commits

Author SHA1 Message Date
Juan Cruz Viotti
ebefd816b6 Show shorter uuids when listing devices 2016-01-21 10:26:13 -04:00
Juan Cruz Viotti
fb1ef0df63 Promote shorter uuids in all examples 2016-01-21 10:23:40 -04:00
Juan Cruz Viotti
add30b33a1 Remove registered device resource in case of errors in quickstart
A device resource needs to be registered with the API before being able
to create the `config.json` file that goes in a device.

This means thats the device image is configured and written to an
external drive (e.g: SDCard) *after* the device resource registered.

If any of the above operations fail, there will be an unitialized orphan
device living in the selected application that the user will have to
remove himself.
2016-01-14 09:14:45 -04:00
Juan Cruz Viotti
2be105d329 Don't make device init a primary command
Unlikely that a user will run this directly having the more high level
`quickstart`.
2016-01-11 16:00:07 -04:00
Juan Cruz Viotti
9cfce68489 Change license to Apache 2.0 2016-01-03 23:58:51 -04:00
Juan Cruz Viotti
210680c9c9 Lazy load command actions dependencies
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
```
2015-12-07 11:48:54 -03:00
Juan Cruz Viotti
20855be968 Merge pull request #275 from resin-io/jviotti/feat/sudo-explain
Explain why we need the computer password on device init
2015-12-02 15:59:27 -04:00
Juan Cruz Viotti
abc8399260 Explain why we need the computer password on device init 2015-12-02 11:15:20 -04:00
Juan Cruz Viotti
9ad2ba1131 Show id in devices command 2015-12-02 09:06:41 -04:00
Juan Cruz Viotti
43697a3476 Show uuid in devices command
The command to get information about a device, `resin device` requires a
`uuid` as a parameter. Given that we don't show uuids in `resin
devices`, the user has no way to know what uuid to pass to get extra
information.

We also remove some non very used information columns from `resin
devices` to make space for the uuid.
2015-11-13 14:06:55 -04:00
Juan Cruz Viotti
ba318f2939 Implement device move command
This command allows to user to move a device to another application he
owns.
2015-11-12 07:47:16 -04:00
Juan Cruz Viotti
f2507daa09 Allow advanced option in device init
This option is inherited to `os configure`.
2015-10-20 09:16:56 -04:00
Juan Cruz Viotti
d28ecf3230 Allow passing a custom uuid to device register 2015-10-19 14:16:47 -04:00
Juan Cruz Viotti
b2425d2c0e Take device type as an option in os initialize 2015-10-15 09:11:38 -04:00
Juan Cruz Viotti
cddf630907 Avoid _.ary in temporal path disposer
For some reason fails with a weird Bluebird error on Windows
2015-10-12 18:12:58 -04:00
Juan Cruz Viotti
e5e871ddcd Upgrade SDK to v3.0.0
Breaking changes in this version:

- `resin.models.device.generateUUID()` is now async.
2015-10-12 08:34:22 -04:00
Juan Cruz Viotti
f8470287c1 Separate general help per topic relevance
Only list primary commands by default, unless a `--verbose` option is
passed to list the additional ones.

Fixes: https://github.com/resin-io/resin-cli/issues/101
2015-10-02 08:50:32 -04:00
Juan Cruz Viotti
445e37ccaf Call os initialize as an elevated process
Currently, the fact that `os initialize` requires elevated permissions
forced us to require calling commands that reuse it, such as `device
init` and `quickstart` with administrator permissions as well.

This ended up causing issues like saving images in the cache that belong
to root, or initializing git repositories that requires `sudo` to
commit.

The solution is to call `os initialize` as a child process preppending
`sudo` within `device init`.

Fixes: https://github.com/resin-io/resin-cli/issues/109
2015-10-01 13:07:53 -04:00
Juan Cruz Viotti
90be01b05d Make os initialize take a device type instead of a uuid 2015-09-30 14:31:23 -04:00
Juan Cruz Viotti
0e06ac464f Fix incorrect Promise.using syntax
`Promise.using` takes the function that acts on the resource as the
second argument, instead of as `.then()`.
2015-09-30 11:37:27 -04:00
Juan Cruz Viotti
15cb0c4889 Use rimraf for deleting os temporary files
We already use `rimraf` for deleting os temporary directories, however
there are a few benefits of using it for files as well:

- Simplicity. We avoid having to check if a path is a file or directory.
- `rimraf` attempts to workaround the known Windows issues of anti
viruses not closing files. Described in more detail here: https://github.com/resin-io/resin-cli/blob/master/TROUBLESHOOTING.md#i-get-ebusy-errors-after-initializing-a-device-even-as-administrator-on-windows
2015-09-30 10:06:08 -04:00
Juan Cruz Viotti
30d84f015a Merge pull request #199 from resin-io/jviotti/feature/197/device-init-apps
Prompt for select application if running device init with no arguments
2015-09-29 15:31:59 -04:00
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
Juan Cruz Viotti
21fcdfaff6 Use Promise.disposer() to make sure temp files are deleted 2015-09-29 15:08:24 -04:00
Juan Cruz Viotti
d704c10197 Implement os initialize command
This command initialized an operating system image with a disk device.
2015-09-29 14:52:34 -04:00
Juan Cruz Viotti
7e6eb4b9e4 Implement device register command
This command registers a new device with the passed application,
returning the new device uuid.
2015-09-29 14:33:31 -04:00
Juan Cruz Viotti
42256384be Implement os configure
This command, given a path to an image and a device uuid, perform
configuration based on the resin-device-type manifests.
2015-09-29 13:47:10 -04:00
Juan Cruz Viotti
f6d8f12ba2 Implement os download command
This command download an unconfigured image to both the cache and to the
specified location by the `--output` option.
2015-09-29 13:03:14 -04:00
Juan Cruz Viotti
64c8420c9d Implement device specs. Fix #99
Support for all devices. Tested in the following ones:

- Intel Edison.
- Raspberry Pi 2.
- Parallella.
2015-09-11 13:02:59 +03:00
Juan Cruz Viotti
4bdcd3d2ee Merge pull request #180 from resin-io/issue_#103
Resin CLI Events integration. Fix #103
2015-09-05 20:11:52 +03:00
mike
b0650530cc Resin CLI Events integration. Fix #103 2015-09-05 19:15:31 +03:00
Juan Cruz Viotti
a090e6c21d Refactor quickstart
- Use promises.
- Move some logic to `helpers`.
- Inline `device await` command.
2015-08-27 10:01:33 -04:00
Juan Cruz Viotti
354921ca92 Add Aborted error message when not accepting a confirmation
This prevents a lot of duplicate code to check for confirmation status
and exit from the current action.
2015-08-20 16:16:20 -04:00
Juan Cruz Viotti
dc513a08f6 Update Resin CLI Form to v1.2.0
This version includes support for the `drive` input type.
2015-08-20 11:55:53 -04:00
mike
0595452c3d Add message informing the user about potential delay in system img initialization. Fix #90. 2015-08-18 15:43:52 +03:00
mike
02a06e1e7c Reword output during download in device init. Fix #106. 2015-08-18 13:55:04 +03:00
Juan Cruz Viotti
a698b25fda Remove devices supported command
The command is not necessary and unused.
2015-08-17 10:05:36 -04:00
Juan Cruz Viotti
e5b7aae4ae Refactor device actions to use promises 2015-08-17 09:49:59 -04:00
Juan Cruz Viotti
30f24333c0 Implement a spinner when awaiting for a device. Fix #107
Fixes:

- https://github.com/resin-io/resin-cli/issues/107
2015-08-14 14:35:38 -04:00
Juan Cruz Viotti
8c9a0e0ff1 Fix broken device await command
There were two issues that prevented this command from working
correctly:

1- `Promise.delay()` is used, but `Promise` was not imported.
2- The following line had incorrect indentation (spaces instead of
		tabs):

		poll().nodeify(done)

Therefore CoffeeScript interpreted that the line had to be executed at
the end of the `poll()` function, causing `poll()` to never be called.
2015-08-14 14:11:49 -04:00
Juan Cruz Viotti
50cb04b6f7 Remove unused dependencies imports from various files 2015-08-13 13:04:22 -04:00
Juan Cruz Viotti
e60c0605e5 Use Visuals drive widget in device init
- Replace custom `drivelist` logic in "device init" with the new `drive`
widget.
2015-08-13 11:56:16 -04:00
Juan Cruz Viotti
57319f26a6 Slim down unused functionality 2015-08-12 08:17:46 -04:00
Juan Cruz Viotti
dc030f4cd1 Implement Quickstart command 2015-08-04 20:16:55 +03:00
mike
cf512cc01b Integrate new resin-cli-visuals functionality 2015-07-29 16:34:31 +03:00
mike
5b5d1be52f Integrate resin-cli-form 2015-07-27 19:50:47 +03:00
Juan Cruz Viotti
cb808869dd Merge pull request #110 from resin-io/support_promises
Add promise support for Resin-SDK dependency
2015-07-24 08:02:40 -04:00
mike
64d83dccfb Add promise support for Resin-SDK dependency 2015-07-24 00:24:17 +03:00
Juan Cruz Viotti
1d53db2854 Add registered_at UNIX epoch 2015-07-23 12:47:49 -04:00
mike
46fa4ee2a2 Upgrade Resin VCS dependencies 2015-07-11 00:03:20 +03:00
Juan Cruz Viotti
9d4ac46985 Default device.last_seen to 'Not seen'. Closes #84. 2015-07-09 09:56:39 -04:00
Juan Cruz Viotti
8fa906dd48 Upgrade Resin CLI Visuals and use it's new capabilities 2015-06-11 12:46:56 -04:00
Juan Cruz Viotti
43f0288c6c Check that the passed application exists before asking to choose device 2015-06-08 12:31:17 -04:00
Juan Cruz Viotti
2bfeb7f42c Associate a device before first boot 2015-06-04 10:10:15 -04:00
Juan Cruz Viotti
fdd0e4a966 Implement config injection 2015-06-04 08:06:37 -04:00
Juan Cruz Viotti
db58e9986c Return devices array to the done callback in device list command
Useful when using the CLI programatically.
2015-05-14 11:43:41 -03:00
Juan Cruz Viotti
741acfbba3 Merge pull request #41 from resin-io/feature/command-run
Make use of capitano.run() to run subcommands
2015-05-08 14:23:37 -03:00
Juan Cruz Viotti
4c5d5697bc Implement device await command 2015-05-06 11:14:08 -03:00
Juan Cruz Viotti
c758a5b9ea Make use of capitano.run() to run subcommands 2015-05-05 17:34:24 -03:00
Juan Cruz Viotti
9bb51d7146 Make devices command list all devices if no application option. Closes #17 2015-04-27 11:21:30 -04:00
Juan Cruz Viotti
3bc71577b5 Fix temporary os download output option in device init 2015-04-21 08:37:40 -04:00
Juan Cruz Viotti
7bd8922a4e Upgrade Resin VCS to v1.2.0 and make use of vcs.getApplicationName() 2015-04-20 11:41:26 -04:00
Juan Cruz Viotti
f7256e9927 Make device init command take an application name instead of id 2015-04-20 09:13:15 -04:00
Juan Cruz Viotti
a14dfa6cf1 Fix long line lint warning 2015-03-23 18:32:28 -04:00
Juan Cruz Viotti
f3b6f9d117 Add missing example to device init 2015-03-23 08:25:45 -04:00
Juan Cruz Viotti
df9c4ce2fd Reference applications and devices by name 2015-03-23 08:17:55 -04:00
Juan Cruz Viotti
80e0f20301 Make device init attempt to get application id from current directory 2015-03-12 12:03:59 -04:00
Juan Cruz Viotti
53197856ab Extend device init help message 2015-03-11 09:05:20 -04:00
Juan Cruz Viotti
6ba97cd961 Automate resin init command 2015-03-09 09:14:39 -04:00
Juan Cruz Viotti
6a83a537c7 Implement basic documentation generation mechanism 2015-03-03 11:32:24 -04:00
Juan Cruz Viotti
a6a3eeae6d Make use of resin.models.device.getSupportedDeviceTypes() asynchronously 2015-02-11 09:53:48 -04:00
Juan Cruz Viotti
3005a91658 Write device init help page 2015-02-05 09:56:22 -04:00
Juan Cruz Viotti
e6081238a1 Implement new device init command 2015-02-04 15:17:51 -04:00
Juan Cruz Viotti
9f4ae4ac3f Rename current device init to os download 2015-02-04 15:17:50 -04:00
Juan Cruz Viotti
6ce0fdc4ab Make use of diskio 2015-02-02 12:25:22 -04:00
Juan Cruz Viotti
c7c7d55338 Allow to choose a device interactively from device init 2015-01-30 12:55:56 -04:00
Juan Cruz Viotti
7beca02eda Mention drives command in device init help 2015-01-30 09:58:54 -04:00
Juan Cruz Viotti
03c6c72df6 Integrate new progress bar 2015-01-29 14:59:57 -04:00
Juan Cruz Viotti
2d5549873a Prettier progress bar 2015-01-29 14:06:38 -04:00
Juan Cruz Viotti
35633f3612 Math.floor() percentage 2015-01-29 14:05:10 -04:00
Juan Cruz Viotti
2b992ec233 Simple progress bar approach 2015-01-29 14:01:21 -04:00
Juan Cruz Viotti
3e938f7808 Remove done message at the end of windosu execution 2015-01-29 12:29:35 -04:00
Juan Cruz Viotti
38139ed169 Simplify conditional 2015-01-29 12:27:37 -04:00
Juan Cruz Viotti
f767f637f7 Fix conditional 2015-01-29 12:23:30 -04:00
Juan Cruz Viotti
8437757ca8 Prevent infinite loop 2015-01-29 12:21:56 -04:00
Juan Cruz Viotti
9069b07d4a Integrate windosu 2015-01-29 12:04:48 -04:00
Juan Cruz Viotti
db3d4292f4 Add Windows support to device init command 2015-01-28 08:33:50 -04:00
Juan Cruz Viotti
155a6775e4 Make use of device_type directly 2015-01-22 13:20:20 -04:00
Juan Cruz Viotti
a275de436d Make use of simplified table widget 2015-01-22 13:06:02 -04:00
Juan Cruz Viotti
50325d0f8f Make use of resin-cli-visuals and get rid of local ui module 2015-01-21 09:50:19 -04:00
Juan Cruz Viotti
aa6680d57a Fix device init help OS X command 2015-01-20 15:36:01 -04:00
Juan Cruz Viotti
aa4d7a408a Implement device init command (for UNIX only) 2015-01-20 15:34:47 -04:00
Juan Cruz Viotti
d49677581b Make use of Capitano permissions feature 2015-01-16 09:34:59 -03:00
Juan Cruz Viotti
5abc4e550f Move command declarations next to their definitions 2015-01-15 14:18:39 -03:00
Juan Cruz Viotti
a6282d2b28 Get rid of log module
Didn't provide that much value
2015-01-15 11:36:43 -03:00
Juan Cruz Viotti
3e055b32d2 Update Capitano to v1.2.0 and make use of done callback feature 2015-01-15 10:47:17 -03:00
Juan Cruz Viotti
05812ba442 Implement and make use of errors.handleCallback()
This function is introduced to remove some duplication
2015-01-09 12:22:18 -03:00
Juan Cruz Viotti
41fcedb171 Remove TODO that has been moved to the SDK 2015-01-09 10:46:35 -03:00
Juan Cruz Viotti
d2b0772673 Remove duplication by relying on Capitano's new required option feature 2015-01-08 12:11:10 -03:00
Juan Cruz Viotti
12f46be691 Partially get rid of nested sdk 2015-01-08 09:39:38 -03:00