tabby/scripts/build-windows.mjs

62 lines
2.1 KiB
JavaScript
Raw Permalink Normal View History

2017-05-01 06:01:12 +08:00
#!/usr/bin/env node
2022-06-03 02:15:30 +08:00
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
import { build as builder } from 'electron-builder'
import * as vars from './vars.mjs'
2024-12-25 06:52:14 +08:00
import { execSync } from 'child_process'
2017-05-01 06:01:12 +08:00
2019-08-27 16:33:30 +08:00
const isTag = (process.env.GITHUB_REF || process.env.BUILD_SOURCEBRANCH || '').startsWith('refs/tags/')
2024-12-25 06:52:14 +08:00
const keypair = process.env.SM_KEYPAIR_ALIAS
2019-07-04 20:08:47 +08:00
2022-03-09 13:49:04 +08:00
process.env.ARCH = process.env.ARCH || process.arch
2024-12-25 06:52:14 +08:00
console.log('Signing enabled:', !!keypair)
2017-05-01 06:01:12 +08:00
builder({
2019-07-04 20:08:47 +08:00
dir: true,
win: ['nsis', 'zip'],
2022-03-09 13:49:04 +08:00
arm64: process.env.ARCH === 'arm64',
2019-07-04 20:08:47 +08:00
config: {
extraMetadata: {
version: vars.version,
},
2022-10-01 21:40:50 +08:00
publish: process.env.KEYGEN_TOKEN ? [
vars.keygenConfig,
{
provider: 'github',
channel: `latest-${process.env.ARCH}`,
},
] : undefined,
2024-12-25 06:52:14 +08:00
forceCodeSigning: !!keypair,
win: {
2025-01-23 06:44:36 +08:00
signtoolOptions: {
certificateSha1: process.env.SM_CODE_SIGNING_CERT_SHA1_HASH,
publisherName: process.env.SM_PUBLISHER_NAME,
signingHashAlgorithms: ['sha256'],
sign: keypair ? async function (configuration) {
console.log('Signing', configuration)
if (configuration.path) {
try {
const out = execSync(
`smctl sign --keypair-alias=${keypair} --input "${String(configuration.path)}"`
)
if (out.toString().includes('FAILED')) {
throw new Error(out.toString())
}
console.log(out.toString())
} catch (e) {
console.error(`Failed to sign ${configuration.path}`)
console.error(e)
process.exit(1)
2024-12-25 06:52:14 +08:00
}
}
2025-01-23 06:44:36 +08:00
} : undefined,
},
2024-12-25 06:52:14 +08:00
},
2018-08-10 03:47:38 +08:00
},
2024-12-25 06:52:14 +08:00
2024-12-25 17:42:13 +08:00
publish: (process.env.KEYGEN_TOKEN && isTag) ? 'always' : 'never',
2022-08-30 14:15:29 +08:00
}).catch(e => {
console.error(e)
process.exit(1)
})