28 lines
946 B
JavaScript
28 lines
946 B
JavaScript
import { createRequire } from 'node:module';
|
|||
|
|
import { createInterface } from 'node:readline';
|
||
|
|
|
||
|
|
const require = createRequire(import.meta.url);
|
||
|
|
const Database = require('better-sqlite3');
|
||
|
|
|
||
|
|
const [mode, payloadJson] = process.argv.slice(2);
|
||
|
|
const payload = JSON.parse(payloadJson || '{}');
|
||
|
|
|
||
|
|
if (mode === 'holder') {
|
||
|
|
const db = new Database(payload.lockPath);
|
||
|
|
db.pragma('busy_timeout = 0');
|
||
|
|
db.exec('BEGIN IMMEDIATE');
|
||
|
|
process.stdout.write('READY\n');
|
||
|
|
const input = createInterface({ input: process.stdin });
|
||
|
|
await new Promise(resolve => input.once('line', resolve));
|
||
|
|
db.exec('ROLLBACK');
|
||
|
|
db.close();
|
||
|
|
input.close();
|
||
|
|
} else if (mode === 'build') {
|
||
|
|
const { buildIndex } = await import('../out/main/indexer.js');
|
||
|
|
process.stdout.write('STARTING\n');
|
||
|
|
const result = buildIndex(payload.options);
|
||
|
|
process.stdout.write(`RESULT ${JSON.stringify(result)}\n`);
|
||
|
|
} else {
|
||
|
|
throw new Error(`Unknown concurrency child mode: ${mode}`);
|
||
|
|
}
|