1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
10 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
11 | };
|
12 | Object.defineProperty(exports, "__esModule", { value: true });
|
13 | exports.askRootOfWebApp = void 0;
|
14 | const assert_1 = __importDefault(require("assert"));
|
15 | const fs_extra_1 = __importDefault(require("fs-extra"));
|
16 | const glob_1 = __importDefault(require("glob"));
|
17 | const inquirer_1 = require("inquirer");
|
18 | const common_tags_1 = require("common-tags");
|
19 | const errors_1 = require("../errors");
|
20 | const constants_1 = require("../constants");
|
21 | const ROOT_PROMPT = 'Please enter the path to the root of your web app:';
|
22 |
|
23 | const questionRootDirectory = 'globDirectory';
|
24 | const questionManualInput = 'manualDirectoryInput';
|
25 |
|
26 |
|
27 |
|
28 |
|
29 | async function getSubdirectories() {
|
30 | return await new Promise((resolve, reject) => {
|
31 | (0, glob_1.default)('*/', {
|
32 | ignore: constants_1.constants.ignoredDirectories.map((directory) => `${directory}/`),
|
33 | }, (error, directories) => {
|
34 | if (error) {
|
35 | reject(error);
|
36 | }
|
37 | else {
|
38 | resolve(directories);
|
39 | }
|
40 | });
|
41 | });
|
42 | }
|
43 |
|
44 |
|
45 |
|
46 | async function askQuestion() {
|
47 | const subdirectories = await getSubdirectories();
|
48 | if (subdirectories.length > 0) {
|
49 | const manualEntryChoice = 'Manually enter path';
|
50 | return (0, inquirer_1.prompt)([
|
51 | {
|
52 | name: questionRootDirectory,
|
53 | type: 'list',
|
54 | message: (0, common_tags_1.oneLine) `What is the root of your web app (i.e. which directory do
|
55 | you deploy)?`,
|
56 | choices: subdirectories.concat([new inquirer_1.Separator(), manualEntryChoice]),
|
57 | },
|
58 | {
|
59 | name: questionManualInput,
|
60 | when: (answers) => answers.globDirectory === manualEntryChoice,
|
61 | message: ROOT_PROMPT,
|
62 | },
|
63 | ]);
|
64 | }
|
65 | return (0, inquirer_1.prompt)([
|
66 | {
|
67 | name: questionRootDirectory,
|
68 | message: ROOT_PROMPT,
|
69 | default: '.',
|
70 | },
|
71 | ]);
|
72 | }
|
73 | async function askRootOfWebApp() {
|
74 | const { manualDirectoryInput, globDirectory } = await askQuestion();
|
75 | try {
|
76 | const stat = await fs_extra_1.default.stat(manualDirectoryInput || globDirectory);
|
77 | (0, assert_1.default)(stat.isDirectory());
|
78 | }
|
79 | catch (error) {
|
80 | throw new Error(errors_1.errors['glob-directory-invalid']);
|
81 | }
|
82 | return manualDirectoryInput || globDirectory;
|
83 | }
|
84 | exports.askRootOfWebApp = askRootOfWebApp;
|