From 6f0fb8e44f035bcd6ff0d6f234b38c20fde066af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20R=C3=BCger?= Date: Fri, 6 Dec 2024 17:41:30 +0100 Subject: [PATCH] feat(keygen): Add `host` property to support self-hosted Keygen instances (#8711) --- .changeset/kind-poems-joke.md | 8 ++++++++ packages/app-builder-lib/scheme.json | 5 +++++ packages/builder-util-runtime/src/publishOptions.ts | 6 ++++++ packages/electron-publish/src/keygenPublisher.ts | 6 +++++- packages/electron-updater/src/providers/KeygenProvider.ts | 4 +++- 5 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 .changeset/kind-poems-joke.md diff --git a/.changeset/kind-poems-joke.md b/.changeset/kind-poems-joke.md new file mode 100644 index 00000000000..6153ae69025 --- /dev/null +++ b/.changeset/kind-poems-joke.md @@ -0,0 +1,8 @@ +--- +"app-builder-lib": minor +"builder-util-runtime": minor +"electron-publish": minor +"electron-updater": minor +--- + +Add `host` property to support self-hosted Keygen instances diff --git a/packages/app-builder-lib/scheme.json b/packages/app-builder-lib/scheme.json index e8c709dd58d..bd141e9ce3f 100644 --- a/packages/app-builder-lib/scheme.json +++ b/packages/app-builder-lib/scheme.json @@ -1578,6 +1578,11 @@ "default": "stable", "description": "The channel." }, + "host": { + "default": "api.keygen.sh", + "description": "Keygen host for self-hosted instances", + "type": "string" + }, "platform": { "description": "The target Platform. Is set programmatically explicitly during publishing.", "type": [ diff --git a/packages/builder-util-runtime/src/publishOptions.ts b/packages/builder-util-runtime/src/publishOptions.ts index 48ac8a6db85..3c9d87df3c0 100644 --- a/packages/builder-util-runtime/src/publishOptions.ts +++ b/packages/builder-util-runtime/src/publishOptions.ts @@ -179,6 +179,12 @@ export interface KeygenOptions extends PublishConfiguration { */ readonly provider: "keygen" + /** + * Keygen host for self-hosted instances + * @default "api.keygen.sh" + */ + readonly host?: string + /** * Keygen account's UUID */ diff --git a/packages/electron-publish/src/keygenPublisher.ts b/packages/electron-publish/src/keygenPublisher.ts index 8be78963e7d..244db4b7fac 100644 --- a/packages/electron-publish/src/keygenPublisher.ts +++ b/packages/electron-publish/src/keygenPublisher.ts @@ -80,13 +80,17 @@ export interface KeygenArtifact { export class KeygenPublisher extends HttpPublisher { readonly providerName = "keygen" - readonly hostname = "api.keygen.sh" + readonly defaultHostname = "api.keygen.sh" private readonly info: KeygenOptions private readonly auth: string private readonly version: string private readonly basePath: string + get hostname() { + return this.info.host || this.defaultHostname + } + constructor(context: PublishContext, info: KeygenOptions, version: string) { super(context) diff --git a/packages/electron-updater/src/providers/KeygenProvider.ts b/packages/electron-updater/src/providers/KeygenProvider.ts index 3e07fc36211..74034c614e7 100644 --- a/packages/electron-updater/src/providers/KeygenProvider.ts +++ b/packages/electron-updater/src/providers/KeygenProvider.ts @@ -5,6 +5,7 @@ import { getChannelFilename, newBaseUrl, newUrlFromBase } from "../util" import { parseUpdateInfo, Provider, ProviderRuntimeOptions, resolveFiles } from "./Provider" export class KeygenProvider extends Provider { + private readonly defaultHostname = "api.keygen.sh" private readonly baseUrl: URL constructor( @@ -16,7 +17,8 @@ export class KeygenProvider extends Provider { ...runtimeOptions, isUseMultipleRangeRequest: false, }) - this.baseUrl = newBaseUrl(`https://api.keygen.sh/v1/accounts/${this.configuration.account}/artifacts?product=${this.configuration.product}`) + const host = this.configuration.host || this.defaultHostname + this.baseUrl = newBaseUrl(`https://${host}/v1/accounts/${this.configuration.account}/artifacts?product=${this.configuration.product}`) } private get channel(): string {