* fix(ffmpeg): require bundled ffprobe directory * ci(build): upload artifacts on PR * fix(download): allow embed thumbnail on macos
64 lines
1.7 KiB
JavaScript
64 lines
1.7 KiB
JavaScript
const { execFileSync } = require('node:child_process')
|
|
const fs = require('node:fs')
|
|
const path = require('node:path')
|
|
|
|
const BINARIES = [
|
|
'yt-dlp_macos',
|
|
path.join('ffmpeg', 'ffmpeg'),
|
|
path.join('ffmpeg', 'ffprobe'),
|
|
'deno'
|
|
]
|
|
|
|
const findAppBundle = (appOutDir) => {
|
|
const entries = fs.readdirSync(appOutDir)
|
|
const app = entries.find((entry) => entry.endsWith('.app'))
|
|
return app ? path.join(appOutDir, app) : null
|
|
}
|
|
|
|
const resolveSigningIdentity = () =>
|
|
process.env.CSC_NAME || process.env.APPLE_SIGNING_IDENTITY || '-'
|
|
|
|
const signBinary = (targetPath, entitlementsPath) => {
|
|
const identity = resolveSigningIdentity()
|
|
const args = ['--force', '--sign', identity, '--entitlements', entitlementsPath]
|
|
|
|
if (identity !== '-') {
|
|
args.push('--options', 'runtime', '--timestamp')
|
|
}
|
|
|
|
args.push(targetPath)
|
|
execFileSync('codesign', args, { stdio: 'inherit' })
|
|
}
|
|
|
|
exports.default = async function afterPack(context) {
|
|
if (context.electronPlatformName !== 'darwin') {
|
|
return
|
|
}
|
|
|
|
const appBundle = findAppBundle(context.appOutDir)
|
|
if (!appBundle) {
|
|
console.warn('afterPack: No .app bundle found, skipping tool signing.')
|
|
return
|
|
}
|
|
|
|
const resourcesPath = path.join(
|
|
appBundle,
|
|
'Contents',
|
|
'Resources',
|
|
'app.asar.unpacked',
|
|
'resources'
|
|
)
|
|
|
|
const entitlementsPath = path.resolve(__dirname, 'entitlements.mac.plist')
|
|
|
|
for (const binary of BINARIES) {
|
|
const targetPath = path.join(resourcesPath, binary)
|
|
if (!fs.existsSync(targetPath)) {
|
|
console.warn(`afterPack: Missing ${binary}, skipping.`)
|
|
continue
|
|
}
|
|
console.log(`afterPack: Signing ${binary} with entitlements.`)
|
|
signBinary(targetPath, entitlementsPath)
|
|
}
|
|
}
|