mirror of
https://github.com/boku7/Loki
synced 2026-06-06 15:24:27 +00:00
80 lines
2.2 KiB
JavaScript
80 lines
2.2 KiB
JavaScript
const { app, BrowserWindow } = require('electron');
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
const { spawn } = require('child_process');
|
|
|
|
const projectRoot = __dirname;
|
|
const packageJsonPath = path.join(projectRoot, 'package.json');
|
|
|
|
async function getPackageMain() {
|
|
return JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
}
|
|
|
|
async function modifyPackageJsonAndRelaunch() {
|
|
try {
|
|
const initPackageJson = await getPackageMain();
|
|
const originalMain = initPackageJson.main;
|
|
console.log(`originalMain: ${originalMain}`);
|
|
|
|
initPackageJson.main = 'main.js';
|
|
console.log(`lokiMain: ${initPackageJson.main}`);
|
|
|
|
fs.writeFileSync(packageJsonPath, JSON.stringify(initPackageJson, null, 2));
|
|
|
|
console.log('Updated package.json. Relaunching Electron...');
|
|
|
|
const loki = spawn(
|
|
process.execPath,
|
|
['.'],
|
|
{
|
|
cwd: projectRoot,
|
|
detached: true,
|
|
stdio: 'inherit',
|
|
}
|
|
);
|
|
|
|
loki.unref(); // Let it run independently
|
|
|
|
await new Promise(resolve => setTimeout(resolve, 1800));
|
|
|
|
const lokiPackageJson = await getPackageMain();
|
|
lokiPackageJson.main = './out/main.js';
|
|
lokiPackageJson.private = true;
|
|
lokiPackageJson.type = 'module';
|
|
console.log(`Changed packages.json "main" to "${lokiPackageJson.main}"`);
|
|
fs.writeFileSync(packageJsonPath, JSON.stringify(lokiPackageJson, null, 2));
|
|
|
|
console.log('Updated package.json. Relaunching Electron...');
|
|
|
|
// Launch real Cursor app
|
|
const cursor = spawn(
|
|
process.execPath,
|
|
['.'],
|
|
{
|
|
cwd: projectRoot,
|
|
stdio: 'inherit',
|
|
}
|
|
);
|
|
|
|
cursor.on('exit', async (code, signal) => {
|
|
console.log(`Cursor exited with code ${code}, signal ${signal}`);
|
|
try {
|
|
const resetPackageJson = await getPackageMain();
|
|
resetPackageJson.main = originalMain;
|
|
delete resetPackageJson.private;
|
|
delete resetPackageJson.type;
|
|
console.log(`Restored "main" to "${resetPackageJson.main}"`);
|
|
fs.writeFileSync(packageJsonPath, JSON.stringify(resetPackageJson, null, 2));
|
|
} catch (err) {
|
|
console.error('Failed to restore original package.json:', err);
|
|
}
|
|
app.quit();
|
|
});
|
|
|
|
} catch (error) {
|
|
console.log(`[!]Error : ${error.stack}`);
|
|
}
|
|
}
|
|
|
|
modifyPackageJsonAndRelaunch();
|