1 | #!/usr/bin/env node
|
2 | "use strict";
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 | Object.defineProperty(exports, "__esModule", { value: true });
|
25 | const express = require("express");
|
26 | const loader_1 = require("../runtime/loader");
|
27 | const manifest_1 = require("../runtime/manifest");
|
28 | function printUsageAndExit() {
|
29 | console.error(`
|
30 | Usage: firebase-functions [functionsDir]
|
31 |
|
32 | Arguments:
|
33 | - functionsDir: Directory containing source code for Firebase Functions.
|
34 | `);
|
35 | process.exit(1);
|
36 | }
|
37 | let functionsDir = ".";
|
38 | const args = process.argv.slice(2);
|
39 | if (args.length > 1) {
|
40 | if (args[0] === "-h" || args[0] === "--help") {
|
41 | printUsageAndExit();
|
42 | }
|
43 | functionsDir = args[0];
|
44 | }
|
45 | let server = undefined;
|
46 | const app = express();
|
47 | function handleQuitquitquit(req, res) {
|
48 | res.send("ok");
|
49 | server.close();
|
50 | }
|
51 | app.get("/__/quitquitquit", handleQuitquitquit);
|
52 | app.post("/__/quitquitquit", handleQuitquitquit);
|
53 | if (process.env.FUNCTIONS_CONTROL_API === "true") {
|
54 | app.get("/__/functions.yaml", async (req, res) => {
|
55 | try {
|
56 | const stack = await (0, loader_1.loadStack)(functionsDir);
|
57 | res.setHeader("content-type", "text/yaml");
|
58 | res.send(JSON.stringify((0, manifest_1.stackToWire)(stack)));
|
59 | }
|
60 | catch (e) {
|
61 | console.error(e);
|
62 | res.status(400).send(`Failed to generate manifest from function source: ${e}`);
|
63 | }
|
64 | });
|
65 | }
|
66 | let port = 8080;
|
67 | if (process.env.PORT) {
|
68 | port = Number.parseInt(process.env.PORT);
|
69 | }
|
70 | console.log("Serving at port", port);
|
71 | server = app.listen(port);
|