Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
export async function getPublishConfigsForUpdateInfo(packager: PlatformPackager, publishConfigs: Array | null, arch: Arch | null): Promise | null> {
if (publishConfigs === null) {
return null
}
if (publishConfigs.length === 0) {
log.debug(null, "getPublishConfigsForUpdateInfo: no publishConfigs, detect using repository info")
// https://github.com/electron-userland/electron-builder/issues/925#issuecomment-261732378
// default publish config is github, file should be generated regardless of publish state (user can test installer locally or manage the release process manually)
const repositoryInfo = await packager.info.repositoryInfo
debug(`getPublishConfigsForUpdateInfo: ${safeStringifyJson(repositoryInfo)}`)
if (repositoryInfo != null && repositoryInfo.type === "github") {
const resolvedPublishConfig = await getResolvedPublishConfig(packager, packager.info, {provider: repositoryInfo.type}, arch, false)
if (resolvedPublishConfig != null) {
debug(`getPublishConfigsForUpdateInfo: resolve to publish config ${safeStringifyJson(resolvedPublishConfig)}`)
return [resolvedPublishConfig]
}
}
}
return publishConfigs
}
private getOrCreatePublisher(publishConfig: PublishConfiguration, appInfo: AppInfo): Publisher | null {
// to not include token into cache key
const providerCacheKey = safeStringifyJson(publishConfig)
let publisher = this.nameToPublisher.get(providerCacheKey)
if (publisher == null) {
publisher = createPublisher(this, appInfo.version, publishConfig, this.publishOptions, this.packager)
this.nameToPublisher.set(providerCacheKey, publisher)
log.info({publisher: publisher!!.toString()}, "publishing")
}
return publisher
}
export async function getPublishConfigsForUpdateInfo(packager: PlatformPackager, publishConfigs: Array | null, arch: Arch | null): Promise | null> {
if (publishConfigs === null) {
return null
}
if (publishConfigs.length === 0) {
log.debug(null, "getPublishConfigsForUpdateInfo: no publishConfigs, detect using repository info")
// https://github.com/electron-userland/electron-builder/issues/925#issuecomment-261732378
// default publish config is github, file should be generated regardless of publish state (user can test installer locally or manage the release process manually)
const repositoryInfo = await packager.info.repositoryInfo
debug(`getPublishConfigsForUpdateInfo: ${safeStringifyJson(repositoryInfo)}`)
if (repositoryInfo != null && repositoryInfo.type === "github") {
const resolvedPublishConfig = await getResolvedPublishConfig(packager, packager.info, {provider: repositoryInfo.type}, arch, false)
if (resolvedPublishConfig != null) {
debug(`getPublishConfigsForUpdateInfo: resolve to publish config ${safeStringifyJson(resolvedPublishConfig)}`)
return [resolvedPublishConfig]
}
}
}
return publishConfigs
}
export async function writeUpdateInfoFiles(updateInfoFileTasks: Array, packager: Packager) {
// zip must be first and zip info must be used for old path/sha512 properties in the update info
updateInfoFileTasks.sort((a, b) => (a.info.files[0].url.endsWith(".zip") ? 0 : 100) - (b.info.files[0].url.endsWith(".zip") ? 0 : 100))
const updateChannelFileToInfo = new Map()
for (const task of updateInfoFileTasks) {
// https://github.com/electron-userland/electron-builder/pull/2994
const key = `${task.file}@${safeStringifyJson(task.publishConfiguration, new Set(["releaseType"]))}`
const existingTask = updateChannelFileToInfo.get(key)
if (existingTask == null) {
updateChannelFileToInfo.set(key, task)
continue
}
existingTask.info.files.push(...task.info.files)
}
const releaseDate = new Date().toISOString()
await BluebirdPromise.map(updateChannelFileToInfo.values(), async task => {
const publishConfig = task.publishConfiguration
if (publishConfig.publishAutoUpdate === false) {
log.debug({
provider: publishConfig.provider,
reason: "publishAutoUpdate is set to false"
private async artifactCreatedWithoutExplicitPublishConfig(event: ArtifactCreated) {
const platformPackager = event.packager
const target = event.target
const publishConfigs = await getPublishConfigs(platformPackager, target == null ? null : target.options, event.arch, this.isPublish)
if (debug.enabled) {
debug(`artifactCreated (isPublish: ${this.isPublish}): ${safeStringifyJson(event, new Set(["packager"]))},\n publishConfigs: ${safeStringifyJson(publishConfigs)}`)
}
const eventFile = event.file
if (publishConfigs == null) {
if (this.isPublish) {
log.debug({file: eventFile, reason: "no publish configs"}, "not published")
}
return
}
if (this.isPublish) {
for (const publishConfig of publishConfigs) {
if (this.cancellationToken.cancelled) {
log.debug({file: event.file, reason: "cancelled"}, "not published")
break
}
}
else if (!isEmptyOrSpaces(process.env.BT_TOKEN)) {
serviceName = "bintray"
}
if (serviceName != null) {
log.debug(null, `detect ${serviceName} as publish provider`)
return [(await getResolvedPublishConfig(platformPackager, packager, {provider: serviceName}, arch, errorIfCannot))!]
}
}
if (publishers == null) {
return []
}
debug(`Explicit publish provider: ${safeStringifyJson(publishers)}`)
return await (BluebirdPromise.map(asArray(publishers), it => getResolvedPublishConfig(platformPackager, packager, typeof it === "string" ? {provider: it} : it, arch, errorIfCannot)) as Promise>)
}