1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.createProbot = void 0;
|
4 | const deprecation_1 = require("deprecation");
|
5 | const get_private_key_1 = require("@probot/get-private-key");
|
6 | const get_log_1 = require("./helpers/get-log");
|
7 | const probot_1 = require("./probot");
|
8 | const DEFAULTS = {
|
9 | APP_ID: "",
|
10 | WEBHOOK_SECRET: "",
|
11 | GHE_HOST: "",
|
12 | GHE_PROTOCOL: "",
|
13 | LOG_FORMAT: "",
|
14 | LOG_LEVEL: "warn",
|
15 | LOG_LEVEL_IN_STRING: "",
|
16 | REDIS_URL: "",
|
17 | SENTRY_DSN: "",
|
18 | };
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 | function createProbot(options = {}) {
|
29 | if (isDeprecated(options)) {
|
30 | return deprecatedCreateProbot(options);
|
31 | }
|
32 | const { overrides = {}, defaults = {}, env = process.env } = options;
|
33 | const privateKey = get_private_key_1.getPrivateKey({ env });
|
34 | const envWithDefaults = { ...DEFAULTS, ...env };
|
35 | const envOptions = {
|
36 | logLevel: envWithDefaults.LOG_LEVEL,
|
37 | appId: Number(envWithDefaults.APP_ID),
|
38 | privateKey: (privateKey && privateKey.toString()) || undefined,
|
39 | secret: envWithDefaults.WEBHOOK_SECRET,
|
40 | redisConfig: envWithDefaults.REDIS_URL,
|
41 | baseUrl: envWithDefaults.GHE_HOST
|
42 | ? `${envWithDefaults.GHE_PROTOCOL || "https"}://${envWithDefaults.GHE_HOST}/api/v3`
|
43 | : "https://api.github.com",
|
44 | };
|
45 | const probotOptions = {
|
46 | ...defaults,
|
47 | ...envOptions,
|
48 | ...overrides,
|
49 | };
|
50 | const logOptions = {
|
51 | level: probotOptions.logLevel,
|
52 | logFormat: envWithDefaults.LOG_FORMAT,
|
53 | logLevelInString: envWithDefaults.LOG_LEVEL_IN_STRING === "true",
|
54 | sentryDsn: envWithDefaults.SENTRY_DSN,
|
55 | };
|
56 | const log = get_log_1.getLog(logOptions).child({ name: "server" });
|
57 | return new probot_1.Probot({
|
58 | log: log.child({ name: "probot" }),
|
59 | ...probotOptions,
|
60 | });
|
61 | }
|
62 | exports.createProbot = createProbot;
|
63 | function isDeprecated(options) {
|
64 | const keys = Object.keys(options);
|
65 | return (keys.length > 0 &&
|
66 | !keys.includes("overrides") &&
|
67 | !keys.includes("defaults") &&
|
68 | !keys.includes("env"));
|
69 | }
|
70 | function deprecatedCreateProbot(options) {
|
71 | options.log =
|
72 | options.log ||
|
73 | get_log_1.getLog({
|
74 | level: process.env.LOG_LEVEL,
|
75 | logFormat: process.env.LOG_FORMAT,
|
76 | logLevelInString: process.env.LOG_LEVEL_IN_STRING === "true",
|
77 | sentryDsn: process.env.SENTRY_DSN,
|
78 | });
|
79 | const deprecatedKey = Object.keys(options).join(", ");
|
80 | options.log.warn(new deprecation_1.Deprecation(`[probot] "createProbot({ ${deprecatedKey} })" is deprecated, use "new Probot(options)" instead.
|
81 |
|
82 | "createProbot(options)" will be repurposed with probot v11 and only accept {defaults, overrides, env} option keys`));
|
83 | return new probot_1.Probot(options);
|
84 | }
|
85 |
|
\ | No newline at end of file |