Skip to content

Commit d3aa530

Browse files
committed
feat(forge): makers for forge should use electron-builder-lib to reduce number of dependencies
1 parent 10ccea8 commit d3aa530

File tree

13 files changed

+67
-59
lines changed

13 files changed

+67
-59
lines changed

packages/electron-builder/src/forge/forge-maker.ts renamed to packages/electron-builder-lib/src/forge-maker.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import * as path from "path"
2-
import { build, CliOptions } from "../builder"
2+
import { build } from "./index"
3+
import { PackagerOptions } from "./packagerApi"
34

45
export interface ForgeOptions {
56
readonly dir: string
67
}
78

8-
export function buildForge(forgeOptions: ForgeOptions, options: CliOptions) {
9+
export function buildForge(forgeOptions: ForgeOptions, options: PackagerOptions) {
910
const appDir = forgeOptions.dir
1011
return build({
1112
prepackaged: appDir,

packages/electron-builder-lib/src/index.ts

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
import { CancellationToken } from "builder-util-runtime/out/CancellationToken"
2+
import { executeFinally } from "builder-util/out/promise"
3+
import { PublishOptions } from "electron-publish/out/publisher"
4+
import { log } from "builder-util"
5+
import { Packager } from "./packager"
6+
import { PackagerOptions } from "./packagerApi"
7+
import BluebirdPromise from "bluebird-lst"
8+
import { PublishManager } from "./publish/PublishManager"
9+
110
export { Packager, BuildResult } from "./packager"
211
export { PackagerOptions, ArtifactCreated } from "./packagerApi"
312
export { TargetConfiguration, Platform, Target, DIR_TARGET, BeforeBuildContext, SourceRepositoryInfo, TargetSpecificOptions, TargetConfigType, DEFAULT_TARGET, CompressionLevel } from "./core"
@@ -21,3 +30,46 @@ export { CancellationToken } from "builder-util-runtime"
2130
export { PublishOptions, UploadTask } from "electron-publish"
2231
export { PublishManager } from "./publish/PublishManager"
2332
export { PlatformPackager } from "./platformPackager"
33+
export { buildForge, ForgeOptions } from "./forge-maker"
34+
35+
export async function build(options: PackagerOptions & PublishOptions, cancellationToken: CancellationToken = new CancellationToken()): Promise<Array<string>> {
36+
const packager = new Packager(options, cancellationToken)
37+
38+
let electronDownloader: any = null
39+
packager.electronDownloader = options => {
40+
if (electronDownloader == null) {
41+
electronDownloader = BluebirdPromise.promisify(require("electron-download-tf"))
42+
}
43+
return electronDownloader(options)
44+
}
45+
46+
// because artifact event maybe dispatched several times for different publish providers
47+
const artifactPaths = new Set<string>()
48+
packager.artifactCreated(event => {
49+
if (event.file != null) {
50+
artifactPaths.add(event.file)
51+
}
52+
})
53+
54+
const publishManager = new PublishManager(packager, options)
55+
const sigIntHandler = () => {
56+
log.warn("cancelled by SIGINT")
57+
cancellationToken.cancel()
58+
publishManager.cancelTasks()
59+
}
60+
process.once("SIGINT", sigIntHandler)
61+
62+
return await executeFinally(packager.build().then(() => Array.from(artifactPaths)), errorOccurred => {
63+
let promise: Promise<any>
64+
if (errorOccurred) {
65+
publishManager.cancelTasks()
66+
promise = Promise.resolve(null)
67+
}
68+
else {
69+
promise = publishManager.awaitTasks()
70+
}
71+
72+
return promise
73+
.then(() => process.removeListener("SIGINT", sigIntHandler))
74+
})
75+
}

packages/electron-builder/src/builder.ts

Lines changed: 2 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
import BluebirdPromise from "bluebird-lst"
21
import { addValue, Arch, archFromString, InvalidConfigurationError, log } from "builder-util"
3-
import { CancellationToken } from "builder-util-runtime"
4-
import { executeFinally } from "builder-util/out/promise"
52
import chalk from "chalk"
6-
import { Configuration, DIR_TARGET, PackagerOptions, Platform, PublishManager } from "electron-builder-lib"
7-
import { Packager } from "electron-builder-lib/out/packager"
3+
import { Configuration, DIR_TARGET, PackagerOptions, Platform } from "electron-builder-lib"
4+
import { build as _build } from "electron-builder-lib"
85
import { PublishOptions } from "electron-publish"
96
import { deepAssign } from "read-config-file/out/deepAssign"
107

@@ -218,48 +215,6 @@ export function build(rawOptions?: CliOptions): Promise<Array<string>> {
218215
return _build(normalizeOptions(rawOptions || {}))
219216
}
220217

221-
export async function _build(options: PackagerOptions & PublishOptions, cancellationToken: CancellationToken = new CancellationToken()): Promise<Array<string>> {
222-
const packager = new Packager(options, cancellationToken)
223-
224-
let electronDownloader: any = null
225-
packager.electronDownloader = options => {
226-
if (electronDownloader == null) {
227-
electronDownloader = BluebirdPromise.promisify(require("electron-download-tf"))
228-
}
229-
return electronDownloader(options)
230-
}
231-
232-
// because artifact event maybe dispatched several times for different publish providers
233-
const artifactPaths = new Set<string>()
234-
packager.artifactCreated(event => {
235-
if (event.file != null) {
236-
artifactPaths.add(event.file)
237-
}
238-
})
239-
240-
const publishManager = new PublishManager(packager, options)
241-
const sigIntHandler = () => {
242-
log.warn("cancelled by SIGINT")
243-
cancellationToken.cancel()
244-
publishManager.cancelTasks()
245-
}
246-
process.once("SIGINT", sigIntHandler)
247-
248-
return await executeFinally(packager.build().then(() => Array.from(artifactPaths)), errorOccurred => {
249-
let promise: Promise<any>
250-
if (errorOccurred) {
251-
publishManager.cancelTasks()
252-
promise = Promise.resolve(null)
253-
}
254-
else {
255-
promise = publishManager.awaitTasks()
256-
}
257-
258-
return promise
259-
.then(() => process.removeListener("SIGINT", sigIntHandler))
260-
})
261-
}
262-
263218
/**
264219
* @private
265220
* @internal

packages/electron-builder/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ export {
1313
Metadata, AuthorMetadata, RepositoryInfo, AppInfo,
1414
UploadTask, PublishManager, PublishOptions
1515
} from "electron-builder-lib"
16-
export { buildForge, ForgeOptions } from "./forge/forge-maker"
16+
export { buildForge, ForgeOptions } from "electron-builder-lib"
1717
export { CancellationToken } from "builder-util-runtime"

packages/electron-installer-appimage/main.js renamed to packages/electron-forge-maker-appimage/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
44
value: true
55
})
66

7-
const buildForge = require("electron-builder").buildForge
7+
const buildForge = require("electron-builder-lib").buildForge
88

99
exports.isSupportedOnCurrentPlatform = () => Promise.resolve(true)
1010

packages/electron-installer-appimage/package.json renamed to packages/electron-forge-maker-appimage/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "electron-installer-appimage",
2+
"name": "electron-forge-maker-appimage",
33
"version": "0.0.0-semantic-release",
44
"main": "main.js",
55
"author": "Vladimir Krivosheev",
@@ -11,6 +11,6 @@
1111
"*.js"
1212
],
1313
"dependencies": {
14-
"electron-builder": "^0.0.0-semantic-release"
14+
"electron-builder-lib": "^0.0.0-semantic-release"
1515
}
1616
}
File renamed without changes.

packages/electron-forge-maker-nsis-web/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
44
value: true
55
})
66

7-
const buildForge = require("electron-builder").buildForge
7+
const buildForge = require("electron-builder-lib").buildForge
88

99
exports.isSupportedOnCurrentPlatform = () => Promise.resolve(true)
1010

packages/electron-forge-maker-nsis-web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111
"*.js"
1212
],
1313
"dependencies": {
14-
"electron-builder": "^19.30.3"
14+
"electron-builder-lib": "^19.30.3"
1515
}
1616
}

packages/electron-forge-maker-nsis/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
44
value: true
55
})
66

7-
const buildForge = require("electron-builder").buildForge
7+
const buildForge = require("electron-builder-lib").buildForge
88

99
exports.isSupportedOnCurrentPlatform = () => Promise.resolve(true)
1010

0 commit comments

Comments
 (0)