Skip to content

Commit

Permalink
refactor: use deepAssign from util
Browse files Browse the repository at this point in the history
  • Loading branch information
develar committed Feb 1, 2018
1 parent ee1a86b commit c2fad34
Show file tree
Hide file tree
Showing 14 changed files with 59 additions and 23 deletions.
42 changes: 42 additions & 0 deletions packages/builder-util/src/deepAssign.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
function isObject(x: any) {
if (Array.isArray(x)) {
return false
}

const type = typeof x
return type === "object" || type === "function"
}

function assignKey(target: any, from: any, key: string) {
const value = from[key]
// /~https://github.com/electron-userland/electron-builder/pull/562
if (value === undefined) {
return
}

const prevValue = target[key]
if (prevValue == null || value == null || !isObject(prevValue) || !isObject(value)) {
target[key] = value
}
else {
target[key] = assign(prevValue, value)
}
}

function assign(to: any, from: any) {
if (to !== from) {
for (const key of Object.getOwnPropertyNames(from)) {
assignKey(to, from, key)
}
}
return to
}

export function deepAssign<T>(target: T, ...objects: Array<any>): T {
for (const o of objects) {
if (o != null) {
assign(target, o)
}
}
return target
}
2 changes: 2 additions & 0 deletions packages/builder-util/src/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ export { hashFile } from "./hash"
export { copyFile } from "./fs"
export { asArray } from "builder-util-runtime"

export { deepAssign } from "./deepAssign"

export const debug7z = _debug("electron-builder:7z")

export function serializeToYaml(object: object) {
Expand Down
3 changes: 2 additions & 1 deletion packages/dmg-builder/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
"builder-util": "^0.0.0-semantic-release",
"iconv-lite": "^0.4.19",
"js-yaml": "^3.10.0",
"electron-builder-lib": "~0.0.0-semantic-release"
"electron-builder-lib": "~0.0.0-semantic-release",
"sanitize-filename": "^1.6.1"
},
"typings": "./out/dmg.d.ts"
}
3 changes: 1 addition & 2 deletions packages/dmg-builder/src/dmg.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { Arch, AsyncTaskManager, exec, InvalidConfigurationError, isCanSignDmg, isEmptyOrSpaces, log, spawn } from "builder-util"
import { Arch, AsyncTaskManager, exec, InvalidConfigurationError, isCanSignDmg, isEmptyOrSpaces, log, spawn, deepAssign } from "builder-util"
import { CancellationToken } from "builder-util-runtime"
import { copyDir, copyFile, exists, statOrNull } from "builder-util/out/fs"
import { addLicenseToDmg } from "./dmgLicense"
import { applyProperties, attachAndExecute, computeBackground, computeBackgroundColor, detach, transformBackgroundFileIfNeed } from "./dmgUtil"
import { stat } from "fs-extra-p"
import * as path from "path"
import { deepAssign } from "read-config-file/out/deepAssign"
import sanitizeFileName from "sanitize-filename"
import { findIdentity, isSignAllowed } from "electron-builder-lib/out/codeSign"
import { Target, DmgOptions } from "electron-builder-lib"
Expand Down
3 changes: 1 addition & 2 deletions packages/electron-builder-lib/src/fileTransformer.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { debug, log } from "builder-util"
import { debug, log, deepAssign } from "builder-util"
import { FileTransformer } from "builder-util/out/fs"
import { readFile } from "fs-extra-p"
import * as path from "path"
import { deepAssign } from "read-config-file/out/deepAssign"
import { Configuration } from "./configuration"
import { Packager } from "./packager"

Expand Down
3 changes: 1 addition & 2 deletions packages/electron-builder-lib/src/macPackager.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import BluebirdPromise from "bluebird-lst"
import { Arch, AsyncTaskManager, exec, InvalidConfigurationError, log } from "builder-util"
import { deepAssign, Arch, AsyncTaskManager, exec, InvalidConfigurationError, log } from "builder-util"
import { signAsync, SignOptions } from "electron-osx-sign"
import { ensureDir, readdir, remove } from "fs-extra-p"
import { Lazy } from "lazy-val"
import * as path from "path"
import { deepAssign } from "read-config-file/out/deepAssign"
import * as semver from "semver"
import { AsarIntegrity } from "asar-integrity"
import { asArray } from "builder-util-runtime/out"
Expand Down
3 changes: 1 addition & 2 deletions packages/electron-builder-lib/src/packager.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import BluebirdPromise from "bluebird-lst"
import { addValue, Arch, archFromString, AsyncTaskManager, DebugLogger, exec, InvalidConfigurationError, log, safeStringifyJson, serializeToYaml, TmpDir } from "builder-util"
import { deepAssign, addValue, Arch, archFromString, AsyncTaskManager, DebugLogger, exec, InvalidConfigurationError, log, safeStringifyJson, serializeToYaml, TmpDir } from "builder-util"
import { CancellationToken } from "builder-util-runtime"
import { executeFinally, orNullIfFileNotExist } from "builder-util/out/promise"
import { EventEmitter } from "events"
Expand All @@ -8,7 +8,6 @@ import isCI from "is-ci"
import { dump } from "js-yaml"
import { Lazy } from "lazy-val"
import * as path from "path"
import { deepAssign } from "read-config-file/out/deepAssign"
import { AppInfo } from "./appInfo"
import { readAsarJson } from "./asar/asar"
import { AfterPackContext, Configuration } from "./configuration"
Expand Down
3 changes: 1 addition & 2 deletions packages/electron-builder-lib/src/platformPackager.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import { computeData, AsarIntegrity } from "asar-integrity"
import BluebirdPromise from "bluebird-lst"
import { Arch, asArray, AsyncTaskManager, debug, DebugLogger, exec, getArchSuffix, InvalidConfigurationError, isEmptyOrSpaces, log } from "builder-util"
import { Arch, asArray, AsyncTaskManager, debug, DebugLogger, exec, getArchSuffix, InvalidConfigurationError, isEmptyOrSpaces, log, deepAssign } from "builder-util"
import { PackageBuilder } from "builder-util/out/api"
import { statOrNull, unlinkIfExists } from "builder-util/out/fs"
import { orIfFileNotExist } from "builder-util/out/promise"
import { readdir, rename } from "fs-extra-p"
import { Lazy } from "lazy-val"
import { Minimatch } from "minimatch"
import * as path from "path"
import { deepAssign } from "read-config-file/out/deepAssign"
import { AppInfo } from "./appInfo"
import { checkFileInArchive } from "./asar/asarFileChecker"
import { AsarPackager } from "./asar/asarUtil"
Expand Down
3 changes: 1 addition & 2 deletions packages/electron-builder-lib/src/targets/AppxTarget.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import BluebirdPromise from "bluebird-lst"
import { Arch, asArray, InvalidConfigurationError, log } from "builder-util"
import { Arch, asArray, InvalidConfigurationError, log, deepAssign } from "builder-util"
import { copyOrLinkFile, walk } from "builder-util/out/fs"
import { emptyDir, readdir, readFile, writeFile } from "fs-extra-p"
import * as path from "path"
import { deepAssign } from "read-config-file/out/deepAssign"
import { AppXOptions } from "../"
import { Target } from "../core"
import { getTemplatePath } from "../util/pathManager"
Expand Down
3 changes: 1 addition & 2 deletions packages/electron-builder-lib/src/targets/MsiTarget.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import BluebirdPromise from "bluebird-lst"
import { Arch, log } from "builder-util"
import { Arch, log, deepAssign } from "builder-util"
import { UUID } from "builder-util-runtime"
import { getBinFromGithub } from "builder-util/out/binDownload"
import { walk } from "builder-util/out/fs"
import * as ejs from "ejs"
import { readFile, writeFile } from "fs-extra-p"
import { Lazy } from "lazy-val"
import * as path from "path"
import { deepAssign } from "read-config-file/out/deepAssign"
import { MsiOptions } from "../"
import { Target } from "../core"
import { FinalCommonWindowsInstallerOptions, getEffectiveOptions } from "../options/CommonWindowsInstallerConfiguration"
Expand Down
3 changes: 1 addition & 2 deletions packages/electron-builder-lib/src/util/config.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { asArray, DebugLogger, InvalidConfigurationError, log } from "builder-util"
import { asArray, DebugLogger, InvalidConfigurationError, log, deepAssign } from "builder-util"
import { statOrNull } from "builder-util/out/fs"
import { readJson } from "fs-extra-p"
import { Lazy } from "lazy-val"
import * as path from "path"
import { getConfig as _getConfig, loadParentConfig, orNullIfFileNotExist, ReadConfigRequest, validateConfig as _validateConfig } from "read-config-file"
import { deepAssign } from "read-config-file/out/deepAssign"
import { Configuration } from "../configuration"
import { reactCra } from "../presets/rectCra"

Expand Down
3 changes: 1 addition & 2 deletions packages/electron-builder/src/builder.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { addValue, Arch, archFromString, InvalidConfigurationError, log } from "builder-util"
import { addValue, Arch, archFromString, InvalidConfigurationError, log, deepAssign } from "builder-util"
import chalk from "chalk"
import { build as _build, Configuration, DIR_TARGET, PackagerOptions, Platform } from "electron-builder-lib"
import { PublishOptions } from "electron-publish"
import { deepAssign } from "read-config-file/out/deepAssign"

/** @internal */
export interface BuildOptions extends PackagerOptions, PublishOptions {
Expand Down
5 changes: 3 additions & 2 deletions test/src/helpers/checkDeps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ async function check(projectDir: string, devPackageData: any): Promise<boolean>
const packageName = path.basename(projectDir)
// console.log(`Checking ${projectDir}`)

const result = await new BluebirdPromise<DepCheckResult>(resolve => {
const result = await new Promise<DepCheckResult>(resolve => {
depCheck(projectDir, {
ignoreDirs: [
"src", "test", "docs", "typings", "docker", "certs", "templates", "vendor",
Expand Down Expand Up @@ -49,7 +49,8 @@ async function check(projectDir: string, devPackageData: any): Promise<boolean>
}

for (const name of Object.keys(result.missing)) {
if (name === "electron-builder-squirrel-windows" || name === "electron-webpack" || name === "electron-download-tf") {
if (name === "electron-builder-squirrel-windows" || name === "electron-webpack" || name === "electron-download-tf" ||
(packageName === "electron-builder-lib" && name === "dmg-builder")) {
delete (result.missing as any)[name]
}
}
Expand Down
3 changes: 1 addition & 2 deletions test/src/helpers/packTester.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { path7x, path7za } from "7zip-bin"
import BluebirdPromise from "bluebird-lst"
import { addValue, exec, log, spawn } from "builder-util"
import { addValue, exec, log, spawn, deepAssign } from "builder-util"
import { CancellationToken } from "builder-util-runtime"
import { copyDir, FileCopier, walk } from "builder-util/out/fs"
import { executeFinally } from "builder-util/out/promise"
Expand All @@ -16,7 +16,6 @@ import { safeLoad } from "js-yaml"
import * as path from "path"
import pathSorter from "path-sort"
import { parse as parsePlist } from "plist"
import { deepAssign } from "read-config-file/out/deepAssign"
import { TmpDir } from "temp-file"
import { CSC_LINK, WIN_CSC_LINK } from "./codeSignData"
import { assertThat } from "./fileAssert"
Expand Down

0 comments on commit c2fad34

Please sign in to comment.