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>
This commit is contained in:
Juan Cruz Viotti 2016-07-08 10:40:54 -04:00 committed by GitHub
parent fa9966a2b1
commit 4482bb0eeb
7 changed files with 245 additions and 87 deletions

View File

@ -3,7 +3,10 @@ Etcher
> Flash OS images to SD cards & USB drives, safe & easy.
Etcher is a powerful OS image flasher built with web technologies to ensure flashing an SDCard or USB drive is pleasant and safe experience. It protects you from accidentally writing to your hard-drives, ensures every byte of data was written correctly and much more.
Etcher is a powerful OS image flasher built with web technologies to ensure
flashing an SDCard or USB drive is pleasant and safe experience. It protects
you from accidentally writing to your hard-drives, ensures every byte of data
was written correctly and much more.
[![dependencies](https://david-dm.org/resin-io/etcher.svg)](https://david-dm.org/resin-io/etcher.svg)
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
@ -14,21 +17,32 @@ Etcher is a powerful OS image flasher built with web technologies to ensure flas
***
[**Download**](http://etcher.io) | [**Support**](https://github.com/resin-io/etcher/blob/master/SUPPORT.md) | [**Contributing**](https://github.com/resin-io/etcher/blob/master/docs/CONTRIBUTING.md) | [**Roadmap**](https://github.com/resin-io/etcher/milestones) | [**CLI**](https://github.com/resin-io/etcher-cli)
[**Download**][etcher] | [**Support**][SUPPORT] | [**Contributing**][CONTRIBUTING] | [**Roadmap**][milestones] | [**CLI**][CLI]
![Etcher](https://raw.githubusercontent.com/resin-io/etcher/master/screenshot.png)
Installers
----------
Refer to the [downloads page](http://etcher.io) for the latest pre-made installers for all supported operating systems.
Refer to the [downloads page][etcher] for the latest pre-made
installers for all supported operating systems.
Support
-------
If you're having any problem, please [raise an issue](https://github.com/resin-io/etcher/issues/new) on GitHub and the Resin.io team will be happy to help.
If you're having any problem, please [raise an issue][newissue] on GitHub and
the Resin.io team will be happy to help.
License
-------
Etcher is free software, and may be redistributed under the terms specified in the [license](https://github.com/resin-io/etcher/blob/master/LICENSE).
Etcher is free software, and may be redistributed under the terms specified in
the [license].
[etcher]: http://etcher.io
[SUPPORT]: https://github.com/resin-io/etcher/blob/master/SUPPORT.md
[CONTRIBUTING]: https://github.com/resin-io/etcher/blob/master/docs/CONTRIBUTING.md
[CLI]: https://github.com/resin-io/etcher/blob/master/docs/CLI.md
[milestones]: https://github.com/resin-io/etcher/milestones
[newissue]: https://github.com/resin-io/etcher/issues/new
[license]: https://github.com/resin-io/etcher/blob/master/LICENSE

View File

@ -1,63 +1,113 @@
Etcher Architecture
===================
This document aims to serve as a high-level overview of how Etcher works, specially oriented for contributors who want to understand the big picture.
This document aims to serve as a high-level overview of how Etcher works,
specially oriented for contributors who want to understand the big picture.
Module architecture
-------------------
Instead of embedding all the functionality required to create a full-featured image writer as a monolithic project, we try to hard to follow the ["lego block approach"](https://github.com/sindresorhus/ama/issues/10#issuecomment-117766328).
Instead of embedding all the functionality required to create a full-featured
image writer as a monolithic project, we try to hard to follow the ["lego block
approach"][lego-blocks].
This has the advantage of allowing other applications to re-use logic we implemented for Etcher in their own project, even for things we didn't expect, which leads to users benefitting from what we've built, and we benefitting from user's bug reports, suggestions, etc, as an indirect way to make Etcher better.
This has the advantage of allowing other applications to re-use logic we
implemented for Etcher in their own project, even for things we didn't expect,
which leads to users benefitting from what we've built, and we benefitting from
user's bug reports, suggestions, etc, as an indirect way to make Etcher better.
The fact that low-level details are scattered around many different modules can make it challenging for a new contributor to wrap their heads around the project as a whole, and get a clear high level view of how things work or where to submit their work or bug reports.
The fact that low-level details are scattered around many different modules can
make it challenging for a new contributor to wrap their heads around the
project as a whole, and get a clear high level view of how things work or where
to submit their work or bug reports.
These are the main Etcher components, in a nutshell:
- [Etcher Image Write](https://github.com/resin-io-modules/etcher-image-write)
- [Etcher Image Write][etcher-image-write]
This is the repository that implements the actual procedures to write an image to a raw device and the place where image validation resides. Its main purpose is to abstract the messy details of interacting with raw devices in all major operating systems.
This is the repository that implements the actual procedures to write an image
to a raw device and the place where image validation resides. Its main purpose
is to abstract the messy details of interacting with raw devices in all major
operating systems.
- [Etcher Image Stream](https://github.com/resin-io-modules/etcher-image-stream)
The goal of this project is to convert any kind if input into a readable stream representing the image so it can be plugged to [etcher-image-write](https://github.com/resin-io-modules/etcher-image-write). Inputs that this module might handle could be, for example: a simple image file, a URL to an image, a compressed image, an image inside a ZIP archive, etc. Together with [etcher-image-write](https://github.com/resin-io-modules/etcher-image-write), these modules are the building blocks needed to take an image representation to the user's device, the "Etcher's backend".
The goal of this project is to convert any kind if input into a readable stream
representing the image so it can be plugged to [etcher-image-write]. Inputs
that this module might handle could be, for example: a simple image file, a URL
to an image, a compressed image, an image inside a ZIP archive, etc. Together
with [etcher-image-write], these modules are the building blocks needed to take
an image representation to the user's device, the "Etcher's backend".
- [Drivelist](https://github.com/resin-io-modules/drivelist)
As the name implies, this module's duty is to detect the connected drives uniformly in all major operating systems, along with valuable metadata, like if a drive is removable or not, to prevent users from trying to write an image to a system drive.
As the name implies, this module's duty is to detect the connected drives
uniformly in all major operating systems, along with valuable metadata, like if
a drive is removable or not, to prevent users from trying to write an image to
a system drive.
- [Etcher](https://github.com/resin-io/etcher)
This is the *"main repository"*, from which you're reading this from, which is basically the front-end and glue for all previously listed projects.
This is the *"main repository"*, from which you're reading this from, which is
basically the front-end and glue for all previously listed projects.
Front-ends
----------
The main repository consists of the implementation of the Etcher CLI and the Etcher GUI (the desktop application), located at [`lib/cli/`](https://github.com/resin-io/etcher/tree/master/lib/cli) and [`lib/gui/`](https://github.com/resin-io/etcher/tree/master/lib/gui), respectively.
The main repository consists of the implementation of the Etcher CLI and the
Etcher GUI (the desktop application), located at [`lib/cli/`][cli-dir] and
[`lib/gui/`][gui-dir], respectively.
In fact, the only front-end that interacts directly with Etcher's backend is the CLI. The GUI merely forks the CLI and communicates with its child process to get state information.
In fact, the only front-end that interacts directly with Etcher's backend is
the CLI. The GUI merely forks the CLI and communicates with its child process
to get state information.
In this sense, you can consider the GUI as being the front-end to the CLI, which is in turn the front-end to the actual image writing functionality.
In this sense, you can consider the GUI as being the front-end to the CLI,
which is in turn the front-end to the actual image writing functionality.
As a way to simplify how the GUI forks the CLI in a packaged and distributed context, both the CLI and GUI share the same application entry point. This means that the same Etcher binary can behave as CLI or GUI as needed.
As a way to simplify how the GUI forks the CLI in a packaged and distributed
context, both the CLI and GUI share the same application entry point. This
means that the same Etcher binary can behave as CLI or GUI as needed.
## Process communication
As mentioned before, the Etcher GUI forks the CLI and retrieves information from it to update its state. In order to accomplish this, the Etcher CLI contains certain features to ease communication:
As mentioned before, the Etcher GUI forks the CLI and retrieves information
from it to update its state. In order to accomplish this, the Etcher CLI
contains certain features to ease communication:
- [Well-documented exit codes.](https://github.com/resin-io/etcher/blob/master/lib/src/exit-codes.js)
- A `--robot` option, which causes the Etcher CLI to output state in a way that can be easily machine-parsed.
- [Well-documented exit codes.][exit-codes]
- A `--robot` option, which causes the Etcher CLI to output state in a way that
can be easily machine-parsed.
GUI fifty-thousand foot view
----------------------------
Given the event oriented nature of desktop applications, it can be hard to follow what's going on without getting deep in the details.
Given the event oriented nature of desktop applications, it can be hard to
follow what's going on without getting deep in the details.
To mitigate this, we try to encapsulate functionality with nice and straightforward interfaces as AngularJS modules, and provide a single place where all the modules are tied together.
To mitigate this, we try to encapsulate functionality with nice and
straightforward interfaces as AngularJS modules, and provide a single place
where all the modules are tied together.
Therefore, if you want to get a rough idea of how the GUI works, the perfect place to start is [application controller](https://github.com/resin-io/etcher/blob/master/lib/gui/app.js) and the [main view](https://github.com/resin-io/etcher/blob/master/lib/gui/partials/main.html), and diving into specific modules depending on your interests.
Therefore, if you want to get a rough idea of how the GUI works, the perfect
place to start is [application controller][appcontroller] and the [main
view][mainview], and diving into specific modules depending on your interests.
Summary
-------
We always welcome contributions to Etcher as well as our documentation. If you want to give back, but feel that your knowledge on how Etcher works is not enough to tackle a bug report or feature request, use that as your advantage, since fresh eyes could help unveil things that we take for granted, but should be documented instead!
We always welcome contributions to Etcher as well as our documentation. If you
want to give back, but feel that your knowledge on how Etcher works is not
enough to tackle a bug report or feature request, use that as your advantage,
since fresh eyes could help unveil things that we take for granted, but should
be documented instead!
[lego-blocks]: https://github.com/sindresorhus/ama/issues/10#issuecomment-117766328
[etcher-image-write]: https://github.com/resin-io-modules/etcher-image-write
[exit-codes]: https://github.com/resin-io/etcher/blob/master/lib/src/exit-codes.js
[appcontroller]: https://github.com/resin-io/etcher/blob/master/lib/gui/app.js
[mainview]: https://github.com/resin-io/etcher/blob/master/lib/gui/partials/main.html
[cli-dir]: https://github.com/resin-io/etcher/tree/master/lib/cli
[gui-dir]: https://github.com/resin-io/etcher/tree/master/lib/gui

View File

@ -1,14 +1,18 @@
Etcher CLI
==========
The Etcher CLI is a command-line tool that aims to provide all the benefits of the Etcher desktop application in a way that can be ran from a terminal, or even used from a script.
The Etcher CLI is a command-line tool that aims to provide all the benefits of
the Etcher desktop application in a way that can be ran from a terminal, or
even used from a script.
In fact, the Etcher desktop application is simply a wrapper around the CLI, which the place where the actual writing logic takes place.
In fact, the Etcher desktop application is simply a wrapper around the CLI,
which the place where the actual writing logic takes place.
Running
-------
We are not oficially releasing the Etcher CLI as a separate package yet, but you can run it locally with the following steps:
We are not oficially releasing the Etcher CLI as a separate package yet, but
you can run it locally with the following steps:
- Clone the Etcher repository.
@ -16,7 +20,8 @@ We are not oficially releasing the Etcher CLI as a separate package yet, but you
git clone https://github.com/resin-io/etcher
```
- Install the dependencies, using the instructions from [`CONTRIBUTING.md`](https://github.com/resin-io/etcher/blob/master/docs/CONTRIBUTING.md).
- Install the dependencies, using the instructions from
[`CONTRIBUTING.md`][CONTRIBUTING].
- Run the Etcher CLI from `bin/etcher`.
@ -41,9 +46,13 @@ Options
The robot option
----------------
The `--robot` option is very particular since it allows other applications to easily consume the output of the Etcher CLI in real-time. When using the `--robot` option, the `--yes` option is implicit, therefore you need to manually specify `--drive`.
The `--robot` option is very particular since it allows other applications to
easily consume the output of the Etcher CLI in real-time. When using the
`--robot` option, the `--yes` option is implicit, therefore you need to
manually specify `--drive`.
When `--robot` is used, the program will output JSON lines containing the progress state and other useful information. For example:
When `--robot` is used, the program will output JSON lines containing the
progress state and other useful information. For example:
```
$ sudo etcher image.iso --robot --drive /dev/disk2
@ -53,9 +62,15 @@ $ sudo etcher image.iso --robot --drive /dev/disk2
{"command":"done","data":{"passedValidation":true,"sourceChecksum":"27c39a5d"}}
```
The `command` property can be used to determine the action taking place, while the `data` property contains extra information related to the command.
The `command` property can be used to determine the action taking place, while
the `data` property contains extra information related to the command.
Exit codes
----------
The Etcher CLI uses certain exit codes to signal the result of the operation. These are documented in [`lib/src/exit-codes.js`](https://github.com/resin-io/etcher/blob/master/lib/src/exit-codes.js) and are also printed on the Etcher CLI help page.
The Etcher CLI uses certain exit codes to signal the result of the operation.
These are documented in [`lib/src/exit-codes.js`][exit-codes] and are also
printed on the Etcher CLI help page.
[CONTRIBUTING]: https://github.com/resin-io/etcher/blob/master/docs/CONTRIBUTING.md
[exit-codes]: https://github.com/resin-io/etcher/blob/master/lib/src/exit-codes.js

View File

@ -12,7 +12,8 @@ over the commit history.
- Be able to automatically reference relevant changes from a dependency
upgrade.
The guidelines are inspired by the [AngularJS git commit guidelines][angular-commit-guidelines].
The guidelines are inspired by the [AngularJS git commit
guidelines][angular-commit-guidelines].
Commit structure
----------------
@ -40,7 +41,8 @@ Must be one of the following:
- `fix`: A bug fix.
- `minifix`: A minimal fix that doesn't warrant an entry in the CHANGELOG.
- `docs`: Documentation only changes.
- `style`: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc).
- `style`: Changes that do not affect the meaning of the code (white-space,
formatting, missing semi-colons, etc).
- `refactor`: A code change that neither fixes a bug nor adds a feature.
- `perf`: A code change that improves performance.
- `test`: Adding missing tests.

View File

@ -1,22 +1,30 @@
# Contributing guide
Contributing Guide
==================
Thanks for your interest in contributing to this project! This document aims to serve as a friendly guide for making your first contribution.
Thanks for your interest in contributing to this project! This document aims to
serve as a friendly guide for making your first contribution.
## High-level Etcher overview
High-level Etcher overview
--------------------------
Make sure you checkout our [ARCHITECTURE.md](https://github.com/resin-io/etcher/blob/master/docs/ARCHITECTURE.md) guide, which aims to explain how all the pieces fit together.
Make sure you checkout our [ARCHITECTURE.md][ARCHITECTURE] guide, which aims to
explain how all the pieces fit together.
## Prerequisites
Prerequisites
-------------
- [NodeJS](https://nodejs.org).
- [Bower](http://bower.io).
- [Gulp](http://gulpjs.com).
## Running locally
Running locally
---------------
- Install [NodeJS](https://nodejs.org/en/).
Sadly we need to enforce the same NodeJS version that the Electron version we use is running to avoid module version mismatches when building native dependencies (`electron-rebuild` doesn't seem to be enough).
Sadly we need to enforce the same NodeJS version that the Electron version we
use is running to avoid module version mismatches when building native
dependencies (`electron-rebuild` doesn't seem to be enough).
- Clone the repository.
@ -43,7 +51,8 @@ set npm_config_target=<ELECTRON_VERSION>
set npm_config_runtime=electron
```
You can find the appropriate electron version in the `devDependencies['electron-prebuilt']` field in `package.json`.
You can find the appropriate electron version in the
`devDependencies['electron-prebuilt']` field in `package.json`.
- Install dependencies.
@ -64,66 +73,104 @@ npm start
node bin/etcher
```
## Developing
Developing
----------
We rely on [gulp](http://gulpjs.com) to provide an automated developing workflow in which your changes will automatically be detected and the necessary resources will be rebuilt for you.
We rely on [gulp] to provide an automated developing workflow in which your
changes will automatically be detected and the necessary resources will be
rebuilt for you.
First make sure you have [gulp](http://gulpjs.com) installed as a global dependency:
First make sure you have [gulp] installed as a global dependency:
``` shell
```sh
$ npm install -g gulp
```
Run the `watch` task to initialise the build system. We encourage to have this command running in the background all the time as you develop, and check the output from time to time, since it'll let you know of any issues and/or warnings in your changes:
Run the `watch` task to initialise the build system. We encourage to have this
command running in the background all the time as you develop, and check the
output from time to time, since it'll let you know of any issues and/or
warnings in your changes:
``` javascript
```js
$ gulp watch
```
We make use of [EditorConfig](http://editorconfig.org) to communicate indentation, line endings and other text editing default. We encourage you to install the relevant plugin in your text editor of choice to avoid having to fix any issues during the review process.
We make use of [EditorConfig] to communicate indentation, line endings and
other text editing default. We encourage you to install the relevant plugin in
your text editor of choice to avoid having to fix any issues during the review
process.
## Testing
Testing
-------
We include a test suite that covers both the code running in the main process and in the rendered process.
In order to avoid inaccurate results, the test suites run in a real Electron instance each in the respective process. This means that running the test suite is not a cheap operation and therefore we decided to not run it by default in the `watch` gulp task to not disrupt the user development workflow.
In order to avoid inaccurate results, the test suites run in a real Electron
instance each in the respective process. This means that running the test suite
is not a cheap operation and therefore we decided to not run it by default in
the `watch` gulp task to not disrupt the user development workflow.
To run the test suite, run the following command:
``` shell
```sh
npm test
```
Given the nature of this application, not everything can be unit tested. For example:
Given the nature of this application, not everything can be unit tested. For
example:
- The writing operating on real raw devices.
- Platform inconsistencies.
- Style changes.
- Artwork.
We encourage our contributors to test the application on as many operating systems as they can before sending a pull request.
We encourage our contributors to test the application on as many operating
systems as they can before sending a pull request.
*The test suite is run automatically by CI servers when you send a pull request.*
*The test suite is run automatically by CI servers when you send a pull
request.*
## Sending a pull request
Sending a pull request
----------------------
We make use of [commitizen](https://commitizen.github.io/cz-cli/#making-your-repo-commitizen-friendly) to ensure certain commit conventions, since they will be used to auto-generate the CHANGELOG. The project already includes all necessary configuration, so you only have to install the commitizen cli tool (`npm install -g commitizen`) and commit by executing `git cz`, which will drive you through an interactive wizard to make sure your commit is perfectly crafted according to our guidelines.
We make use of [commitizen] to ensure certain commit conventions, since they
will be used to auto-generate the CHANGELOG. The project already includes all
necessary configuration, so you only have to install the commitizen cli tool
(`npm install -g commitizen`) and commit by executing `git cz`, which will
drive you through an interactive wizard to make sure your commit is perfectly
crafted according to our guidelines.
When sending a pull request, consider the following guidelines:
- Write a concise commit message explaining your changes.
- If applies, write more descriptive information in the commit body.
- Mention the operating systems with the corresponding versions in which you tested your changes.
- If your change affects the visuals of the application, consider attaching a screenshot.
- Refer to the issue/s your pull request fixes, so they're closed automatically when your pull request is merged.
- Mention the operating systems with the corresponding versions in which you
tested your changes.
- If your change affects the visuals of the application, consider attaching a
screenshot.
- Refer to the issue/s your pull request fixes, so they're closed automatically
when your pull request is merged.
- Write a descriptive pull request title.
- Squash commits when possible, for example, when commiting review changes.
Before your pull request can be merged, the following conditions must hold:
- The linter doesn't throw any warning.
- All the tests passes.
- The coding style aligns with the project's convention.
- Your changes are confirmed to be working in recent versions of the operating systems we support.
- Your changes are confirmed to be working in recent versions of the operating
systems we support.
Don't hesitate to get in touch if you have any questions or need any help!
[ARCHITECTURE]: https://github.com/resin-io/etcher/blob/master/docs/ARCHITECTURE.md
[gulp]: http://gulpjs.com
[EditorConfig]: http://editorconfig.org
[commitizen]: https://commitizen.github.io/cz-cli/#making-your-repo-commitizen-friendly

View File

@ -1,34 +1,43 @@
Maintaining Etcher
==================
This document is meant to serve as a guide for maintainers to perform common tasks.
This document is meant to serve as a guide for maintainers to perform common
tasks.
Preparing a new version
-----------------------
- Bump the version number in the `package.json`'s `version` property.
- Bump the version number in the `package.json`'s `builder.win.version` property.
- Bump the version number in the `package.json`'s `builder.win.version`
property.
- Add a new entry to `CHANGELOG.md` describing what has been added, changed, or removed. Please use the imperative mode and capitalize the first letter of each item.
- Add a new entry to `CHANGELOG.md` describing what has been added, changed, or
removed. Please use the imperative mode and capitalize the first letter of
each item.
- Link the `CHANGELOG.md` entry to the GitHub page displaying the diffs between the previous and the current version.
- Link the `CHANGELOG.md` entry to the GitHub page displaying the diffs between
the previous and the current version.
```markdown
https://github.com/resin-io/etcher/compare/<previous>...<current>
```
- Re-take `screenshot.png` so it displays the latest version in the bottom right corner.
- Re-take `screenshot.png` so it displays the latest version in the bottom
right corner.
- Re-install all dependencies and run `npm shrinkwrap` to update `npm-shrinkwrap.json`.
- Re-install all dependencies and run `npm shrinkwrap` to update
`npm-shrinkwrap.json`.
- Commit the changes with the version number as the commit title, including the `v` prefix, to `master`. For example:
- Commit the changes with the version number as the commit title, including the
`v` prefix, to `master`. For example:
```sh
git commit -m "v1.0.0" # not 1.0.0
```
- Create an annotated tag for the new version. The commit title should equal the annotated tag name. For example:
- Create an annotated tag for the new version. The commit title should equal
the annotated tag name. For example:
```sh
git tag -a v1.0.0 -m "v1.0.0"
@ -44,10 +53,16 @@ git push --tags
Upgrading Electron
------------------
- Upgrade the `electron-prebuilt` dependency version in `package.json` to an *exact version* (no `~`, `^`, etc).
- Upgrade the `electron-prebuilt` dependency version in `package.json` to an
*exact version* (no `~`, `^`, etc).
- Find the exact NodeJS version included in the desired Electron version and update `engines.node` in `package.json` appropriately. This can be usually found in the [Electron releases page](https://github.com/electron/electron/releases).
- Find the exact NodeJS version included in the desired Electron version and
update `engines.node` in `package.json` appropriately. This can be usually
found in the [Electron releases page][electron-releases].
- Update the `NODE_VERSION` environment variable in `.travis.yml`.
- Update the `nodejs_version` and `npm_config_target` environment variables in `appveyor.yml`.
- Update the `nodejs_version` and `npm_config_target` environment variables in
`appveyor.yml`.
[electron-releases]: https://github.com/electron/electron/releases

View File

@ -1,16 +1,20 @@
Publishing Etcher
=================
This is a small guide to package and publish Etcher to all supported operating systems.
This is a small guide to package and publish Etcher to all supported operating
systems.
Common Pre-requisites
---------------------
- [NodeJS](https://nodejs.org)
Make sure you're running the exact same NodeJS version as the one included with the current Electron build being used by Etcher to avoid any strange native dependencies issues.
Make sure you're running the exact same NodeJS version as the one included with
the current Electron build being used by Etcher to avoid any strange native
dependencies issues.
The expected NodeJS version is determined by the `engines.node` property in [`package.json`](https://github.com/resin-io/etcher/blob/master/package.json).
The expected NodeJS version is determined by the `engines.node` property in
[`package.json`][package-json].
- [Bower](http://bower.io)
- [UPX](http://upx.sourceforge.net)
@ -21,17 +25,22 @@ Signing
### OS X
1. Get our Apple Developer ID certificate for signing applications distributed outside the Mac App Store from the Resin.io Apple account.
1. Get our Apple Developer ID certificate for signing applications distributed
outside the Mac App Store from the Resin.io Apple account.
2. Install the Developer ID certificate to your Mac's Keychain by double clicking on the certificate file.
2. Install the Developer ID certificate to your Mac's Keychain by double
clicking on the certificate file.
The application will be signed automatically using this certificate when packaging for OS X.
The application will be signed automatically using this certificate when
packaging for OS X.
### Windows
1. Get access to our code signing certificate and decryption key as a Resin.io employee by asking for it to the relevant people.
1. Get access to our code signing certificate and decryption key as a Resin.io
employee by asking for it to the relevant people.
2. Place the certificate in the root of the Etcher repository naming it `certificate.p12`.
2. Place the certificate in the root of the Etcher repository naming it
`certificate.p12`.
Packaging
---------
@ -47,7 +56,8 @@ Pre-requisites:
- [Rimraf](https://github.com/isaacs/rimraf)
- [asar](https://github.com/electron/asar)
Run the following command from the *Developer Command Prompt for VS2013*, to ensure all Visual Studio command utilities are available in the `%PATH%`:
Run the following command from the *Developer Command Prompt for VS2013*, to
ensure all Visual Studio command utilities are available in the `%PATH%`:
```sh
> .\scripts\build\windows.bat <arch>
@ -76,14 +86,19 @@ $ ./scripts/build/linux.sh <arch>
Publishing
----------
- [AWS CLI](https://aws.amazon.com/cli://aws.amazon.com/cli/)
- [AWS CLI][aws-cli]
Make sure you have the [AWS CLI tool](https://aws.amazon.com/cli://aws.amazon.com/cli/) installed and configured to access Resin.io's production downloads S3 bucket.
Make sure you have the [AWS CLI tool][aws-cli] installed and configured to
access Resin.io's production downloads S3 bucket.
> The publishing script only runs on UNIX based operating systems for now. You can use something like [Cygwin](https://cygwin.com) to run it on Windows.
> The publishing script only runs on UNIX based operating systems for now. You
> can use something like [Cygwin](https://cygwin.com) to run it on Windows.
Run the following command:
```sh
./scripts/publish.sh <file>
```
[package-json]: https://github.com/resin-io/etcher/blob/master/package.json
[aws-cli]: https://aws.amazon.com/cli://aws.amazon.com/cli/