UNPKG

1.42 kBPlain TextView Raw
1#!/usr/bin/env node
2import * as server from "./server";
3import logger from "./lib/logger";
4import * as program from "commander";
5import { ClientConfig, load } from "./lib/clientConfig";
6program.version(require("../package.json").version);
7
8const projectPath = process.cwd();
9
10program.command("start").action(async () => {
11 try {
12 const serverInstance = await server.start(projectPath);
13 const gracefulShutdown = async () => {
14 logger.info("Stopping server...");
15 await serverInstance.stop();
16 process.exit(0);
17 };
18
19 process.once("SIGINT", gracefulShutdown);
20 process.once("SIGTERM", gracefulShutdown);
21 } catch (e) {
22 logger.error(e);
23 process.exit(1);
24 }
25});
26
27program.command("compile").action(async () => {
28 process.env.NODE_ENV = process.env.NODE_ENV || "production";
29
30 try {
31 const assets = await import("@dashbling/build-support/assets");
32 const clientConfig = load(projectPath);
33
34 const stats: any = await assets.compile(clientConfig);
35 console.log(stats.toString({ colors: true }));
36
37 if (stats.hasErrors()) {
38 process.exit(1);
39 }
40 } catch (e) {
41 console.error(e);
42 process.exit(1);
43 }
44});
45
46program.on("--help", () => process.exit(1));
47
48program.on("command:*", action => {
49 console.log(`Unknown command '${action}'`);
50 return program.help();
51});
52
53program.parse(process.argv);
54
55if (!process.argv.slice(2).length) {
56 program.help();
57}