1
0
silverbullet/server/server.ts

52 lines
1.2 KiB
TypeScript
Raw Normal View History

2022-03-27 07:55:29 +00:00
#!/usr/bin/env node
import express from "express";
import http from "http";
import yargs from "yargs";
2022-03-27 07:55:29 +00:00
import {hideBin} from "yargs/helpers";
import {SilverBulletHooks} from "../common/manifest";
2022-03-31 15:25:34 +00:00
import {ExpressServer} from "./api_server";
2022-03-27 09:31:12 +00:00
import {DiskPlugLoader} from "../plugos/plug_loader";
import {System} from "../plugos/system";
let args = yargs(hideBin(process.argv))
2022-03-27 09:26:13 +00:00
.option("port", {
type: "number",
default: 3000,
})
.parse();
2022-03-27 07:55:29 +00:00
if (!args._.length) {
2022-03-31 15:25:34 +00:00
console.error("Usage: silverbullet <path-to-pages>");
2022-03-29 15:02:28 +00:00
process.exit(1);
2022-03-27 07:55:29 +00:00
}
2022-03-21 14:21:34 +00:00
const pagesPath = args._[0] as string;
const app = express();
const server = http.createServer(app);
2022-03-23 14:41:12 +00:00
const system = new System<SilverBulletHooks>("server");
2022-03-21 14:21:34 +00:00
const port = args.port;
const distDir = `${__dirname}/../webapp`;
app.use("/", express.static(distDir));
2022-03-21 14:21:34 +00:00
const expressServer = new ExpressServer(app, pagesPath, distDir, system);
expressServer
2022-03-27 09:26:13 +00:00
.init()
.then(async () => {
let plugLoader = new DiskPlugLoader(
system,
`${__dirname}/../../plugs/dist`
);
await plugLoader.loadPlugs();
plugLoader.watcher();
2022-03-29 10:13:46 +00:00
server.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
2022-03-27 09:26:13 +00:00
})
.catch((e) => {
console.error(e);
});