UNPKG

3.33 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.createProbot = void 0;
4const deprecation_1 = require("deprecation");
5const get_private_key_1 = require("@probot/get-private-key");
6const get_log_1 = require("./helpers/get-log");
7const probot_1 = require("./probot");
8const 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 * Merges configuration from defaults/environment variables/overrides and returns
21 * a Probot instance. Finds private key using [`@probot/get-private-key`](https://github.com/probot/get-private-key).
22 *
23 * @see https://probot.github.io/docs/configuration/
24 * @param defaults default Options, will be overwritten if according environment variable is set
25 * @param overrides overwrites defaults and according environment variables
26 * @param env defaults to process.env
27 */
28function 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}
62exports.createProbot = createProbot;
63function 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}
70function 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//# sourceMappingURL=create-probot.js.map
\No newline at end of file