Enable isolated Capsule Local automatic update testing
This commit is contained in:
@ -18,8 +18,13 @@ export function validateFeedUrl(value) {
|
||||
}
|
||||
|
||||
/** Return a Windows build config; public releases fail closed without signing. */
|
||||
export function createBuildConfig({ release = false, env = process.env } = {}) {
|
||||
const url = release ? validateFeedUrl(env.CAPSULE_UPDATE_URL) : null
|
||||
export function createBuildConfig({ release = false, testUpdates = false, bootstrap = false, env = process.env } = {}) {
|
||||
if (release && testUpdates) throw new Error('Test updates cannot be combined with a public release.')
|
||||
if (bootstrap && !testUpdates) throw new Error('Bootstrap requires test updates.')
|
||||
const url = testUpdates ? validateFeedUrl(env.CAPSULE_TEST_UPDATE_URL) : release ? validateFeedUrl(env.CAPSULE_UPDATE_URL) : null
|
||||
if (testUpdates && !new URL(url).pathname.endsWith('/capsule/testfeed/')) {
|
||||
throw new Error('Test updates require a separate /capsule/testfeed/ URL.')
|
||||
}
|
||||
const publisher = env.CAPSULE_PUBLISHER_NAME?.trim()
|
||||
if (release && !publisher) {
|
||||
throw new Error('CAPSULE_PUBLISHER_NAME must match the signing certificate subject CN.')
|
||||
@ -31,7 +36,7 @@ export function createBuildConfig({ release = false, env = process.env } = {}) {
|
||||
appId: release ? APP_ID : `${APP_ID}.local`,
|
||||
productName: release ? 'Capsule' : 'Capsule Local',
|
||||
executableName: release ? 'Capsule' : 'Capsule Local',
|
||||
directories: { output: release ? 'dist/release' : 'dist/local' },
|
||||
directories: { output: release ? 'dist/release' : testUpdates ? bootstrap ? 'dist/test-bootstrap' : 'dist/test' : 'dist/local' },
|
||||
files: ['out/**/*', 'package.json'],
|
||||
asar: true,
|
||||
npmRebuild: false,
|
||||
@ -39,12 +44,13 @@ export function createBuildConfig({ release = false, env = process.env } = {}) {
|
||||
extraMetadata: {
|
||||
// Keep the release userData path compatible with the original dev app.
|
||||
name: release ? 'capsule' : 'capsule-local',
|
||||
capsuleUpdates: { enabled: release }
|
||||
...(bootstrap ? { version: '0.1.0' } : {}),
|
||||
capsuleUpdates: { enabled: release || testUpdates, testing: testUpdates }
|
||||
},
|
||||
artifactName: release ? 'Capsule-${version}-${arch}-Setup.${ext}' : 'Capsule-Local-${version}-${arch}-Setup.${ext}',
|
||||
artifactName: release || testUpdates ? 'Capsule-${version}-${arch}-Setup.${ext}' : 'Capsule-Local-${version}-${arch}-Setup.${ext}',
|
||||
win: {
|
||||
target: [{ target: 'nsis', arch: ['x64'] }],
|
||||
verifyUpdateCodeSignature: true,
|
||||
verifyUpdateCodeSignature: !testUpdates,
|
||||
signExecutable: release,
|
||||
...(release ? { signtoolOptions: {
|
||||
publisherName: publisher,
|
||||
@ -60,6 +66,6 @@ export function createBuildConfig({ release = false, env = process.env } = {}) {
|
||||
runAfterFinish: false,
|
||||
shortcutName: release ? 'Capsule' : 'Capsule Local'
|
||||
},
|
||||
publish: release ? [{ provider: 'generic', url, channel: 'latest', useMultipleRangeRequest: false }] : null
|
||||
publish: release || testUpdates ? [{ provider: 'generic', url, channel: 'latest', useMultipleRangeRequest: false }] : null
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user