1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | exports.ManifestCreation = void 0;
|
7 | const fs_1 = __importDefault(require("fs"));
|
8 | const js_yaml_1 = __importDefault(require("js-yaml"));
|
9 | const path_1 = __importDefault(require("path"));
|
10 | const update_dotenv_1 = __importDefault(require("update-dotenv"));
|
11 | const probot_octokit_1 = require("./octokit/probot-octokit");
|
12 | class ManifestCreation {
|
13 | get pkg() {
|
14 | let pkg;
|
15 | try {
|
16 | pkg = require(path_1.default.join(process.cwd(), "package.json"));
|
17 | }
|
18 | catch (e) {
|
19 | pkg = {};
|
20 | }
|
21 | return pkg;
|
22 | }
|
23 | async createWebhookChannel() {
|
24 | try {
|
25 |
|
26 | const SmeeClient = require("smee-client");
|
27 | await this.updateEnv({
|
28 | WEBHOOK_PROXY_URL: await SmeeClient.createChannel(),
|
29 | });
|
30 | }
|
31 | catch (error) {
|
32 |
|
33 |
|
34 | console.warn("Unable to connect to smee.io, try restarting your server.");
|
35 | }
|
36 | }
|
37 | getManifest(pkg, baseUrl) {
|
38 | let manifest = {};
|
39 | try {
|
40 | const file = fs_1.default.readFileSync(path_1.default.join(process.cwd(), "app.yml"), "utf8");
|
41 | manifest = js_yaml_1.default.safeLoad(file);
|
42 | }
|
43 | catch (error) {
|
44 |
|
45 | if (error.code !== "ENOENT") {
|
46 | throw error;
|
47 | }
|
48 | }
|
49 | const generatedManifest = JSON.stringify(Object.assign({
|
50 | description: manifest.description || pkg.description,
|
51 | hook_attributes: {
|
52 | url: process.env.WEBHOOK_PROXY_URL || `${baseUrl}/`,
|
53 | },
|
54 | name: process.env.PROJECT_DOMAIN || manifest.name || pkg.name,
|
55 | public: manifest.public || true,
|
56 | redirect_url: `${baseUrl}/probot/setup`,
|
57 |
|
58 |
|
59 | url: manifest.url || pkg.homepage || pkg.repository,
|
60 | version: "v1",
|
61 | }, manifest));
|
62 | return generatedManifest;
|
63 | }
|
64 | async createAppFromCode(code) {
|
65 | const octokit = new probot_octokit_1.ProbotOctokit();
|
66 | const options = {
|
67 | code,
|
68 | mediaType: {
|
69 | previews: ["fury"],
|
70 | },
|
71 | ...(process.env.GHE_HOST && {
|
72 | baseUrl: `${process.env.GHE_PROTOCOL || "https"}://${process.env.GHE_HOST}/api/v3`,
|
73 | }),
|
74 | };
|
75 | const response = await octokit.request("POST /app-manifests/:code/conversions", options);
|
76 | const { id, webhook_secret, pem } = response.data;
|
77 | await this.updateEnv({
|
78 | APP_ID: id.toString(),
|
79 | PRIVATE_KEY: `"${pem}"`,
|
80 | WEBHOOK_SECRET: webhook_secret,
|
81 | });
|
82 | return response.data.html_url;
|
83 | }
|
84 | async updateEnv(env) {
|
85 |
|
86 | return update_dotenv_1.default(env);
|
87 | }
|
88 | get createAppUrl() {
|
89 | const githubHost = process.env.GHE_HOST || `github.com`;
|
90 | return `${process.env.GHE_PROTOCOL || "https"}://${githubHost}/settings/apps/new`;
|
91 | }
|
92 | }
|
93 | exports.ManifestCreation = ManifestCreation;
|
94 |
|
\ | No newline at end of file |