1 | #!/usr/bin/env node
|
2 | import * as server from "./server";
|
3 | import logger from "./lib/logger";
|
4 | import * as program from "commander";
|
5 | import { ClientConfig, load } from "./lib/clientConfig";
|
6 | program.version(require("../package.json").version);
|
7 |
|
8 | const projectPath = process.cwd();
|
9 |
|
10 | program.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 |
|
27 | program.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 |
|
46 | program.on("--help", () => process.exit(1));
|
47 |
|
48 | program.on("command:*", action => {
|
49 | console.log(`Unknown command '${action}'`);
|
50 | return program.help();
|
51 | });
|
52 |
|
53 | program.parse(process.argv);
|
54 |
|
55 | if (!process.argv.slice(2).length) {
|
56 | program.help();
|
57 | }
|