UNPKG

@syngrisi/syngrisi

Version:
79 lines (70 loc) 2.75 kB
#!/usr/bin/env node import app from './app'; import v8 from 'v8'; import { config } from '@config'; import log from '@logger'; import { colors } from '@utils/colors'; import connectDB from '@lib/connectDb'; import { createTempDir, createBasicUsers, createInitialSettings, createTestsUsers } from '@lib/startup'; import { autoCleanupSchedulers } from '@lib/schedulers/autoCleanupSchedulers'; import { runMigrations } from '@lib/migrations'; import { env } from '@env'; import { errMsg } from './utils'; import { appSettings } from '@settings'; import { initPlugins } from './plugins'; import { adminDataJobService } from './services'; const logMeta = { scope: 'entrypoint' }; log.info('Connect to database', logMeta); connectDB().then(async () => { log.debug('run init jobs', logMeta); // const startUp = await import('@lib/startup'); await appSettings.init(); await runMigrations(); createTempDir(); await createBasicUsers(); await createInitialSettings(); if (config.testMode) await createTestsUsers(); await adminDataJobService.initialize(); // Initialize plugin system log.info('Initializing plugin system', logMeta); await initPlugins(); const server = app.listen(config.port, () => { log.info( colors.green(`Syngrisi version: ${colors.blue((config.version))} started at http://${config.host}:${config.port}`), logMeta ); log.info( colors.whiteBright('Press <Ctrl+C> to exit'), logMeta ); // Skip schedulers in test mode unless explicitly enabled if (!config.testMode || env.SYNGRISI_ENABLE_SCHEDULERS_IN_TEST_MODE) { autoCleanupSchedulers.checks.start(); autoCleanupSchedulers.logs.start(); } else { log.debug('Skipping auto-cleanup schedulers in test mode', logMeta); } }); // exit events const onCloseSignal = () => { log.info('sigint received, shutting down'); if (!config.testMode || env.SYNGRISI_ENABLE_SCHEDULERS_IN_TEST_MODE) { autoCleanupSchedulers.checks.stop(); autoCleanupSchedulers.logs.stop(); } if (config.codeCoverage && env.SYNGRISI_V8_COVERAGE_ON_EXIT) { log.info('take coverage'); v8.takeCoverage(); v8.stopCoverage(); } server.close(() => { log.info('server closed 👋'); process.exit(); }); setTimeout(() => process.exit(1), 10000).unref(); // Force shutdown after 10s }; process.on('SIGINT', onCloseSignal); process.on('SIGTERM', onCloseSignal); }).catch(err => { log.error(`Could not connect to MongoDB: ${errMsg(err)} `); process.exit(1); });