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'));
|
fs.copyFileSync(mod_path, path_.join(mod_package_dir, 'main.js'));
|
||||||
} else {
|
} 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, {
|
fs.cpSync(mod_path, mod_package_dir, {
|
||||||
recursive: true,
|
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 fs = require('fs');
|
||||||
const path_ = require('path');
|
const path_ = require('path');
|
||||||
|
|
||||||
const data = JSON.stringify({
|
const data = JSON.stringify({
|
||||||
name,
|
name,
|
||||||
version: '1.0.0',
|
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);
|
fs.writeFileSync(path_.join(mod_path, 'package.json'), data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,6 +34,12 @@ class BootLogger {
|
|||||||
...args,
|
...args,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
warn (...args) {
|
||||||
|
console.log(
|
||||||
|
'\x1B[33;1m[BOOT/WARN]\x1B[0m',
|
||||||
|
...args,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
Loading…
Reference in New Issue
Block a user