53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
// scripts/afterPack.js
|
||
const fs = require('fs');
|
||
const path = require('path');
|
||
const { execSync } = require('child_process');
|
||
const { log, warn } = require('./logger');
|
||
|
||
module.exports = async function afterPack(context) {
|
||
const { appOutDir, electronPlatformName } = context;
|
||
const plat = (electronPlatformName || '').toLowerCase();
|
||
|
||
const reticulumDir = path.join(appOutDir, 'resources', 'reticulum');
|
||
const reticulumRuntimeDir = path.join(
|
||
appOutDir,
|
||
'resources',
|
||
'reticulum-runtime'
|
||
);
|
||
if (fs.existsSync(reticulumRuntimeDir)) {
|
||
log('🔧 Removing dev-only reticulum-runtime from packaged app…');
|
||
fs.rmSync(reticulumRuntimeDir, { recursive: true, force: true });
|
||
}
|
||
|
||
const reticulumExecutables = ['rnsd', 'presence_bridge'];
|
||
if (plat.includes('linux') || plat.includes('mac') || plat.includes('darwin')) {
|
||
for (const name of reticulumExecutables) {
|
||
const exePath = path.join(reticulumDir, name);
|
||
if (!fs.existsSync(exePath)) continue;
|
||
log(`🔧 Marking reticulum/${name} executable…`);
|
||
try {
|
||
execSync(`chmod 755 "${exePath}"`, { stdio: 'inherit' });
|
||
log(`✅ reticulum/${name} permissions set.`);
|
||
} catch (e) {
|
||
warn(`⚠️ chmod reticulum/${name} failed:`, e.message);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (!plat.includes('linux')) return;
|
||
|
||
const chromeSandbox = path.join(appOutDir, 'chrome-sandbox');
|
||
if (!fs.existsSync(chromeSandbox)) {
|
||
log('ℹ️ chrome-sandbox not found, skipping.');
|
||
return;
|
||
}
|
||
|
||
log('🔧 Fixing chrome-sandbox permissions...');
|
||
try {
|
||
execSync(`chmod 4755 "${chromeSandbox}"`, { stdio: 'inherit' });
|
||
log('✅ chrome-sandbox permissions fixed.');
|
||
} catch (e) {
|
||
warn('⚠️ Failed to set chrome-sandbox permissions:', e.message);
|
||
}
|
||
};
|