25 lines
1.2 KiB
JavaScript
25 lines
1.2 KiB
JavaScript
const fs = require('node:fs');
|
|
const path = require('node:path');
|
|
const vm = require('node:vm');
|
|
const assert = require('node:assert/strict');
|
|
const source = fs.readFileSync(process.argv[2] || path.join(__dirname, '../huobao-source/desktop/dist/main.js'),'utf8');
|
|
function extract(name) {
|
|
const start = source.indexOf(`function ${name}(`);
|
|
return source.slice(start,source.indexOf('\n}',start)+2);
|
|
}
|
|
let config = null;
|
|
const context = vm.createContext({
|
|
path5:path.win32,
|
|
process:{resourcesPath:'D:\\web\\dj\\HuobaoDrama\\resources'},
|
|
import_electron3:{app:{isPackaged:true,getPath:()=> 'C:\\Users\\pc\\AppData\\Roaming\\HuobaoDrama'}},
|
|
fs5:{existsSync:()=>config!==null,readFileSync:()=>config,mkdirSync:()=>{}},
|
|
console:{warn:()=>{}}
|
|
});
|
|
vm.runInContext(`const STORAGE_CONFIG_FILE='storage-config.json';${extract('storageConfigPath')}\n${extract('loadStorageConfig')}\nthis.load=loadStorageConfig;`,context);
|
|
assert.equal(context.load(),'D:\\web\\dj\\huobao-data');
|
|
config='{bad json';
|
|
assert.equal(context.load(),'D:\\web\\dj\\huobao-data');
|
|
config=JSON.stringify({version:1,dataDir:'E:\\MyDramaData'});
|
|
assert.equal(context.load(),'E:\\MyDramaData');
|
|
console.log('Persistent data: fresh profile, invalid profile config and custom directory passed.');
|