Jonatan Nilsson
47344c5e7a
Some checks failed
continuous-integration/appveyor/branch AppVeyor build failed
Fixed some minor bugs. Will now no longer travel through history but instead stop at last stable version.
43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
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, function(msg) {
|
|
if (msg) {
|
|
runner.log.warn('Got a restart request: ' + msg)
|
|
} else {
|
|
runner.log.warn('Got a restart request with no message or reason')
|
|
}
|
|
process.exit(1)
|
|
})
|
|
await core.init()
|
|
await core.run()
|
|
|
|
return core
|
|
}
|
|
|
|
runner.log = getLog('runner')
|