mirror of
https://github.com/HeyPuter/puter.git
synced 2025-02-02 23:28:39 +08:00
fix: improve backend mod error handling
This commit is contained in:
parent
f27c824682
commit
fe1a4cfd4d
@ -260,6 +260,38 @@ class Kernel extends AdvancedBase {
|
||||
});
|
||||
fs.copyFileSync(mod_path, path_.join(mod_package_dir, 'main.js'));
|
||||
} else {
|
||||
if ( ! fs.existsSync(path_.join(mod_path, 'package.json')) ) {
|
||||
// Expect main.js or index.js to exist
|
||||
const options = ['main.js', 'index.js'];
|
||||
let entry_file = null;
|
||||
for ( const option of options ) {
|
||||
if ( fs.existsSync(path_.join(mod_path, option)) ) {
|
||||
entry_file = option;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( ! entry_file ) {
|
||||
// If directory is empty, we'll just skip it
|
||||
if ( fs.readdirSync(mod_path).length === 0 ) {
|
||||
this.bootLogger.warn(`Empty mod directory ${quot(mod_path)}; skipping...`);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Other wise, we'll throw an error
|
||||
this.bootLogger.error(`Expected main.js or index.js in ${quot(mod_path)}`);
|
||||
if ( ! process.env.SKIP_INVALID_MODS ) {
|
||||
this.bootLogger.error(`Set SKIP_INVALID_MODS=1 (environment variable) to run anyway.`);
|
||||
process.exit(1);
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
this.create_mod_package_json(mod_package_dir, {
|
||||
name: mod_name,
|
||||
entry: entry_file,
|
||||
});
|
||||
}
|
||||
fs.cpSync(mod_path, mod_package_dir, {
|
||||
recursive: true,
|
||||
});
|
||||
@ -344,16 +376,18 @@ class Kernel extends AdvancedBase {
|
||||
|
||||
}
|
||||
|
||||
create_mod_package_json (mod_path, { name }) {
|
||||
create_mod_package_json (mod_path, { name, entry }) {
|
||||
const fs = require('fs');
|
||||
const path_ = require('path');
|
||||
|
||||
const data = JSON.stringify({
|
||||
name,
|
||||
version: '1.0.0',
|
||||
main: 'main.js',
|
||||
main: entry ?? 'main.js',
|
||||
});
|
||||
|
||||
console.log('WRITING TO', path_.join(mod_path, 'package.json'));
|
||||
|
||||
fs.writeFileSync(path_.join(mod_path, 'package.json'), data);
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,12 @@ class BootLogger {
|
||||
...args,
|
||||
);
|
||||
}
|
||||
warn (...args) {
|
||||
console.log(
|
||||
'\x1B[33;1m[BOOT/WARN]\x1B[0m',
|
||||
...args,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
Loading…
Reference in New Issue
Block a user