mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-08 17:06:15 -08:00
96 lines
2.4 KiB
JavaScript
96 lines
2.4 KiB
JavaScript
const linuxAfterPack = require('./linux-after-pack.cjs');
|
|
const {
|
|
validatePackagedEmbeddedMpv,
|
|
} = require('./embedded-mpv-macos.cjs');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
function log(message) {
|
|
console.log(` - ${message}`);
|
|
}
|
|
|
|
function isTruthy(value) {
|
|
return ['1', 'true', 'yes', 'on'].includes(
|
|
String(value ?? '')
|
|
.trim()
|
|
.toLowerCase()
|
|
);
|
|
}
|
|
|
|
function copyEmbeddedMpvNativeOutput(resourceDir, projectDir) {
|
|
const sourceDir = path.join(
|
|
projectDir,
|
|
'dist',
|
|
'apps',
|
|
'electron-backend',
|
|
'native'
|
|
);
|
|
|
|
if (!fs.existsSync(sourceDir)) {
|
|
return;
|
|
}
|
|
|
|
const destinationDir = path.join(
|
|
resourceDir,
|
|
'app.asar.unpacked',
|
|
'electron-backend',
|
|
'native'
|
|
);
|
|
|
|
fs.rmSync(destinationDir, { recursive: true, force: true });
|
|
fs.cpSync(sourceDir, destinationDir, { recursive: true });
|
|
}
|
|
|
|
async function afterPackHook(params) {
|
|
await linuxAfterPack(params);
|
|
|
|
if (params.electronPlatformName !== 'darwin') {
|
|
return;
|
|
}
|
|
|
|
const requireEmbeddedMpv = isTruthy(
|
|
process.env.IPTVNATOR_REQUIRE_EMBEDDED_MPV
|
|
);
|
|
log(
|
|
requireEmbeddedMpv
|
|
? 'validating required embedded MPV macOS runtime links'
|
|
: 'validating optional embedded MPV macOS runtime links'
|
|
);
|
|
const appPath = params.appOutDir.endsWith('.app')
|
|
? params.appOutDir
|
|
: fs
|
|
.readdirSync(params.appOutDir)
|
|
.find((entry) => entry.endsWith('.app'));
|
|
const resourceDir = appPath
|
|
? path.join(
|
|
params.appOutDir.endsWith('.app')
|
|
? params.appOutDir
|
|
: path.join(params.appOutDir, appPath),
|
|
'Contents',
|
|
'Resources'
|
|
)
|
|
: params.appOutDir;
|
|
|
|
copyEmbeddedMpvNativeOutput(
|
|
resourceDir,
|
|
params.packager.projectDir ?? process.cwd()
|
|
);
|
|
|
|
const errors = validatePackagedEmbeddedMpv(resourceDir, {
|
|
required: requireEmbeddedMpv,
|
|
});
|
|
|
|
if (errors.length > 0) {
|
|
throw new Error(
|
|
[
|
|
'Embedded MPV macOS package validation failed.',
|
|
...errors.map((error) => `- ${error}`),
|
|
].join('\n')
|
|
);
|
|
}
|
|
|
|
log('embedded MPV macOS runtime links validated');
|
|
}
|
|
|
|
module.exports = afterPackHook;
|