diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 2d87b152..93300fe6 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -5,7 +5,7 @@ on:
branches:
- master
tags:
- - 'v[0-9]+.[0-9]+.[0-9]+*'
+ - '[0-9]+.[0-9]+.[0-9]+*'
pull_request:
branches:
- master
diff --git a/README.md b/README.md
index d45803ed..382d19cd 100644
--- a/README.md
+++ b/README.md
@@ -1,50 +1,86 @@
# Arduino Pro IDE
-[](https://dev.azure.com/typefox/Arduino/_build/latest?definitionId=4&branchName=master)
+
-> **Beware:** This is very much work-in-progress. Things can and probably will be broken, even on master.
+### Download
-This repo contains a proof-of-concept for an Arduino IDE based on Theia.
-It's built on top of a [fork of the arduino-cli](https://github.com/typefox/arduino-cli/tree/daemon) that sports a gRPC interface.
+You can download the latest version of the Arduino Pro IDE application for the supported platforms from the [GitHub release page](https://github.com/arduino/arduino-pro-ide/releases) or following the links in the following table.
-## How to try (offline)
+#### Latest version
-### Prerequisites
-You should be able to build Theia locally. The requirements are defined [here](https://github.com/theia-ide/theia/blob/master/doc/Developing.md#prerequisites).
+Platform | 32 bit | 64 bit |
+--------- | ------------------------ | ------------------------ |
+Linux | | [Linux 64 bit] |
+Linux ARM | [π§ Work in progress...] | [π§ Work in progress...] |
+Windows | | [Windows 64 bit] |
+macOS | | [macOS 64 bit] |
-```
-git clone https://github.com/bcmi-labs/arduino-editor
-cd arduino-editor
+[π§ Work in progress...]: https://github.com/arduino/arduino-pro-ide/issues/287
+[Linux 64 bit]: https://downloads.arduino.cc/arduino-pro-ide/arduino-pro-ide_latest_Linux_64bit.zip
+[Windows 64 bit]: https://downloads.arduino.cc/arduino-pro-ide/arduino-pro-ide_latest_Windows_64bit.zip
+[macOS 64 bit]: https://downloads.arduino.cc/arduino-pro-ide/arduino-pro-ide_latest_macOS_64bit.dmg
+
+#### Previous versions
+
+These are available from the [GitHub releases page](https://github.com/arduino/arduino-pro-ide/releases).
+
+#### Nightly builds
+
+These builds are generated every day at 03:00 GMT from the `master` branch and
+should be considered unstable. In order to get the latest nightly build
+available for the supported platform, use the following links:
+
+Platform | 32 bit | 64 bit |
+--------- | ------------------------ | ------------------------ |
+Linux | | [Nightly Linux 64 bit] |
+Linux ARM | [π§ Work in progress...] | [π§ Work in progress...] |
+Windows | | [Nightly Windows 64 bit] |
+macOS | | [Nightly macOS 64 bit] |
+
+[π§ Work in progress...]: https://github.com/arduino/arduino-pro-ide/issues/287
+[Nightly Linux 64 bit]: https://downloads.arduino.cc/arduino-pro-ide/nightly/arduino-pro-ide_nightly-latest_Linux_64bit.zip
+[Nightly Windows 64 bit]: https://downloads.arduino.cc/arduino-pro-ide/nightly/arduino-pro-ide_nightly-latest_Windows_64bit.zip
+[Nightly macOS 64 bit]: https://downloads.arduino.cc/arduino-pro-ide/nightly/arduino-pro-ide_nightly-latest_macOS_64bit.dmg
+
+> These links return an HTTP `302: Found` response, redirecting to latest
+ generated builds by replacing `latest` with the latest available build
+ date, using the format YYYYMMDD (i.e for 2019/Aug/06 `latest` is
+ replaced with `20190806` )
+
+### Build from source
+
+If youβre familiar with TypeScript, the [Theia IDE](https://theia-ide.org/), and of you want to contribute to the
+project, you should be able to build the Arduino Pro IDE locally. Please refer to the [Theia IDE prerequisites](https://github.com/theia-ide/theia/blob/master/doc/) documentation for the setup instructions.
+
+### Build
+```sh
yarn
+```
+
+### Rebuild the native dependencies
+```sh
yarn rebuild:electron
-yarn --cwd electron-app start
+```
+Note: this step takes long. It completes in 4-5 minutes on a MacBook Pro, 2.9 GHz Quad-Core Intel Core i7.
+
+### Start
+```sh
+yarn start
```
-If you want to switch back to the browser-based example, execute the following in the repository root
-```
-yarn rebuild:browser
-```
-Then you can start the browser example again:
-```
-yarn --cwd browser-app start
-```
+### CI
-Click [here](./arduino-ide-extension/README.md) for more details on various IDE services, and the Arduino Pro IDE implementation in general.
+This project is built on [GitHub Actions](https://github.com/bcmi-labs/arduino-editor/actions?query=workflow%3A%22Arduino+Pro+IDE%22).
+ - _Snapshot_ builds run when changes are pushed to the `master` branch, or when a PR is created against the `master` branch. For the sake of the review and verification process, the build artifacts can be downloaded from the GitHub Actions page. Note: [due to a limitation](https://github.com/actions/upload-artifact/issues/80#issuecomment-630030144) with the GH Actions UI, you cannot download a particular build, but you have to get all together inside the `build-artifacts.zip`.
+ - _Nightly_ builds run every day at 03:00 GMT from the `master` branch.
+ - _Release_ builds run when a new tag is pushed to the remote. The tag must follow the [semver](https://semver.org/). For instance, `1.2.3` is a correct tag, but `v2.3.4` won't work. Steps to trigger a new release build:
+ - Create a local tag:
+ ```sh
+ git tag -a 1.2.3 -m "Creating a new tag for the `1.2.3` release."
+ ```
+ - Push it to the remote:
+ ```sh
+ git push origin 1.2.3
+ ```
-## Arduino Pro IDE Electron Application
-The project is built on [Azure DevOps](https://dev.azure.com/typefox/Arduino).
-
-Currently, we provide the Arduino Pro IDE for the following platforms:
- - Windows,
- - macOS, and
- - Linux.
-
-You can download the latest release applications fom [here](https://github.com/bcmi-labs/arduino-editor/releases/latest).
-If you want to get a nightly build, go to the [Azure DevOps page](https://dev.azure.com/typefox/Arduino/_build?definitionId=4),
-and follow the steps from below.
-
-
-
-
-Click [here](./electron/README.md) for more details on the CI/CD, the GitHub release, and the build process in general.
diff --git a/electron/build/template-package.json b/electron/build/template-package.json
index b69aeb6b..b928587a 100644
--- a/electron/build/template-package.json
+++ b/electron/build/template-package.json
@@ -79,7 +79,10 @@
"hardenedRuntime": true,
"gatekeeperAssess": false,
"entitlements": "resources/entitlements.mac.plist",
- "entitlementsInherit": "resources/entitlements.mac.plist"
+ "entitlementsInherit": "resources/entitlements.mac.plist",
+ "target": [
+ "dmg"
+ ]
},
"linux": {
"target": [
diff --git a/electron/packager/config.js b/electron/packager/config.js
index b9094f4f..4225fba7 100644
--- a/electron/packager/config.js
+++ b/electron/packager/config.js
@@ -79,8 +79,6 @@ function getVersion() {
if (!semver.valid(version)) {
throw new Error(`Invalid patched version: '${version}'.`);
}
- } else {
- version = `v${version}`;
}
return version;
}
diff --git a/package.json b/package.json
index 88d9ff43..d458a515 100644
--- a/package.json
+++ b/package.json
@@ -8,16 +8,17 @@
"private": true,
"devDependencies": {
"@theia/cli": "next",
+ "cross-env": "^7.0.2",
"lerna": "^3.20.2",
"rimraf": "^2.6.1",
"tslint": "^5.5.0",
"typescript": "^3.9.2"
},
"scripts": {
- "prepare": "lerna run prepare && yarn download:plugins",
+ "prepare": "cross-env THEIA_ELECTRON_SKIP_REPLACE_FFMPEG=1 lerna run prepare && yarn download:plugins",
"rebuild:browser": "theia rebuild:browser",
"rebuild:electron": "theia rebuild:electron --modules \"@theia/node-pty\" nsfw native-keymap find-git-repositories grpc",
- "start": "yarn --cwd ./browser-app start",
+ "start": "yarn rebuild:electron && yarn --cwd ./electron-app start",
"watch": "lerna run watch --parallel",
"test": "lerna run test",
"download:plugins": "theia download:plugins"
diff --git a/yarn.lock b/yarn.lock
index 71588149..e73847bb 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5882,6 +5882,13 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
+cross-env@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.2.tgz#bd5ed31339a93a3418ac4f3ca9ca3403082ae5f9"
+ integrity sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw==
+ dependencies:
+ cross-spawn "^7.0.1"
+
cross-spawn-async@^2.1.1:
version "2.2.5"
resolved "https://registry.yarnpkg.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc"
@@ -5909,7 +5916,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5:
shebang-command "^1.2.0"
which "^1.2.9"
-cross-spawn@^7.0.0:
+cross-spawn@^7.0.0, cross-spawn@^7.0.1:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==