Skip to content

Commit

Permalink
feat(core): V6 API (#433)
Browse files Browse the repository at this point in the history
* temp

* Start working in new package structure

* Example maker

* All makers implemented and tests passing on darwin

* Add v6 branches to travis config

* Add v6 branches to appveyor config

* Gitignore _old

* Remove FIXME comments

* Remove from CI branch whitelist

* Install bolt on docker

* Add to whitelist

* Fix bolt usage on CI

* Run bolt build on CI

* Fix tests on CI

* Fix linting

* Fix CI

* Make publishers work and add specs

* Docs template

* Initial docs

* update plugin interface to support resolving strings

* more docs

* add deps and scripts

* send makeResults instead of flatten artifacts list

* feat(publisher): Allow to configure channel for ERS (#456)

* fix(publisher): call resolve() when electron-release-server publisher succeeds (#465)

ISSUES CLOSED: #460

* Fix publisher tests

* Remove stray console statement

* v6-api is a PR now, no need to explicitly add to CI

* Add top level license

* Change Maker/Publisher syntax so that they can be constructed with a config variable

* Fix custom init

* Allow absolute paths to custom modules
* Update to new @electron-forge/ scope

* Add missing semi

* Use absolute path for custom init to avoid runnig npm link on windows

* Fix appx test reference to fixture key file

* Remove shell completion support (#447)

tabtab is rather buggy and the alternative, commander-completion, needs
a custom completion script to be written and maintained.

* install new beta tagged bolt on CI

* Fix testing snap building in Travis

* fix remove error

* Fix config passing in tests

* fix search order
  • Loading branch information
MarshallOfSound committed Apr 11, 2018
1 parent d59695e commit 364ba8d
Show file tree
Hide file tree
Showing 214 changed files with 11,661 additions and 1,966 deletions.
9 changes: 7 additions & 2 deletions .appveyor.yml
Expand Up @@ -10,11 +10,16 @@ cache:
branches:
only:
- master
- v6

install:
- ps: Install-Product node $env:nodejs_version $env:platform
- set PATH=%APPDATA%\npm;%PATH%
- yarn
- npm i -g bolt@0.20.1
- if not exist "node_modules" mkdir node_modules
- ps: Remove-Item node_modules -Recurse -Force
- bolt
- bolt build
- ps: |
$wixToolsetBinPath = ";C:\Program Files (x86)\WiX Toolset v3.11\bin;"
$env:PATH = $env:PATH + $wixToolsetBinPath
Expand All @@ -27,6 +32,6 @@ install:
test_script:
- node --version
- yarn --version
- yarn test --installer=%node_installer%
- bolt ws test

build: off
17 changes: 17 additions & 0 deletions .babelrc
@@ -0,0 +1,17 @@
{
"sourceMaps": "inline",
"plugins": [
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-object-rest-spread"
],
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "6"
}
}
]
]
}
7 changes: 6 additions & 1 deletion .eslintrc
Expand Up @@ -4,6 +4,9 @@
"plugins": [
"mocha"
],
"env": {
"mocha": true
},
"rules": {
"consistent-return": 0,
"global-require": 0,
Expand All @@ -16,6 +19,8 @@
"mocha/no-exclusive-tests": "error",
"no-console": 0,
"no-throw-literal": 0,
"no-underscore-dangle": 0
"no-underscore-dangle": 0,
"class-methods-use-this": 0,
"no-confusing-arrow": 0
}
}
File renamed without changes.
File renamed without changes.
8 changes: 3 additions & 5 deletions .gitignore
@@ -1,6 +1,4 @@
dist
node_modules
docs
.nyc_output
coverage
npm-debug.log
dist
yarn-error.log
packages/.old
1 change: 1 addition & 0 deletions .nvmrc
@@ -0,0 +1 @@
8.9.1
5 changes: 2 additions & 3 deletions .travis.yml
Expand Up @@ -19,11 +19,10 @@ env:
branches:
only:
- master
- v6
- /^v\d+\.\d+\.\d+/
before_install: if [[ "$NODE_INSTALLER" = "yarn" ]]; then npm install -g yarn@0.23.3; fi
install:
- npm install
- npm update
- npm i -g bolt@0.20.1
script: ci/script.sh
after_success: ci/coverage.sh
notifications:
Expand Down
9 changes: 7 additions & 2 deletions ci/docker.sh
Expand Up @@ -2,8 +2,13 @@

NODE_INSTALLER="$1"

if [[ "$NODE_INSTALLER" = "yarn" ]]; then npm i -g yarn; fi
npm i -g yarn
npm i -g bolt@0.20.1

cd /code

CI=true npm run test -- --installer=$NODE_INSTALLER
bolt
bolt build
bolt lint

DEBUG=electron-installer-snap:snapcraft CI=true bolt ws test -- --installer=$NODE_INSTALLER
5 changes: 4 additions & 1 deletion ci/script.sh
Expand Up @@ -3,5 +3,8 @@
if [[ "$TRAVIS_OS_NAME" = "linux" ]]; then
sudo docker run --privileged --interactive --tty --volume $(pwd):/code malept/electron-forge-container:latest /code/ci/docker.sh $NODE_INSTALLER
else
npm run test-coverage -- --installer=$NODE_INSTALLER
bolt
bolt build
bolt lint
bolt ws test
fi
2 changes: 2 additions & 0 deletions docs/.gitignore
@@ -0,0 +1,2 @@
_book
node_modules
1 change: 1 addition & 0 deletions docs/README.md
@@ -0,0 +1 @@
# Electron Forge
38 changes: 38 additions & 0 deletions docs/SUMMARY.md
@@ -0,0 +1,38 @@
# Summary

* [Introduction](README.md)
* [Configuration](config.md)
* [CLI](cli.md)
* [Import](cli.md#import)
* [Init](cli.md#init)
* [Install](cli.md#install)
* [Lint](cli.md#lint)
* [Make](cli.md#make)
* [Package](cli.md#package)
* [Publish](cli.md#publish)
* [Start](cli.md#start)
* [API Docs](https://docs.electronforge.io)
* [Plugins](plugins.md)
* [Webpack](plugins.md#webpack)
* [Electron Compile](plugins.md#electron-compile)
* [Parcel](plugins.md#parcel)
* [Makers](makers.md)
* [AppX](makers.md#appx)
* [Deb](makers.md#deb)
* [DMG](makers.md#dmg)
* [Flatpak](makers.md#flatpak)
* [RPM](makers.md#rpm)
* [Snapcraft](makers.md#snap)
* [Squirrel.Windows](makers.md#squirrel)
* [Wix MSI](makers.md#wix)
* [Zip](makers.md#zip)
* Publishers
* [Electron Release Server](publisher/ers.md)
* [GitHub](publisher/github.md)
* [S3](publisher/s3.md)
* [Snapcraft](publisher/snap.md)
* [Extending Electron Forge](extend.md)
* [Writing Plugins](extend.md#writing-plugins)
* [Writing Makers](extend.md#writing-makers)
* [Writing Publishers](extend.md#writing-publishers)

11 changes: 11 additions & 0 deletions docs/book.json
@@ -0,0 +1,11 @@
{
"plugins": ["theme-api", "panel", "collapsible-menu", "ace"],
"pluginsConfig": {
"theme-api": {
"theme": "dark"
}
},
"styles": {
"website": "styles/website.css"
}
}
118 changes: 118 additions & 0 deletions docs/cli.md
@@ -0,0 +1,118 @@
# Electron Forge CLI

{% method %}
## Installation

Electron forge's CLI is separate from the core module, to install it you will
have to use the `@electron-forge/cli` module from NPM.

{% sample lang="sh" %}
```sh
# NPM
npm i -g @electron-forge/cli

# Yarn
yarn global add @electron-forge/cli
```

{% endmethod %}

## Overview

At a high level the CLI module is just a proxy to the raw
[API](https://docs.electronforge.io) commands. Almost all the configuation
is still done in your [Forge Config](config), the CLI just provides a handy
way to trigger all the core functionality of Electron Forge (and you should
definitely use it).

## Commands

Please note these commands are sorted in alphabetical order, the ones you
probably need to care about are [`start`](#start), [`package`](#package),
[`make`](#make) and [`publish`](#publish).

### Import

Maps to `electronForge.import`, will attempt to take an existing Electron app
and make it Forge compatible. Normally this is just created a base forge config
and adding the required dependencies.

> There are no flags for the Import command
### Init

Maps to `electronForge.init`, will initialize a new Forge powered application in
the given directory (defaults to `.`).

Please note if you want to use a template it must be installed globally before
running the `init` command.

| Flag | Value | Description |
|------|-------|-------------|
| `--template` | Template Name | Name of the template to use to make this new app|
| `--copy-ci-files` | N/A | Set if you want to copy templated CI files for Travis CI and Appveyor |

### Install

Maps to `electronForge.install`, will attempt to install the Electron app
that is published at the given GitHub repository. This command is just a helper
for installing other applications quickly.

### Lint

Maps to `electronForge.lint`, will run the `lint` command that your package.json
exposes. If the exit code is 0 no output is shown, otherwise the error output
will be displayed.

> There are no flags for the Lint command
### Make

Maps to `electronForge.make`, will make distributables for your application
based on your forge config and the parameters you pass in.

| Flag | Value | Description |
|------|-------|-------------|
| `--arch` | Architecture E.g. `x64` | Target architecture to make for |
| `--platform` | Platform E.g. `mas` | Target platform to make for, please note you normally can only target platform X from platform X |
| `--targets` | Comma separated list of maker names | Override your make targets for this run |
| `--skip-package` | N/A | Set if you want to skip the packaging step, useful if you are running sequential makes and want to save time |

### Package

Maps to `electronForge.package`, will package your application into a platform
specific format and put the result in a folder. Please note that this does not
make a distributable format, to make proper distributables please use the
[`make`](#make) command.

| Flag | Value | Description |
|------|-------|-------------|
| `--arch` | Architecture E.g. `x64` | Target architecture to package for |
| `--platform` | Platform E.g. `mas` | Target platform to package for |

### Publish

Maps to `electronForge.publish`, will attempt to make the forge application
and then publish it to the publish targets defined in your forge config.

If you want to publish previously created `make` artifacts you will have to use
the `dry-run` options explained below.

| Flag | Value | Description |
|------|-------|-------------|
| `--tag` | Version | The version to publish these artifacts as |
| `--target` | Comma separated list of publisher names | Override your publish targets for this run |
| `--dry-run` | N/A | Triggers a publish dry run which saves state and doesn't upload anything |
| `--from-dry-run` | N/A | Attempts to publish artifacts from any dry runs saved on disk |

### Start

Maps to `electronForge.start`, will launch the Forge powered application in the
given directory (defaults to `.`).

| Flag | Value | Description |
|------|-------|-------------|
| `--app-path` | Path to your app from CWD | Override the path to the Electron app to launch (defaults to '.') |
| `--enable-logging` | N/A | Enable advanced logging. This will log internal Electron things |
| `--run-as-node` | N/A | Run the Electron app as a Node.JS script |
| `--inspect-electron` | N/A | Triggers inspect mode on Electron to allow debugging the main process |

0 comments on commit 364ba8d

Please sign in to comment.