3144 Commits

Author SHA1 Message Date
Juan Cruz Viotti
7d5f42f38c Try to get more information about error messages (#464)
If the error object is not well-formed, try to get as most information
about it as we can instead of just realying on generic error messages.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-08 15:49:42 -04:00
Juan Cruz Viotti
f2a8860135 Fix package.json key/property spacing (#461)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-08 13:36:00 -04:00
Juan Cruz Viotti
8de4be1897 Display ETA during flash and check (#460)
* Show speed during check

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Display ETA during flash and check

Fixes: https://github.com/resin-io/etcher/issues/256
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-08 13:35:44 -04:00
Juan Cruz Viotti
ef82c2f09b Update Appveyor badge (#457)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-08 13:19:11 -04:00
Juan Cruz Viotti
0c94de7fcf Prevent exernal resources from being loaded by the WebView (#456)
If a user drags and drops an image, an HTML file, or other resource the
WebView understands, Electron will navigate away from the application
and load it up in the WebView, making the application unusable unless
the user restarts it.

Fixes: https://github.com/resin-io/etcher/issues/430
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-08 11:10:46 -04:00
Juan Cruz Viotti
6c936a5192 Document can-ignore module.require annotation (#455)
* Document `can-ignore` module.require annotation

This annotation was introduced in: 1872d1f

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Trigger CI build
2016-06-08 11:10:32 -04:00
Igor Klopov
a27e246cc9 Annotation for EncloseJS to ignore missing dependency (#454) 2016-06-07 14:52:51 -04:00
Juan Cruz Viotti
11fb499344 Upgrade drivelist to v3.1.2 (#450)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-07 10:56:36 -04:00
Juan Cruz Viotti
052bb00be9 Fix CI tests (#452)
- Fix lint warning.
- Set the correct electron version in `appveyor.yml`

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-06 18:12:38 -04:00
Juan Cruz Viotti
dd6182ceb3 Write a document explaining Etcher's architecture (#447)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-06 17:52:18 -04:00
Juan Cruz Viotti
31728801f5 Don't show a progress bar in update notifier modal (#445)
Fixes: https://github.com/resin-io/etcher/issues/442
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-26 21:18:13 -04:00
Juan Cruz Viotti
b14e94fc3b Fix GNU/Linux not opening an external resource when elevated (#446)
We currently had a workaround in place to make use of `node-open`
instead of Electron's built-in `shell` module since the latter didn't
work on older Electron versions on GNU/Linux for some reason.

After some experimentation, `node-open` doesn't seem to be working for
elevated applications anymore. I honestly didn't chase the issue further
since Electron `shell` has been fixed, and works fine when elevated,
therefore this PR basically undoes the previous workaround.

Fixes: https://github.com/resin-io/etcher/issues/443
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-26 21:18:03 -04:00
Juan Cruz Viotti
28e6cb3f79 Create docs/MAINTAINERS.md (#441)
This document will evolve as a guide for maintainers to perform all
sorts of common tasks.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-26 16:13:50 -04:00
Juan Cruz Viotti
94bd796daa v1.0.0-beta.7
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
v1.0.0-beta.7
2016-05-26 10:12:04 -04:00
Juan Cruz Viotti
efe931cae5 Upgrade drivelist to v3.1.1 (#438)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-26 10:09:53 -04:00
Juan Cruz Viotti
bedda41843 Provide a GUI elevation dialog for GNU/Linux (#440)
Fixes: https://github.com/resin-io/etcher/issues/439
Fixes: https://github.com/resin-io/etcher/issues/412
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-26 10:04:23 -04:00
Juan Cruz Viotti
e9164df384 Install NPM dev dependencies during the build (#437)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-24 15:35:56 -04:00
Juan Cruz Viotti
7d0ea21567 Run linter as part of npm test (#436)
* Fix lint warnings

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Run linter as part of `npm test`

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-24 15:35:51 -04:00
Juan Cruz Viotti
abb7dc6469 Prevent pressing "space" to re-click the "Flash" button (#435)
Currently we disable pointer events on the "Flash" button once a flash
is in progress to prevent the user from clicking it, but we didn't
consider that if the user kept focus on the button, he can press the
"space" bar for the same effect.

Fixes: https://github.com/resin-io/etcher/issues/431
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-24 14:21:31 -04:00
Juan Cruz Viotti
c8edafdad8 Upgrade CI servers NodeJS version (#434)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-24 14:21:23 -04:00
Juan Cruz Viotti
6af2bd0d30 Prevent global shorcuts from interferring with other applications (#433)
Fixes: https://github.com/resin-io/etcher/issues/389
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-24 12:40:25 -04:00
Juan Cruz Viotti
2948d13075 Fix image drag and drop not working anymore (#432)
There has been changes in the model regarding with how the image
information was stored, and the dropzone directive was never modified to
comply with those changes.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-24 11:52:50 -04:00
Juan Cruz Viotti
3b30748b1f Add support for .gz and .bz2 (#419)
See: https://github.com/resin-io/etcher/issues/325
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-24 10:38:12 -04:00
Juan Cruz Viotti
c1074de198 Upgrade electron to v1.1.1 (#427)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-24 10:37:31 -04:00
Juan Cruz Viotti
d9f6c1b838 Add instructions to configure NPM for installation (#429)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-24 10:37:12 -04:00
Juan Cruz Viotti
f4d9de850c Fix indentation in build scripts (#428)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-23 14:27:03 -04:00
Juan Cruz Viotti
94e209ac80 Install dev dependencies before calling electron-builder on Windows (#426)
Since the addition of a patch to only install production dependencies on
build scripts, the Windows build would fail when reaching to
`electron-builder`, since this dependency might not be installed at that
point.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-22 22:45:06 -04:00
Juan Cruz Viotti
9c755fbb53 Override files if needed in the build scripts (#425)
This allows the users to continuously run the build script without
having to remove `etcher-release` or certain files inside that directory
to prevent silly "file exists" errors.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-22 22:44:59 -04:00
Juan Cruz Viotti
78fc028ae0 Only install production dependencies from build scripts (#424)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-22 21:43:27 -04:00
Juan Cruz Viotti
b061c116da Enforce expected NodeJS version in build scripts (#422)
Not building Etcher with the exact NodeJS version bundled with Electron
can cause all sorts of weird issues. This was previously documented, but
its now enforced so Etcher packagers don't forget by accident.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-20 10:51:09 -04:00
Juan Cruz Viotti
e1a3c88b10 Display image checksum on success in the CLI (#417)
* Upgrade etcher-image-write to v5.0.0

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Display image CRC32 checksum on success

Fixes: http://github.com/resin-io/etcher/issues/357
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-19 10:13:10 -04:00
Alexandros Marinos
198d24741a make inbound links from the etcher app traceable in resin's analytics (#411) 2016-05-15 21:33:59 -04:00
Juan Cruz Viotti
35f42665d2 Call packageignore.js after depencies have been installed in Windows (#409)
Otherwise, dependencies used by `packageignore.js`, like Lodash, could
not be found.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-13 17:54:43 -04:00
Juan Cruz Viotti
15752b2efb v1.0.0-beta.6
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
v1.0.0-beta.6
2016-05-12 17:14:19 -04:00
Juan Cruz Viotti
bf37ee72df Prevent selection of drives that are not large enough (#408)
* Make .selectImage() dialog return an object with a `path` property

This allows to return more than one value for the selected image,
like image size and other metadata for example.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Return image size from .selectImage() dialog

This property will be useful to perform some sanity checks, like
ensuring the selected drive is large enough to contain the image.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Store both the image path and the image size in the selection model

In order to simplify accessing such properties in an encapsulated
manner, `SelectionStateModel.getImage()` was replaced with the following
functions:

- `SelectionStateModel.getImagePath()`.
- `SelectionStateModel.getImageSize()`.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Increase SelectionStateModel setter validation

The model not providing any kind of validation was the source of some
bugs I encountered while implementing the previous commits that would
not have happened otherwise.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Prevent selection of drives that are not large enough

- The drive selector modal was modified such that drives that are not
large enough are crossed out, and the user is not able to click them.

- In the case of drive auto-selection, not large enough drives won't
attempt to get autoselected.

This commit introduces:

- The `SelectionStateModel.isDriveLargeEnough()` function.

Fixes: https://github.com/resin-io/etcher/issues/344
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-12 15:38:19 -04:00
Juan Cruz Viotti
c31ccdbdbe Move the code that performs the writing to lib/cli (#407)
The CLI is the only entity that calls it directly.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-12 15:16:15 -04:00
Juan Cruz Viotti
a4e2639c00 Implement update notifier modal (#406)
Auto-update functionality is not ready for usage. As a workaround to
prevent users staying with older versions, we now check for updates at
startup, and if the user is not running the latest version, we present a
modal informing the user of the availiblity of a new version, and
provide a call to action to open the Etcher website in his web browser.

Extra features:

- The user can skip the update, and tell the program to delay the
notification for 7 days.

Misc changes:

- Center modal with flexbox, to allow more flexibility on the modal height.
interacting with the S3 server.
- Implement `ManifestBindService`, which now serves as a backend for the
`manifest-bind` directive to allow the directive's functionality to be
re-used by other services.
- Namespace checkbox styles that are specific to the settings page.

Fixes: https://github.com/resin-io/etcher/issues/396
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-12 13:11:30 -04:00
Juan Cruz Viotti
662c589ab9 Implement writing by spawning the CLI as a child process (#400)
After this change, the CLI becomes the only entity actually performing
I/O with the devices, and the GUI is just a wrapper around it.

When you click "Flash", the GUI spawns the CLI with all the appropriate
options, including `--ipc`, which uses an IPC communication channel to
report status back to the parent process.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-11 17:52:09 -04:00
Juan Cruz Viotti
f365f2fa57 Group documentation in a docs/ directory (#405)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-11 12:46:27 -04:00
Juan Cruz Viotti
883cae0d87 Remove implicit "Enable" from settings items (#404)
The fact that there is a checkbox at the left of the items already makes
clear the ticking them enables the setting.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-11 09:25:36 -04:00
Juan Cruz Viotti
9c555fd1c9 Set mocha reporter to min (#403)
Fancier reporters are not shown correctly on CI servers.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-10 16:10:05 -04:00
Juan Cruz Viotti
d36509d995 Implement cross-platform build scripts (#395)
With the addition of native addons to Etcher, its no longer possible to
package the application for all operating system in a single host.

Given we need to build on Windows, we're creating cross-platform bash
and batch scripts and deprecating the original Makefile.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-10 16:07:18 -04:00
Juan Cruz Viotti
52a77160e3 Make sure bower dependencies are installed in CI servers (#399)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-10 15:44:06 -04:00
Juan Cruz Viotti
aa4beaab4d Consider carriage returns when asserting SVG contents equality (#398)
This was causing builds to fail in Windows.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-10 15:05:32 -04:00
Juan Cruz Viotti
e0416cf2dc Refactor how application selection is accessed from DriveSelectorModal (#397)
* Refactor SelectionStateModel.isCurrentDrive() to only check `.device`

This set of changes modify `SelectionStateModel.isCurrentDrive()` to
only return true if the `.device` property is equal, and ignore the
rest, since there can be tons of false positives if the drive doesn't
exactly matches otherwise.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Implement SelectionStateModel.toggleSetDrive()

This function is useful to toggle the current drive selected based on a
drive object.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Make use of SelectionStateModel directly in DriveSelectorModal

Currently, we were basically proxying (with some additions)
`SelectionStateModel` through a service called
`DriveSelectorStateService`, which was completely unnecessary.

Now, we make use of `SelectionStateModel`, after moving any custom logic
from `DriveSelectorStateService` to `SelectionStateModel`.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-10 15:05:25 -04:00
Juan Cruz Viotti
c508f341f7 Point NPM to electron in Appveyor to avoid compilation issues (#402)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-10 14:42:07 -04:00
Juan Cruz Viotti
6e3f17fd7a Show electron output in Appveyor (#401)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-10 14:19:06 -04:00
Juan Cruz Viotti
e4024bfe66 v1.0.0-beta.5
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
v1.0.0-beta.5
2016-05-04 02:12:25 -04:00
Juan Cruz Viotti
cb4798e0a5 Add support for XZ compressed images (#376)
This PR introduces `etcher-image-stream`:

https://github.com/resin-io-modules/etcher-image-stream

a module that will handle support for decompression, URL streaming, and
any other way to get a source of data to write in Etcher.

Most of the changes in this PR are because XZ decompression includes a
native dependency (no pure JS implementations out there for now), so we
had to tweak various things for the dependency to work correctly on
Etcher/Electron.

See: https://github.com/resin-io/etcher/issues/325
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-04 02:07:43 -04:00
Juan Cruz Viotti
5575cb1af8 Revert "Implement writing by spawning the CLI as a child process (#385)" (#394)
This reverts commit fab2d767b0ae6b0401b428910096af236897973d.
2016-05-04 01:57:26 -04:00