Skip to content

Commit f0918eb

Browse files
committed
✨ Enable asar
1 parent 3acf70b commit f0918eb

3 files changed

Lines changed: 26 additions & 29 deletions

File tree

app/electron-builder.config.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const config = {
1010
output: 'dist',
1111
buildResources: './assets/',
1212
},
13-
files: ['build/**'],
13+
files: ['build/**', './server/**', './generated/**'],
1414
extraMetadata: {
1515
version: getVersion(),
1616
},
@@ -44,8 +44,9 @@ const config = {
4444
category: 'Audio',
4545
artifactName: `\${name}-linux-\${arch}-${getGithubSafeVersion()}.\${ext}`,
4646
},
47-
extraResources: ['./server/**', './generated/**'],
48-
asar: false,
47+
// extraResources: ['./server/**', './generated/**'],
48+
asar: true,
49+
asarUnpack: ['node_modules/ffmpeg-static/**'],
4950
};
5051

5152
module.exports = config;

app/main_process/server.ts

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import path from 'path';
22
import process from 'process';
33
import fs from 'fs';
4-
import { spawn } from 'child_process';
4+
import { spawn, execFile } from 'child_process';
55
import { app, dialog } from 'electron';
66
import { publishServerInfo, publishServerStderr } from '../ipc/ipc_main';
77
import { ServerInfo } from './types';
@@ -15,8 +15,12 @@ function findServer() {
1515
// In development
1616
path.join(process.cwd(), 'server', 'server'),
1717
path.join(process.cwd(), 'server', 'server.exe'),
18+
19+
path.join('server', 'server'),
20+
path.join('server', 'server.exe'),
1821
];
1922
for (const path of possibilities) {
23+
console.log('trying', path, 'exists:', fs.existsSync(path));
2024
if (fs.existsSync(path)) {
2125
return path;
2226
}
@@ -45,8 +49,7 @@ function getServerProcess() {
4549
return null;
4650
}
4751
console.log('Starting server from', path);
48-
return spawn(path, {
49-
stdio: 'pipe',
52+
return execFile(path, {
5053
env: { ...process.env },
5154
});
5255
}
@@ -73,21 +76,24 @@ function startServer() {
7376
if (!serverProcess) {
7477
return;
7578
}
76-
serverProcess.stdout.on('data', (data: Buffer) => {
79+
serverProcess.stdout?.on('data', (data: Buffer) => {
7780
console.log('server-stdout', data.toString());
78-
try {
79-
const parsed_data: ServerStartingMessage | ServerStartedMessage = JSON.parse(data.toString());
80-
if (parsed_data.msg == 'server_starting') {
81-
publishServerInfo({ state: 'starting', port: parsed_data.port });
82-
} else if (parsed_data.msg == 'server_started') {
83-
publishServerInfo({ state: 'running', token: parsed_data.token });
81+
for (const line of data.toString().trim().split(/\r?\n/)) {
82+
console.log('line', line);
83+
try {
84+
const parsed_data: ServerStartingMessage | ServerStartedMessage = JSON.parse(line);
85+
if (parsed_data.msg == 'server_starting') {
86+
publishServerInfo({ state: 'starting', port: parsed_data.port });
87+
} else if (parsed_data.msg == 'server_started') {
88+
publishServerInfo({ state: 'running', token: parsed_data.token });
89+
}
90+
} catch (e) {
91+
console.log('error decoding stdout json', e);
8492
}
85-
} catch (e) {
86-
console.log('error decoding stdout json', e);
8793
}
8894
});
8995

90-
serverProcess.stderr.on('data', (data: Buffer) => {
96+
serverProcess.stderr?.on('data', (data: Buffer) => {
9197
console.log(`server-stderr: \n${data}`);
9298
publishServerStderr(data.toString());
9399
});

app/src/core/ffmpeg.ts

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { player } from './player';
88
import { WebVtt } from '@audapolis/webvtt-writer';
99

1010
const { FFmpegCommand, FFmpegInput, FFmpegOutput, FilterNode, FilterChain } = Fessonia({
11-
ffmpeg_bin: ffmpegPath,
11+
ffmpeg_bin: ffmpegPath.replace('app.asar', 'app.asar.unpacked'),
1212
});
1313

1414
export function getSubtitleCodec(outputPath: string): string {
@@ -166,7 +166,7 @@ async function runFfmpegWithProgress(
166166
cmd: Fessonia.FFmpegCommand,
167167
onTimeProgress: ProgressCallback
168168
) {
169-
console.debug('ffmpeg commandline: ', getFfmpegComandLine(cmd));
169+
console.debug('ffmpeg commandline: ', cmd.toString());
170170
cmd.on('update', (data: { out_time_ms: number }) => {
171171
onTimeProgress(data.out_time_ms / 1000);
172172
});
@@ -270,6 +270,7 @@ export async function convertToWav(
270270
cmd.on('success', resolve);
271271
cmd.on('error', reject);
272272
});
273+
console.log('running ffmpeg', cmd.toString());
273274
cmd.spawn(true);
274275
console.log('ffmpeg result', await promise);
275276

@@ -292,17 +293,6 @@ export async function copyToMp4(input_path: string): Promise<Buffer> {
292293
return fileData;
293294
}
294295

295-
function getFfmpegComandLine(cmd: Fessonia.FFmpegCommand) {
296-
return (
297-
cmd.toCommand().command +
298-
' ' +
299-
cmd
300-
.toCommand()
301-
.args.map((x) => `'${x}'`)
302-
.join(' ')
303-
);
304-
}
305-
306296
function getTempDir(): Promise<string> {
307297
return new Promise(function (resolve, reject) {
308298
const cacheDir = new AppDirectory({

0 commit comments

Comments
 (0)