561 Commits

Author SHA1 Message Date
Juan Cruz Viotti
dcff257f20 Upgrade Electron to v0.37.6 (#350)
* Upgrade Electron to v0.37.6

The main motiviation for such upgrade is that an error manifesting
itself as `Cannot read property 'object' of undefined` on certain Linux
systems was fixed in v0.37.4.

See https://github.com/electron/electron/issues/5229
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Make use of shell module by requiring `shell`

Otherwise we get a strange issue when trying to stub it:

    TypeError: Attempted to wrap undefined property openExternal as function

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-21 10:26:29 -04:00
Juan Cruz Viotti
148b9d15ae Integrate Etcher CLI in the main repository (#352)
This PR integrates the Etcher CLI code-wise, but doesn't yet handles the
distribution part of the story.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-21 10:08:53 -04:00
Juan Cruz Viotti
4d70676612 Distinguish between flash and validation events in Mixpanel (#347)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-20 14:56:58 -04:00
Juan Cruz Viotti
ef82c937d3 v1.0.0-beta.3
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-17 21:24:32 -04:00
Juan Cruz Viotti
9489802834 Upgrade resin-image-write to v3.0.3 (#331)
This new version contains a fix for the `stream.push() after EOF` error
hit when writing unaligned images.

Fixes: https://github.com/resin-io/etcher/issues/307
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-15 17:45:47 -04:00
Juan Cruz Viotti
bd9b4d0a3a Promisify drivelist.list() with angular-q-promisify (#317)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-13 13:57:38 -04:00
Juan Cruz Viotti
3efea5b308 Replace all occurrences of "burn" with "flash" (#300)
Technically, a removable drive is flashed, not burned.

Fixes: https://github.com/resin-io/etcher/issues/297
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-12 12:00:43 -04:00
Juan Cruz Viotti
2b1ef3d980 Move package ignore list computation to a separate script (#285)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-11 12:30:00 -04:00
Juan Cruz Viotti
2e75b7f2bb Upgrade Electron to v0.36.11 (#275)
This version contains a fix for `resizable: false` not working on
GNU/Linux.

See: https://github.com/electron/electron/releases/tag/v0.36.11
Fixes: https://github.com/resin-io/etcher/issues/272
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-10 23:22:51 -04:00
Juan Cruz Viotti
5ccc6b6aa4 Upgrade drivelist to v2.0.13 (#270)
This version contains the following changes:

- Detect Macbook SDCard readers in OS X.
- Detect removable drives better in Windows.
- Keep one decimal in Windows drive size.

Fixes: https://github.com/resin-io/etcher/issues/255
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-10 23:11:12 -04:00
Juan Cruz Viotti
69a6674309 v1.0.0-beta.2
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-07 05:28:37 -04:00
Juan Cruz Viotti
77d9fadc83 Codesign OS X app inside the DMG package
This PR fixes a frequent issue users were having where opening

`Etcher.app` would result in:



    "Etcher.app" is damaged and can't be opened. You should move it to

    the trash.



Checking the code-signature of the application returned the following

error message:



    $ spctl -a -v Etcher.app

    Etcher.app: invalid signature (code or signature have been modified)



The solution is based on the following paragraphs from Apple's "OS X

Code Signing in Depth" technical note:



https://developer.apple.com/library/mac/technotes/tn2206/_index.html



> Code signing uses extended attributes to store signatures in non-Mach-O

> executables such as script files. If the extended attributes are lost

> then the program's identity will be broken. Thus, when you ship your

> script, you must use a mechanism that preserves extended attributes.

>

> One way to guarantee preservation of extended attributes is by packing

> up your signed code in a read-write disk image (DMG) file before signing

> and then, after signing, converting to read-only. You probably don't

> need to use a disk image until the final package stage so another less

> heavy-handed method would be to use ZIP or XIP files.



In summary, what we now do is:



- Create a temporal read-write DMG image.

- Perform the code-signing *inside* the DMG image.

- Convert the temporal DMG image into a compressed read-only image.



Sadly, this custom workflow doesn't fit in `electron-packager` nor

`electron-builder`, so we had to re-implement the features those

packages provide us in a nice encapsulated way ourselves.



Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-07 05:20:52 -04:00
Juan Cruz Viotti
3392a5eca1 Implement write validation support
* Extend ProgressButton to support a striped progress bar

This feature will be used to implement the burn validation step.

* Implement alert-ribbon CSS component

This component will be used to inform an error situation to the user
during the burn/check processes.

* Add "Enable write validation on success" setting

* Implement write validation support

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
Fixes: https://github.com/resin-io/etcher/issues/45
2016-04-06 21:53:35 -04:00
Juan Cruz Viotti
e8516b1727 Fix shell.openExternal() freezing GNU/Linux
Electron's `shell.openExternal()` fails on GNU/Linux when Electron is

ran with `sudo`.  The issue was reported, and this is a workaround until

its fixed on the Electron side.



`node-open` is smart enough to check the `$SUDO_USER` environment

variable and to prepend `sudo -u <user>` if needed.



We keep `shell.openExternal()` for OSes other than Linux since we intend

to fully rely on it when the issue is fixed, and since its closer

integration with the operating system might lead to more accurate

results than a third party NPM module.



See https://github.com/electron/electron/issues/5039

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-06 11:12:46 -04:00
Juan Cruz Viotti
18a1606988 Implement a drive selector modal
This modal provides a more advanced way to select a drive. It prevents
certain issues the dropdown was having, like the contents overflowing
when there were many connected drives.

Fixes: https://github.com/resin-io/etcher/issues/202
2016-03-31 12:18:23 -04:00
Juan Cruz Viotti
a252b3a7e7 v1.0.0-beta.1 2016-03-28 13:26:24 -04:00
Juan Cruz Viotti
cb8da11b89 Add missing package metadata
- Legal copyright.
- Company name.
- File description.
- Original filename.
- Product name.
- Internal name.
2016-03-25 10:10:07 -04:00
Juan Cruz Viotti
53a026eee0 Upgrade drivelist to v2.0.9
This new version contains various fixes to better detect removable
drives.
2016-03-24 13:36:47 -04:00
Juan Cruz Viotti
9e76193c37 Bump version to v1.0.0-beta.0
This is the correct way of adding a pre-release identifier according to
https://github.com/npm/node-semver.
2016-03-10 12:24:29 -04:00
Juan Cruz Viotti
3d7b9d3a31 Upgrade drivelist to v2.0.8
This version omits DMG mounted images by default.

Fixes: https://github.com/resin-io/etcher/issues/193
2016-03-10 09:59:47 -04:00
Juan Cruz Viotti
95eff44af5 Move package.ignore contents to package.json
This allows `Makefile` to require and join the ignore entries easily
with NodeJS instead of relying on `tr` and `sed`.
2016-03-09 09:04:03 -04:00
Juan Cruz Viotti
728524f6e3 Upgrade resin-image-zip to v1.1.2
This version contains a fix to prevent the test suite from crashing.
2016-03-08 15:43:08 -04:00
Juan Cruz Viotti
a5322950da Add support for zip images in select image dialog
The "Select Image" dialog now permits the user selecting zip files. Once
the zip file is selected, `resin-zip-image` scans the archive to ensure
its validity. If its not valid, an error alert is shown and nothing is
selected.
2016-03-07 12:14:05 -04:00
Juan Cruz Viotti
e5ddb2f2cb Make writer.getImageStream() extract images from zip archives 2016-03-07 09:20:58 -04:00
Juan Cruz Viotti
64c27235bf Make use of UI Router 2016-03-01 19:50:25 -04:00
Juan Cruz Viotti
61a1527c7e Implement settings screen 2016-03-01 12:22:03 -04:00
Juan Cruz Viotti
f59b7ecc04 Reformat package.json
We made some manual changes to `package.json` that were not formatted
correctly.

This PR lets `npm` itself reorganize and format the manifest.
2016-03-01 10:45:50 -04:00
Juan Cruz Viotti
4945ba5ef9 Upgrade angular-ui-bootstrap to v1.2.1
There are no breaking changes in the only widget we're using from this
library, `uib-dropdown.`
2016-03-01 10:37:43 -04:00
Juan Cruz Viotti
52c81a5afc Merge pull request #164 from resin-io/upgrade/gulp-jshint
Upgrade gulp-jshint to v2.0.0
2016-03-01 10:31:35 -04:00
Juan Cruz Viotti
98d1c57f61 Upgrade Lodash to v4.5.1
None of the functions we were using suffered from breaking changes.
2016-03-01 10:23:34 -04:00
Juan Cruz Viotti
55e1c33eb1 Upgrade gulp-jshint to v2.0.0
This new version includes `jshint` as a `peerDependency`, meaning we
must manually install it as well.

See https://github.com/spalger/gulp-jshint/blob/master/CHANGELOG.md#20
2016-03-01 10:20:40 -04:00
Juan Cruz Viotti
1c6675ab4f Integrate Mixpanel 2016-02-29 15:52:00 -04:00
Juan Cruz Viotti
1f85fab840 Move display name setting from Makefile to package.json 2016-02-29 14:20:54 -04:00
Juan Cruz Viotti
f4067bacb0 Upgrade Electron to v0.36.8
This version contains a fix to prevent dropping capabilities in renderer
threads.

See https://github.com/atom/electron/issues/3666
Fixes https://github.com/resin-io/etcher/issues/52
2016-02-19 11:01:16 -04:00
Juan Cruz Viotti
0273a167b5 Merge pull request #152 from resin-io/feat/windows-installers
Implement Windows installers
2016-02-09 09:17:28 -04:00
Juan Cruz Viotti
44ce11b338 Implement Windows installers
Partially Fixes: https://github.com/resin-io/etcher/issues/88
2016-02-09 09:12:35 -04:00
Juan Cruz Viotti
c0e8618813 Upgrade sudo-prompt to v2.2.0
This version contains a fix to allow the module to run on `asar`
packages.
2016-02-09 08:55:16 -04:00
Juan Cruz Viotti
feb04f8773 Downgrade sudo-prompt to v1.1.8
Later versions make use of shell commands over the internal contents of
the module causing errors when the application is packaged as an
`asar`.

This issue is being fixed here: https://github.com/jorangreef/sudo-prompt/issues/10
2016-02-08 14:28:49 -04:00
Juan Cruz Viotti
d73700cdd1 Implement OS X installer 2016-02-08 12:38:10 -04:00
Juan Cruz Viotti
f88bb3a31a Rename project to Etcher 2016-01-24 17:40:45 -04:00
Juan Cruz Viotti
d2e3c3106e Install TrackJS from NPM
See https://www.npmjs.com/package/trackjs
2016-01-22 10:48:02 -04:00
Juan Cruz Viotti
7b14b1b4a2 Merge pull request #107 from resin-io/feat/jscs
Integrate JSCS
2016-01-22 10:35:01 -04:00
Juan Cruz Viotti
14c0a60cbc Run jscs as part of gulp lint 2016-01-22 10:25:33 -04:00
Juan Cruz Viotti
dbdbde5b99 Make use of "progress" mocha reporter 2016-01-22 10:19:04 -04:00
Juan Cruz Viotti
efb055eb89 Upgrade Electron to v0.36.4 2016-01-22 09:37:57 -04:00
Juan Cruz Viotti
96bf7f3624 Get rid of Browserify
Electron already exposes `require()` in the renderer process.
2016-01-21 23:57:04 -04:00
Juan Cruz Viotti
5af3cf3fb9 Simplify drive letter / device conditional
The `drivelist` module includes a new property called `name` in `2.0.7`
that resolves to the drive letter (mount point) on Windows, and to the
drive otherwise.
2016-01-11 01:24:52 -04:00
Juan Cruz Viotti
35c3351533 Change license to Apache 2.0 2016-01-03 22:42:44 -04:00
Juan Cruz Viotti
408a3096fc Rename Herostratus to Resin Etcher 2016-01-01 18:07:45 -04:00
Juan Cruz Viotti
328adfe60b Replace windosu with elevator
For some reason, when using `windosu`, the app is elevated three times.
However this only happens when the application is packaged for
distribution.

After a couple of days debugging this issue, we have no clue about
what's going on, but `elevator` seems to work fine.

Fixes: https://github.com/resin-io/herostratus/issues/29
2015-12-17 14:12:59 -04:00