dev: simplify module/extension setup

This commit is contained in:
KernelDeimos 2024-11-01 16:13:00 -04:00
parent 7569e8a703
commit 58f34b948a
2 changed files with 17 additions and 0 deletions

View File

@ -25,6 +25,7 @@ const { hideBin } = require('yargs/helpers');
const { Extension } = require("./Extension"); const { Extension } = require("./Extension");
const { ExtensionModule } = require("./ExtensionModule"); const { ExtensionModule } = require("./ExtensionModule");
const { spawn } = require("node:child_process"); const { spawn } = require("node:child_process");
const { quot } = require("./util/strutil");
class Kernel extends AdvancedBase { class Kernel extends AdvancedBase {
constructor ({ entry_path } = {}) { constructor ({ entry_path } = {}) {
@ -226,6 +227,15 @@ class Kernel extends AdvancedBase {
const mod_paths = this.environment.mod_paths; const mod_paths = this.environment.mod_paths;
for ( const mods_dirpath of mod_paths ) { for ( const mods_dirpath of mod_paths ) {
if ( ! fs.existsSync(mods_dirpath) ) {
this.services.logger.error(
`mod directory not found: ${quot(mods_dirpath)}; skipping...`
);
// intentional delay so error is seen
this.services.logger.info('boot will continue in 4 seconds');
await new Promise(rslv => setTimeout(rslv, 4000));
continue;
}
const mod_dirnames = fs.readdirSync(mods_dirpath); const mod_dirnames = fs.readdirSync(mods_dirpath);
for ( const mod_dirname of mod_dirnames ) { for ( const mod_dirname of mod_dirnames ) {
let mod_path = path_.join(mods_dirpath, mod_dirname); let mod_path = path_.join(mods_dirpath, mod_dirname);

View File

@ -341,6 +341,13 @@ class RuntimeEnvironment extends AdvancedBase {
const mod_paths = []; const mod_paths = [];
environment.mod_paths = mod_paths; environment.mod_paths = mod_paths;
// Trying this as a default for now...
if ( ! config.mod_directories ) {
config.mod_directories = [
'{source}/../mods/mods_enabled',
];
}
// If configured, add a user-specified mod path // If configured, add a user-specified mod path
if ( config.mod_directories ) { if ( config.mod_directories ) {
for ( const dir of config.mod_directories ) { for ( const dir of config.mod_directories ) {