Add build info to each package

This commit is contained in:
Thomas Nordquist
2019-03-04 23:04:04 +01:00
parent 5205ed1094
commit 4340515012
4 changed files with 49 additions and 12 deletions

View File

@@ -1,6 +1,8 @@
import * as builder from 'electron-builder'
import * as fs from 'fs'
import * as path from 'path'
const linux: builder.CliOptions = {
const linuxAppImage: builder.CliOptions = {
x64: true,
ia32: true,
armv7l: true,
@@ -20,12 +22,22 @@ const linuxSnap: builder.CliOptions = {
publish: 'always',
}
const win: builder.CliOptions = {
const winPortable: builder.CliOptions = {
x64: true,
ia32: true,
armv7l: false,
arm64: false,
win: ['portable', 'nsis'],
win: ['portable'],
projectDir: './build/clean',
publish: 'always',
}
const winNsis: builder.CliOptions = {
x64: true,
ia32: true,
armv7l: false,
arm64: false,
win: ['nsis'],
projectDir: './build/clean',
publish: 'always',
}
@@ -53,29 +65,40 @@ const mac: builder.CliOptions = {
async function executeBuild() {
switch (process.argv[2]) {
case 'win':
await builder.build(win)
await buildWithOptions(winPortable, { platform: 'win', package: 'portable' })
await buildWithOptions(winNsis, { platform: 'win', package: 'nsis' })
break
case 'appx':
await builder.build(winAppx)
await buildWithOptions(winAppx, { platform: 'win', package: 'appx' })
break
case 'linux':
await builder.build(linux)
await buildWithOptions(linuxAppImage, { platform: 'linux', package: 'AppImage' })
break
case 'snap':
try {
await builder.build(linuxSnap)
await buildWithOptions(linuxSnap, { platform: 'linux', package: 'snap' })
} catch {
// ignore
}
break
case 'mac':
await builder.build(mac)
await buildWithOptions(mac, { platform: 'linux', package: 'dmg' })
break
default:
await builder.build(mac)
await buildWithOptions(mac, { platform: 'linux', package: 'dmg' })
}
}
export interface BuildInfo {
platform: 'win' | 'linux' | 'mac'
package: 'portable' | 'nsis' | 'appx' | 'AppImage' | 'snap' | 'dmg' | 'zip' | 'mas'
}
async function buildWithOptions(options: builder.CliOptions, buildInfo: BuildInfo) {
fs.writeFileSync(path.join(options.projectDir!, 'buildOptions.json'), JSON.stringify(buildInfo))
await builder.build(options)
}
function build() {
try {
executeBuild()