main.ts

1.1 KB · raw

1import { join } from "node:path";2import { openBucket } from "./bucket/reader.ts";3import { startSyncLoop } from "./bucket/sync.ts";4import { createApp } from "./server/app.ts";5import { startBackupLoop } from "./server/backup.ts";6import { CONFIG_FILE, ConfigError, loadConfig } from "./server/config.ts";7import { openKeprDb } from "./server/db.ts";8import { startMailLoop } from "./server/mail.ts";910try {11	const config = await loadConfig(CONFIG_FILE);12	const kepr = openKeprDb(config.dataDir);13	// One bucket for the sync loop and the app, so settings saved in the console reach both.14	const bucket = openBucket(config.bucket);15	startBackupLoop(kepr, config.dataDir);16	startMailLoop(kepr, config);17	startSyncLoop({18		bucket,19		kepr,20		mirrorDir: join(config.dataDir, "mirror"),21		tarballDir: join(config.dataDir, "tarballs"),22	});23	// Bun.serve reads the port from $PORT (default 3000).24	const server = Bun.serve({ fetch: createApp(config, kepr, bucket).fetch });25	console.log(`kepr listening on ${server.url}`);26} catch (error) {27	if (!(error instanceof ConfigError)) throw error;28	console.error(`kepr: ${error.message}`);29	process.exit(1);30}