service-core/core/runner.mjs

37 lines
1023 B
JavaScript

import Util from './util.mjs'
import fs from 'fs/promises'
import getLog from './log.mjs'
import GetDB from './db.mjs'
import Core from './core.mjs'
export async function runner(root_import_meta_url, configname = 'config.json', dbname = 'db.json') {
if (!root_import_meta_url) {
throw new Error('ServiceRunner must be called with the full string from "import.meta.url" from a file residing in the root directory')
}
const util = new Util(root_import_meta_url)
let config = configname
if (typeof(config) === 'string') {
let fullpath = util.getPathFromRoot('./' + config)
try {
config = JSON.parse(await fs.readFile(fullpath))
} catch (err) {
throw new Error(`critical error opening ${fullpath}: ${err.message}`)
}
}
const log = getLog(config.name)
runner.log = log
const db = await GetDB(config, log, util.getPathFromRoot('./' + dbname))
const core = new Core(db, util, log)
await core.init()
await core.run()
return core
}
runner.log = getLog('runner')