From 58f34b948a3475b40aecab7e92b82d7c60391441 Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Fri, 1 Nov 2024 16:13:00 -0400 Subject: [PATCH] dev: simplify module/extension setup --- src/backend/src/Kernel.js | 10 ++++++++++ src/backend/src/boot/RuntimeEnvironment.js | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/src/backend/src/Kernel.js b/src/backend/src/Kernel.js index cec1b065..4acd43fd 100644 --- a/src/backend/src/Kernel.js +++ b/src/backend/src/Kernel.js @@ -25,6 +25,7 @@ const { hideBin } = require('yargs/helpers'); const { Extension } = require("./Extension"); const { ExtensionModule } = require("./ExtensionModule"); const { spawn } = require("node:child_process"); +const { quot } = require("./util/strutil"); class Kernel extends AdvancedBase { constructor ({ entry_path } = {}) { @@ -226,6 +227,15 @@ class Kernel extends AdvancedBase { const mod_paths = this.environment.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); for ( const mod_dirname of mod_dirnames ) { let mod_path = path_.join(mods_dirpath, mod_dirname); diff --git a/src/backend/src/boot/RuntimeEnvironment.js b/src/backend/src/boot/RuntimeEnvironment.js index 339cca08..0b7c97fc 100644 --- a/src/backend/src/boot/RuntimeEnvironment.js +++ b/src/backend/src/boot/RuntimeEnvironment.js @@ -341,6 +341,13 @@ class RuntimeEnvironment extends AdvancedBase { const 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 ( config.mod_directories ) { for ( const dir of config.mod_directories ) {