diff --git a/post-install.js b/post-install.js index 2797812e7..3b07be687 100644 --- a/post-install.js +++ b/post-install.js @@ -2,8 +2,32 @@ * Scripts to be done before starting the server for the first time. */ const fs = require('fs'); +const path = require('path'); const crypto = require('crypto'); +/** + * Creates the default config files if they don't exist yet. + */ +function createDefaultFiles() { + const files = { + settings: './public/settings.json', + bg_load: './public/css/bg_load.css', + config: './config.conf', + }; + + for (const file of Object.values(files)) { + try { + if (!fs.existsSync(file)) { + const defaultFilePath = path.join('./default', path.parse(file).base); + fs.copyFileSync(defaultFilePath, file); + console.log(`Created default file: ${file}`); + } + } catch (error) { + console.error(`FATAL: Could not write default file: ${file}`, error); + } + } +} + /** * Returns the MD5 hash of the given data. * @param {Buffer} data Input data @@ -48,7 +72,9 @@ function copyWasmFiles() { } try { - // 1. Copy transformers WASM binaries from node_modules + // 1. Create default config files + createDefaultFiles(); + // 2. Copy transformers WASM binaries from node_modules copyWasmFiles(); } catch (error) { console.error(error); diff --git a/server.js b/server.js index d0cb96d0e..1fe1077ac 100644 --- a/server.js +++ b/server.js @@ -61,9 +61,6 @@ const _ = require('lodash'); util.inspect.defaultOptions.maxArrayLength = null; util.inspect.defaultOptions.maxStringLength = null; -// Create files before running anything else -createDefaultFiles(); - // local library imports const basicAuthMiddleware = require('./src/middleware/basicAuthMiddleware'); const characterCardParser = require('./src/character-card-parser.js'); @@ -73,26 +70,6 @@ const statsHelpers = require('./statsHelpers.js'); const { writeSecret, readSecret, readSecretState, migrateSecrets, SECRET_KEYS, getAllSecrets } = require('./src/secrets'); const { delay, getVersion } = require('./src/util'); -function createDefaultFiles() { - const files = { - settings: 'public/settings.json', - bg_load: 'public/css/bg_load.css', - config: 'config.conf', - }; - - for (const file of Object.values(files)) { - try { - if (!fs.existsSync(file)) { - const defaultFilePath = path.join('default', path.parse(file).base); - fs.copyFileSync(defaultFilePath, file); - console.log(`Created default file: ${file}`); - } - } catch (error) { - console.error(`FATAL: Could not write default file: ${file}`, error); - } - } -} - // Work around a node v20.0.0, v20.1.0, and v20.2.0 bug. The issue was fixed in v20.3.0. // https://github.com/nodejs/node/issues/47822#issuecomment-1564708870 // Safe to remove once support for Node v20 is dropped.