130 Commits

Author SHA1 Message Date
Juan Cruz Viotti
47c50ffe14 chore(GUI): integrate scss-lint (#666)
This PR integrates SCSS Lint, a tool that will help us keep SCSS tidier.
I've included a sensible configuration at `.scss-lint.yml`, and
documentation on how to install it on `CONTRIBUTING.md`.

The tool will run automatically as part of `npm run lint`.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-08-26 15:09:07 -04:00
Juan Cruz Viotti
bf7cedd546 docs(GUI): runtime linux libraries (#655)
This entry documents all the GNU/Linux libraries needed to run Etcher.

Fixes: https://github.com/resin-io/etcher/issues/630
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-08-24 10:28:36 -04:00
Juan Cruz Viotti
da81849d4b refactor: rely on etcher-image-stream to fetch bmap contents (#654)
In order to get the bmap file contents to the Etcher CLI, we were
handling extraction, writing to a temporary file, then reading again,
and all sorts of other mumbo-jumbo, without realising that
`etcher-image-stream` already has this information right where we need
it (in the CLI's writer module) and in the way we need it (as plain
text).

Re-using from there hugely simplifies things.

Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-08-24 10:19:18 -04:00
Juan Cruz Viotti
a5a195e8fb feat: integrate bmap support (#635)
This PR integrates `.bmap` support recently added to
`etcher-image-write` into Etcher itself.

It does it in the following way:

- It adds a `--bmap` option to the Etcher CLI.
- It saves a potential `bmap` file contents to the
  `SelectionStateModel`.
- In the GUI, at the time of writing, if there is a `bmap` file content
  in `SelectionStateModel`, it gets written to a temporary file and such
  path is passed as the `--bmap` option to the CLI.

Since validation checksums don't make sense anymore, the finish screen
doesn't show the checksum box in this case.

Change-Type: minor
Changelog-Entry: Add `.bmap` support.
Fixes: https://github.com/resin-io/etcher/issues/171
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-08-22 09:50:56 -04:00
Juan Cruz Viotti
85676a2e94 refactor(GUI): main controller (#623)
The main page controller contained a lot of undocumented and untested
logic. As a first step towards cleaning up the whole thing, this PR
introduces the following changes:

- Implement `ImageSelectionController`, `DriveSelectionController`, and
  `FlashController` as children of `MainController`. Each of them is
  used by the appropriate main page "steps", and contains logic specific
  to them. The `MainController` hosts functionality that applies to the
  page as a whole.

- Add JSDoc annotations fo every controller function/property.

- Unit test several controller functions.

- Simplify template logic.

The "GUI fifty-thousand foot view" section in ARCHITECTURE.md has been
removed since there is no longer a single place where you can see all
the interactions between components.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-08-05 14:40:51 -04:00
Juan Cruz Viotti
ecd5d5bf5c docs(GUI): running Etcher on Wayland (#624)
This entry roughly documents how to get Etcher running on Wayland by
using the XWayland Server.

Fixes: https://github.com/resin-io/etcher/issues/509
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-08-04 14:03:36 -04:00
Juan Cruz Viotti
0345c2df6e docs: fix non-sense USER-DOCUMENTATION description (#625)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-08-04 13:37:10 -04:00
Juan Cruz Viotti
eef1d51a7a refactor(GUI): extract MainPage from lib/gui/app.js (#607)
`lib/gui/app.js` contains a lot of code that should have been split long
ago. This PR extracts the "main page" logic into an actual page
component in `lib/gui/pages`.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-27 22:22:52 -04:00
Juan Cruz Viotti
31e02f64b8 chore: integrate versionist (#594)
Versionist is a small utility to automatically generate CHANGELOGs based
on a certain commit convention.

This PR adds a new `changelog` npm script that calls Versionist to
preppend a new CHANGELOG entry based on our current structure.

Dealing with links to changes between versions in GitHub is hard to
automatise with a tool like Versionist. We chose to get rid of such
links since they are a nice to have, but don't provide any meaningful
value to maintainers, since they can manually see the diffs with `git
diff`.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-24 23:09:56 -04:00
Juan Cruz Viotti
f02202c244 chore: get rid of gulp (#593)
The only thing we were still using gulp for was compiling SCSS.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-24 17:32:50 -04:00
Juan Cruz Viotti
7a5dd092da docs: fix error on the upgrading a dependency guide at CONTRIBUTING.md (#592)
One of the steps incorrectly says "Re-install the dependencies. This
will update the `npm-shrinkwrap.json` file". The intention was to say
that you should `npm install` the *new* dependency, and that will update
the `npm-shrinkwrap.json` file.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-24 17:27:35 -04:00
Juan Cruz Viotti
d2a8739904 docs: upgrade an npm dependency and handling shrinkwrap correctly (#586)
This small entry explains how to upgrade a dependency and ensure
`npm-shrinkwrap.json` is updated correctly.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-21 18:27:09 -04:00
Juan Cruz Viotti
d1c0fdb2b3 docs: ubuntu iso's hybrid format and parted warnings (#585)
Document that `parted` warnings about invalid GPT and physical block
size issues can be safely ignored as they are a consequence of "hybrid
iso's".

Fixes: https://github.com/resin-io/etcher/issues/312
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-20 11:33:20 -04:00
Juan Cruz Viotti
ef96ae86a0 chore: stop requiring a specific nodejs version to build Etcher (#584)
We were previously requiring users to run the exact same NodeJS version as
Electron bundled in order to avoid native add-on compilation incompatibilities,
however this problem is completely mitigated by configuring NPM to build
against an Electron specific V8.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-19 22:28:41 -04:00
Juan Cruz Viotti
9c3cb6c51e docs: explicitly list all dependencies in CONTRIBUTING.md (#583)
The dependencies are checked for in the build scripts, but for the user
convenience, we should also list them explicitly in the `CONTRIBUTING.md`
guide.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-19 22:10:57 -04:00
Juan Cruz Viotti
6348d88c95 chore: add commands to build scripts (#566)
Currently build scripts install dependencies and package everything on
every run. In order to allow more customisation, the build scripts now
accept the following commands:

- `install`: Only install dependencies.
- `package`: Only package the application.
- `all`: Install dependencies and package the application.

The above differentiation allows us to improve the documentation and CI
configuration files to point to the `install` commands instead of having
to explain how to configure NPM correctly, since that's done by the
build scripts by default.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-12 10:15:21 -04:00
Juan Cruz Viotti
e79c03a070 docs(GUI): deactivate desktop shortcut Linux prompt (#563)
Document how to globally disable AppImage's desktop integration feature,
which promtps the user to create a desktop shortcut for the appliation
at startup.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-08 17:55:33 -04:00
Juan Cruz Viotti
4482bb0eeb chore: normalize documentation (#562)
- Make sure we use the same tile style.
- Make sure we wrap lines in the same way.
- Use hyphens as file name separators.
- Move links to the bottom of the docs.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-08 10:40:54 -04:00
Juan Cruz Viotti
3e01c62367 docs: commit guidelines (#542)
This document will serve as a more expanded guide on the commit
conventions we are going to be introducing in this project mainly for
the purpose of `CHANGELOG.md` generation.

See: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-07 11:35:05 -04:00
Juan Cruz Viotti
a93c28ab20 docs(CLI.md): write the CLI.md document (#511)
This document explains what the Etcher CLI is, how can be used, and some
peculiarities, like `--robot` and exit codes.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-22 17:06:06 -04:00
Juan Cruz Viotti
24f442a8fc docs(MAINTAINERS.md): steps to upgrade electron (#501)
This PR documents the process to upgrade the Electron version correctly,
in order to prevent any potential compatibility issue when building
native dependencies.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-22 10:40:45 -04:00
Juan Cruz Viotti
95deab0b0d Get rid of application-wide elevation (#423)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-20 21:49:16 -04:00
Juan Cruz Viotti
5eb330d0dc docs: document how to update the shrinkwrap file (#495)
We will be generating shrinkwrap files in every release for the
following purposes:

- Be able to run an `npm install` containing the exact package versions
used at the time of publishing.

- Auto-generate dependency updates CHANGELOG entries by comparing
shrinkwrap files between versions.

See: https://docs.npmjs.com/cli/shrinkwrap
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-20 12:23:53 -04:00
Juan Cruz Viotti
33eb0637b2 chore: configure commitizen (#494)
Etcher will start following Angular's commit guidelines, enforced by a
neat tool called `commitizer`, with the main purpose of being able to
auto-generate the CHANGELOG file.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-20 12:08:29 -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
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
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
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
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