init
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
// About me: Loads the built bundle the way Vortex does - require() with a stubbed
|
||||
// `vortex-api` - and drives registerGame/registerInstaller against a fake context.
|
||||
// This catches packaging mistakes (bad export shape, missing external) that unit
|
||||
// tests on the source cannot see. Run with: node scripts/smoke-load.cjs
|
||||
const Module = require('node:module');
|
||||
const path = require('node:path');
|
||||
|
||||
const originalLoad = Module._load;
|
||||
Module._load = function patchedLoad(request, parent, isMain) {
|
||||
if (request === 'vortex-api') {
|
||||
return { log: (level, message) => console.log(` [vortex-api ${level}] ${message}`) };
|
||||
}
|
||||
return originalLoad.call(this, request, parent, isMain);
|
||||
};
|
||||
|
||||
const extension = require(path.resolve(__dirname, '../dist/index.js'));
|
||||
const main = extension.default ?? extension;
|
||||
|
||||
const registered = { games: [], installers: [] };
|
||||
const context = {
|
||||
registerGame: (game) => registered.games.push(game),
|
||||
registerInstaller: (id, priority, testSupported, install) =>
|
||||
registered.installers.push({ id, priority, testSupported, install }),
|
||||
once: (cb) => cb(),
|
||||
api: {},
|
||||
};
|
||||
|
||||
const result = main(context);
|
||||
console.log('main() returned:', result);
|
||||
|
||||
const game = registered.games[0];
|
||||
console.log('game id:', game.id);
|
||||
console.log('executable:', game.executable());
|
||||
console.log('queryModPath:', JSON.stringify(game.queryModPath('')));
|
||||
console.log('queryPath():', game.queryPath());
|
||||
|
||||
const installer = registered.installers[0];
|
||||
installer
|
||||
.testSupported(['a.archive'], game.id)
|
||||
.then((supported) => {
|
||||
console.log('testSupported:', JSON.stringify(supported));
|
||||
return installer.install(
|
||||
['Cool Mod v1\\archive\\pc\\mod\\cool.archive', 'Cool Mod v1\\readme.txt'],
|
||||
'Z:\\staging\\Cool Mod-1234.installing',
|
||||
game.id,
|
||||
);
|
||||
})
|
||||
.then((res) => {
|
||||
console.log('install instructions:', JSON.stringify(res.instructions, null, 2));
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error('smoke failed:', err);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
Reference in New Issue
Block a user