From 6aa380950b8995873ed15371770910faaec4637e Mon Sep 17 00:00:00 2001 From: develar Date: Sat, 24 Jun 2017 09:14:22 +0200 Subject: [PATCH] feat: add channel to file macros Close #1701 --- docs/Options.md | 1 + packages/electron-builder/src/appInfo.ts | 10 +++++++++- .../electron-builder/src/publish/PublishManager.ts | 6 +----- packages/electron-updater/src/MacUpdater.ts | 3 +-- test/out/__snapshots__/ExtraBuildTest.js.snap | 4 ++-- test/src/ExtraBuildTest.ts | 1 + 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/docs/Options.md b/docs/Options.md index dd7749a8e74..8fb8132b90d 100644 --- a/docs/Options.md +++ b/docs/Options.md @@ -67,6 +67,7 @@ You can use macros in the file patterns, artifact file name patterns and publish * `${name}` – `package.json` `name`. * `${productName}` — [Sanitized](https://www.npmjs.com/package/sanitize-filename) product name. * `${version}` +* `${channel}` — detected prerelease component from version (e.g. `beta`). * `${env.ENV_NAME}` — any environment variable. * Any property of [AppInfo](https://github.com/electron-userland/electron-builder/wiki/electron-builder#AppInfo) (e.g. `buildVersion`, `buildNumber`). diff --git a/packages/electron-builder/src/appInfo.ts b/packages/electron-builder/src/appInfo.ts index a85cd1e40e1..1e8b8982b39 100644 --- a/packages/electron-builder/src/appInfo.ts +++ b/packages/electron-builder/src/appInfo.ts @@ -1,6 +1,6 @@ import { isEmptyOrSpaces, smarten, warn } from "electron-builder-util" import sanitizeFileName from "sanitize-filename" -import { SemVer } from "semver" +import { prerelease, SemVer } from "semver" import { BuildInfo } from "./packagerApi" export class AppInfo { @@ -32,6 +32,14 @@ export class AppInfo { this.productFilename = sanitizeFileName(this.productName) } + get channel(): string | null { + const prereleaseInfo = prerelease(this.version) + if (prereleaseInfo != null && prereleaseInfo.length > 0) { + return prereleaseInfo[0] + } + return null + } + get versionInWeirdWindowsForm(): string { const parsedVersion = new SemVer(this.version) return `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}.${this.buildNumber || "0"}` diff --git a/packages/electron-builder/src/publish/PublishManager.ts b/packages/electron-builder/src/publish/PublishManager.ts index 07e401aabdb..35c8a994ba5 100644 --- a/packages/electron-builder/src/publish/PublishManager.ts +++ b/packages/electron-builder/src/publish/PublishManager.ts @@ -14,7 +14,6 @@ import { ensureDir, outputJson, readFile, writeFile } from "fs-extra-p" import isCi from "is-ci" import { safeDump } from "js-yaml" import * as path from "path" -import { prerelease } from "semver" import { WriteStream as TtyWriteStream } from "tty" import * as url from "url" import { Arch, Platform, Target } from "../core" @@ -466,10 +465,7 @@ async function getResolvedPublishConfig(packager: PlatformPackager, options let channelFromAppVersion: string | null = null if ((options).channel == null && packager.config.detectUpdateChannel !== false) { - const prereleaseInfo = prerelease(packager.appInfo.version) - if (prereleaseInfo != null && prereleaseInfo.length > 0) { - channelFromAppVersion = prereleaseInfo[0] - } + channelFromAppVersion = packager.appInfo.channel } const provider = options.provider diff --git a/packages/electron-updater/src/MacUpdater.ts b/packages/electron-updater/src/MacUpdater.ts index 41dba23281a..212eb2b7b57 100644 --- a/packages/electron-updater/src/MacUpdater.ts +++ b/packages/electron-updater/src/MacUpdater.ts @@ -1,5 +1,5 @@ import BluebirdPromise from "bluebird-lst" -import { CancellationToken, configureRequestOptions, DigestTransform, ProgressCallbackTransform, safeGetHeader } from "electron-builder-http" +import { CancellationToken, configureRequestOptions, DigestTransform, ProgressCallbackTransform, RequestHeaders, safeGetHeader } from "electron-builder-http" import { PublishConfiguration } from "electron-builder-http/out/publishOptions" import { VersionInfo } from "electron-builder-http/out/updateInfo" import { createServer, IncomingMessage, ServerResponse } from "http" @@ -7,7 +7,6 @@ import { parse as parseUrl } from "url" import { AppUpdater } from "./AppUpdater" import { DOWNLOAD_PROGRESS, FileInfo, UPDATE_DOWNLOADED } from "./main" import AutoUpdater = Electron.AutoUpdater -import { RequestHeaders } from "../../electron-builder-http/src/httpExecutor" export class MacUpdater extends AppUpdater { private readonly nativeUpdater: AutoUpdater = require("electron").autoUpdater diff --git a/test/out/__snapshots__/ExtraBuildTest.js.snap b/test/out/__snapshots__/ExtraBuildTest.js.snap index bd903450720..3af5132c682 100644 --- a/test/out/__snapshots__/ExtraBuildTest.js.snap +++ b/test/out/__snapshots__/ExtraBuildTest.js.snap @@ -51,7 +51,7 @@ Object { }, Object { "arch": 0, - "file": "Test App ßW Setup 1.0.0-beta.1.exe", + "file": "beta-TestApp.exe", "safeArtifactName": "TestApp-Setup-1.0.0-beta.1.exe", }, ], @@ -69,7 +69,7 @@ Object { exports[`override targets in the config - only arch 3`] = ` Object { "githubArtifactName": "TestApp-Setup-1.0.0-beta.1.exe", - "path": "Test App ßW Setup 1.0.0-beta.1.exe", + "path": "beta-TestApp.exe", "version": "1.0.0-beta.1", } `; diff --git a/test/src/ExtraBuildTest.ts b/test/src/ExtraBuildTest.ts index ee2389fbc4d..9a556ce488d 100644 --- a/test/src/ExtraBuildTest.ts +++ b/test/src/ExtraBuildTest.ts @@ -96,6 +96,7 @@ test.ifAll.ifDevOrWinCi("override targets in the config - only arch", app({ }, // https://github.com/electron-userland/electron-builder/issues/1348 win: { + artifactName: "${channel}-${name}.exe", target: [ "nsis", ],