@apimatic/cli 1.1.0-alpha.21 → 1.1.0-alpha.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +112 -90
- package/lib/actions/action-result.d.ts +8 -3
- package/lib/actions/action-result.js +34 -15
- package/lib/actions/action-result.js.map +1 -1
- package/lib/actions/api/transform.d.ts +15 -0
- package/lib/actions/api/transform.js +48 -0
- package/lib/actions/api/transform.js.map +1 -0
- package/lib/actions/api/validate.d.ts +12 -0
- package/lib/actions/api/validate.js +41 -0
- package/lib/actions/api/validate.js.map +1 -0
- package/lib/actions/auth/login.d.ts +6 -5
- package/lib/actions/auth/login.js +25 -33
- package/lib/actions/auth/login.js.map +1 -1
- package/lib/actions/auth/logout.d.ts +8 -0
- package/lib/actions/auth/logout.js +15 -0
- package/lib/actions/auth/logout.js.map +1 -0
- package/lib/actions/auth/status.d.ts +11 -0
- package/lib/actions/auth/status.js +26 -0
- package/lib/actions/auth/status.js.map +1 -0
- package/lib/actions/portal/copilot.d.ts +5 -3
- package/lib/actions/portal/copilot.js +47 -37
- package/lib/actions/portal/copilot.js.map +1 -1
- package/lib/actions/portal/generate.d.ts +4 -5
- package/lib/actions/portal/generate.js +30 -37
- package/lib/actions/portal/generate.js.map +1 -1
- package/lib/actions/portal/quickstart.d.ts +16 -0
- package/lib/actions/portal/quickstart.js +145 -0
- package/lib/actions/portal/quickstart.js.map +1 -0
- package/lib/actions/portal/recipe/new-recipe.d.ts +11 -20
- package/lib/actions/portal/recipe/new-recipe.js +147 -221
- package/lib/actions/portal/recipe/new-recipe.js.map +1 -1
- package/lib/actions/portal/serve.d.ts +12 -10
- package/lib/actions/portal/serve.js +112 -17
- package/lib/actions/portal/serve.js.map +1 -1
- package/lib/actions/portal/toc/new-toc.d.ts +16 -15
- package/lib/actions/portal/toc/new-toc.js +80 -116
- package/lib/actions/portal/toc/new-toc.js.map +1 -1
- package/lib/actions/sdk/generate.d.ts +5 -6
- package/lib/actions/sdk/generate.js +22 -47
- package/lib/actions/sdk/generate.js.map +1 -1
- package/lib/application/portal/recipe/portal-recipe.d.ts +2 -2
- package/lib/application/portal/recipe/portal-recipe.js +9 -9
- package/lib/application/portal/recipe/portal-recipe.js.map +1 -1
- package/lib/application/portal/recipe/recipe-generator.d.ts +7 -2
- package/lib/application/portal/recipe/recipe-generator.js +21 -22
- package/lib/application/portal/recipe/recipe-generator.js.map +1 -1
- package/lib/client-utils/auth-manager.d.ts +1 -1
- package/lib/client-utils/auth-manager.js +3 -4
- package/lib/client-utils/auth-manager.js.map +1 -1
- package/lib/commands/api/transform.d.ts +6 -3
- package/lib/commands/api/transform.js +43 -94
- package/lib/commands/api/transform.js.map +1 -1
- package/lib/commands/api/validate.d.ts +6 -3
- package/lib/commands/api/validate.js +27 -66
- package/lib/commands/api/validate.js.map +1 -1
- package/lib/commands/auth/login.d.ts +2 -1
- package/lib/commands/auth/login.js +15 -9
- package/lib/commands/auth/login.js.map +1 -1
- package/lib/commands/auth/logout.d.ts +3 -1
- package/lib/commands/auth/logout.js +12 -13
- package/lib/commands/auth/logout.js.map +1 -1
- package/lib/commands/auth/status.d.ts +1 -0
- package/lib/commands/auth/status.js +13 -11
- package/lib/commands/auth/status.js.map +1 -1
- package/lib/commands/portal/copilot.d.ts +2 -2
- package/lib/commands/portal/copilot.js +22 -20
- package/lib/commands/portal/copilot.js.map +1 -1
- package/lib/commands/portal/generate.d.ts +3 -4
- package/lib/commands/portal/generate.js +19 -14
- package/lib/commands/portal/generate.js.map +1 -1
- package/lib/commands/portal/quickstart.d.ts +3 -4
- package/lib/commands/portal/quickstart.js +24 -101
- package/lib/commands/portal/quickstart.js.map +1 -1
- package/lib/commands/portal/recipe/new.d.ts +3 -1
- package/lib/commands/portal/recipe/new.js +31 -23
- package/lib/commands/portal/recipe/new.js.map +1 -1
- package/lib/commands/portal/serve.d.ts +5 -5
- package/lib/commands/portal/serve.js +31 -57
- package/lib/commands/portal/serve.js.map +1 -1
- package/lib/commands/portal/toc/new.d.ts +2 -2
- package/lib/commands/portal/toc/new.js +35 -26
- package/lib/commands/portal/toc/new.js.map +1 -1
- package/lib/commands/sdk/generate.d.ts +5 -4
- package/lib/commands/sdk/generate.js +26 -17
- package/lib/commands/sdk/generate.js.map +1 -1
- package/lib/hooks/not-found.js +1 -1
- package/lib/hooks/not-found.js.map +1 -1
- package/lib/infrastructure/api-utils.js +3 -2
- package/lib/infrastructure/api-utils.js.map +1 -1
- package/lib/{application/portal/serve/watcher-handler.d.ts → infrastructure/debounce-service.d.ts} +3 -3
- package/lib/{application/portal/serve/watcher-handler.js → infrastructure/debounce-service.js} +5 -4
- package/lib/infrastructure/debounce-service.js.map +1 -0
- package/lib/infrastructure/env-info.d.ts +1 -1
- package/lib/infrastructure/env-info.js +2 -2
- package/lib/infrastructure/env-info.js.map +1 -1
- package/lib/infrastructure/file-service.d.ts +7 -2
- package/lib/infrastructure/file-service.js +46 -5
- package/lib/infrastructure/file-service.js.map +1 -1
- package/lib/infrastructure/launcher-service.d.ts +2 -0
- package/lib/infrastructure/launcher-service.js +4 -0
- package/lib/infrastructure/launcher-service.js.map +1 -1
- package/lib/infrastructure/network-service.d.ts +3 -0
- package/lib/infrastructure/network-service.js +7 -0
- package/lib/infrastructure/network-service.js.map +1 -0
- package/lib/infrastructure/services/api-client-factory.d.ts +6 -0
- package/lib/infrastructure/services/api-client-factory.js +20 -0
- package/lib/infrastructure/services/api-client-factory.js.map +1 -0
- package/lib/infrastructure/services/api-service.d.ts +2 -2
- package/lib/infrastructure/services/api-service.js +6 -6
- package/lib/infrastructure/services/api-service.js.map +1 -1
- package/lib/infrastructure/services/auth-service.d.ts +1 -1
- package/lib/infrastructure/services/auth-service.js +7 -5
- package/lib/infrastructure/services/auth-service.js.map +1 -1
- package/lib/infrastructure/services/file-download-service.d.ts +15 -0
- package/lib/infrastructure/services/file-download-service.js +104 -0
- package/lib/infrastructure/services/file-download-service.js.map +1 -0
- package/lib/infrastructure/services/portal-service.d.ts +11 -13
- package/lib/infrastructure/services/portal-service.js +73 -102
- package/lib/infrastructure/services/portal-service.js.map +1 -1
- package/lib/infrastructure/services/telemetry-service.d.ts +3 -2
- package/lib/infrastructure/services/telemetry-service.js +4 -6
- package/lib/infrastructure/services/telemetry-service.js.map +1 -1
- package/lib/infrastructure/services/transformation-service.d.ts +23 -0
- package/lib/infrastructure/services/transformation-service.js +56 -0
- package/lib/infrastructure/services/transformation-service.js.map +1 -0
- package/lib/infrastructure/services/validation-service.d.ts +17 -0
- package/lib/infrastructure/services/validation-service.js +49 -0
- package/lib/infrastructure/services/validation-service.js.map +1 -0
- package/lib/prompts/api/transform.d.ts +11 -0
- package/lib/prompts/api/transform.js +30 -0
- package/lib/prompts/api/transform.js.map +1 -0
- package/lib/prompts/api/validate.d.ts +12 -0
- package/lib/prompts/api/validate.js +41 -0
- package/lib/prompts/api/validate.js.map +1 -0
- package/lib/prompts/auth/login.d.ts +6 -1
- package/lib/prompts/auth/login.js +12 -3
- package/lib/prompts/auth/login.js.map +1 -1
- package/lib/prompts/auth/logout.d.ts +3 -0
- package/lib/prompts/auth/logout.js +7 -0
- package/lib/prompts/auth/logout.js.map +1 -0
- package/lib/prompts/auth/status.d.ts +8 -0
- package/lib/prompts/auth/status.js +21 -0
- package/lib/prompts/auth/status.js.map +1 -0
- package/lib/prompts/format.d.ts +33 -0
- package/lib/prompts/format.js +99 -0
- package/lib/prompts/format.js.map +1 -0
- package/lib/prompts/portal/copilot.d.ts +8 -4
- package/lib/prompts/portal/copilot.js +35 -24
- package/lib/prompts/portal/copilot.js.map +1 -1
- package/lib/prompts/portal/generate.d.ts +9 -7
- package/lib/prompts/portal/generate.js +22 -23
- package/lib/prompts/portal/generate.js.map +1 -1
- package/lib/prompts/portal/quickstart.d.ts +30 -29
- package/lib/prompts/portal/quickstart.js +99 -193
- package/lib/prompts/portal/quickstart.js.map +1 -1
- package/lib/prompts/portal/recipe/new-recipe.d.ts +23 -18
- package/lib/prompts/portal/recipe/new-recipe.js +70 -108
- package/lib/prompts/portal/recipe/new-recipe.js.map +1 -1
- package/lib/prompts/portal/serve.d.ts +10 -3
- package/lib/prompts/portal/serve.js +30 -11
- package/lib/prompts/portal/serve.js.map +1 -1
- package/lib/prompts/portal/toc/new-toc.d.ts +12 -8
- package/lib/prompts/portal/toc/new-toc.js +20 -22
- package/lib/prompts/portal/toc/new-toc.js.map +1 -1
- package/lib/prompts/sdk/generate.d.ts +7 -7
- package/lib/prompts/sdk/generate.js +17 -23
- package/lib/prompts/sdk/generate.js.map +1 -1
- package/lib/types/api/account.d.ts +1 -1
- package/lib/types/api/transform.d.ts +14 -25
- package/lib/types/api/transform.js +16 -16
- package/lib/types/api/transform.js.map +1 -1
- package/lib/types/build/build.d.ts +9 -1
- package/lib/types/build/build.js +5 -2
- package/lib/types/build/build.js.map +1 -1
- package/lib/types/build-context.d.ts +5 -1
- package/lib/types/build-context.js +21 -4
- package/lib/types/build-context.js.map +1 -1
- package/lib/types/common/command-metadata.d.ts +4 -0
- package/lib/types/common/command-metadata.js +2 -0
- package/lib/types/common/command-metadata.js.map +1 -0
- package/lib/types/events/domain-event.d.ts +1 -1
- package/lib/types/events/domain-event.js.map +1 -1
- package/lib/types/events/quickstart-completed.js +1 -1
- package/lib/types/events/quickstart-initiated.js +1 -1
- package/lib/types/events/recipe-creation-failed.d.ts +1 -1
- package/lib/types/events/recipe-creation-failed.js +1 -1
- package/lib/types/events/recipe-creation-failed.js.map +1 -1
- package/lib/types/events/toc-creation-failed.d.ts +1 -1
- package/lib/types/events/toc-creation-failed.js +1 -1
- package/lib/types/events/toc-creation-failed.js.map +1 -1
- package/lib/types/file/directory.d.ts +17 -0
- package/lib/types/file/directory.js +86 -0
- package/lib/types/file/directory.js.map +1 -0
- package/lib/types/file/directoryPath.d.ts +3 -1
- package/lib/types/file/directoryPath.js +8 -2
- package/lib/types/file/directoryPath.js.map +1 -1
- package/lib/types/file/fileName.d.ts +2 -0
- package/lib/types/file/fileName.js +12 -0
- package/lib/types/file/fileName.js.map +1 -1
- package/lib/types/file/filePath.d.ts +2 -0
- package/lib/types/file/filePath.js +21 -0
- package/lib/types/file/filePath.js.map +1 -1
- package/lib/types/file/resource-input.d.ts +5 -0
- package/lib/types/file/resource-input.js +42 -0
- package/lib/types/file/resource-input.js.map +1 -0
- package/lib/types/file/urlPath.d.ts +6 -0
- package/lib/types/file/urlPath.js +22 -0
- package/lib/types/file/urlPath.js.map +1 -0
- package/lib/types/portal-context.d.ts +3 -1
- package/lib/types/portal-context.js +10 -0
- package/lib/types/portal-context.js.map +1 -1
- package/lib/types/recipe/recipe.d.ts +2 -17
- package/lib/types/recipe-context.d.ts +8 -0
- package/lib/types/recipe-context.js +21 -0
- package/lib/types/recipe-context.js.map +1 -0
- package/lib/types/resource-context.d.ts +12 -0
- package/lib/types/resource-context.js +30 -0
- package/lib/types/resource-context.js.map +1 -0
- package/lib/types/sdk/generate.d.ts +2 -15
- package/lib/types/sdk/generate.js +24 -10
- package/lib/types/sdk/generate.js.map +1 -1
- package/lib/types/sdk-context.d.ts +6 -5
- package/lib/types/sdk-context.js +12 -8
- package/lib/types/sdk-context.js.map +1 -1
- package/lib/types/sdl/sdl.d.ts +9 -0
- package/lib/types/sdl/sdl.js +46 -1
- package/lib/types/sdl/sdl.js.map +1 -1
- package/lib/types/spec-context.d.ts +3 -0
- package/lib/types/spec-context.js +7 -2
- package/lib/types/spec-context.js.map +1 -1
- package/lib/types/temp-context.d.ts +11 -0
- package/lib/types/temp-context.js +27 -0
- package/lib/types/temp-context.js.map +1 -0
- package/lib/types/toc-context.d.ts +12 -0
- package/lib/types/toc-context.js +26 -0
- package/lib/types/toc-context.js.map +1 -0
- package/lib/types/transform-context.d.ts +13 -0
- package/lib/types/transform-context.js +30 -0
- package/lib/types/transform-context.js.map +1 -0
- package/lib/types/utils.d.ts +0 -9
- package/lib/utils/string-utils.d.ts +1 -0
- package/lib/utils/string-utils.js +10 -0
- package/lib/utils/string-utils.js.map +1 -0
- package/lib/utils/utils.d.ts +2 -27
- package/lib/utils/utils.js +6 -145
- package/lib/utils/utils.js.map +1 -1
- package/package.json +4 -4
- package/lib/application/portal/serve/portal-watcher.d.ts +0 -11
- package/lib/application/portal/serve/portal-watcher.js +0 -64
- package/lib/application/portal/serve/portal-watcher.js.map +0 -1
- package/lib/application/portal/serve/serve-handler.d.ts +0 -16
- package/lib/application/portal/serve/serve-handler.js +0 -91
- package/lib/application/portal/serve/serve-handler.js.map +0 -1
- package/lib/application/portal/serve/watcher-handler.js.map +0 -1
- package/lib/application/portal/toc/sdl-parser.d.ts +0 -19
- package/lib/application/portal/toc/sdl-parser.js +0 -90
- package/lib/application/portal/toc/sdl-parser.js.map +0 -1
- package/lib/client-utils/sdk-client.d.ts +0 -18
- package/lib/client-utils/sdk-client.js +0 -41
- package/lib/client-utils/sdk-client.js.map +0 -1
- package/lib/config/env.d.ts +0 -26
- package/lib/config/env.js +0 -27
- package/lib/config/env.js.map +0 -1
- package/lib/controllers/api/transform.d.ts +0 -5
- package/lib/controllers/api/transform.js +0 -50
- package/lib/controllers/api/transform.js.map +0 -1
- package/lib/controllers/api/validate.d.ts +0 -3
- package/lib/controllers/api/validate.js +0 -29
- package/lib/controllers/api/validate.js.map +0 -1
- package/lib/controllers/portal/quickstart.d.ts +0 -13
- package/lib/controllers/portal/quickstart.js +0 -214
- package/lib/controllers/portal/quickstart.js.map +0 -1
- package/lib/infrastructure/api-client-utils.d.ts +0 -6
- package/lib/infrastructure/api-client-utils.js +0 -34
- package/lib/infrastructure/api-client-utils.js.map +0 -1
- package/lib/prompts/portal/common/base-prompts.d.ts +0 -7
- package/lib/prompts/portal/common/base-prompts.js +0 -19
- package/lib/prompts/portal/common/base-prompts.js.map +0 -1
- package/lib/types/api/validate.d.ts +0 -12
- package/lib/types/api/validate.js +0 -2
- package/lib/types/api/validate.js.map +0 -1
- package/lib/types/common/result.d.ts +0 -17
- package/lib/types/common/result.js +0 -32
- package/lib/types/common/result.js.map +0 -1
- package/lib/types/portal/generate.d.ts +0 -13
- package/lib/types/portal/generate.js +0 -3
- package/lib/types/portal/generate.js.map +0 -1
- package/lib/types/portal/quickstart.d.ts +0 -17
- package/lib/types/portal/quickstart.js +0 -2
- package/lib/types/portal/quickstart.js.map +0 -1
- package/lib/types/portal/serve.d.ts +0 -12
- package/lib/types/portal/serve.js +0 -2
- package/lib/types/portal/serve.js.map +0 -1
- package/lib/validators/common/directoryValidator.d.ts +0 -5
- package/lib/validators/common/directoryValidator.js +0 -22
- package/lib/validators/common/directoryValidator.js.map +0 -1
- package/lib/validators/portal/serve-validator.d.ts +0 -6
- package/lib/validators/portal/serve-validator.js +0 -15
- package/lib/validators/portal/serve-validator.js.map +0 -1
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { getAuthInfo } from "../../client-utils/auth-manager.js";
|
|
2
|
+
import { FileService } from "../../infrastructure/file-service.js";
|
|
3
|
+
import { withDirPath } from "../../infrastructure/tmp-extensions.js";
|
|
4
|
+
import { ZipService } from "../../infrastructure/zip-service.js";
|
|
5
|
+
import { PortalQuickstartPrompts } from "../../prompts/portal/quickstart.js";
|
|
6
|
+
import { UrlPath } from "../../types/file/urlPath.js";
|
|
7
|
+
import { LoginAction } from "../auth/login.js";
|
|
8
|
+
import { ActionResult } from "../action-result.js";
|
|
9
|
+
import { PortalServeAction } from "./serve.js";
|
|
10
|
+
import { ValidateAction } from "../api/validate.js";
|
|
11
|
+
import { BuildContext } from "../../types/build-context.js";
|
|
12
|
+
import { TempContext } from "../../types/temp-context.js";
|
|
13
|
+
import { FileDownloadService } from "../../infrastructure/services/file-download-service.js";
|
|
14
|
+
import { getLanguagesConfig } from "../../types/build/build.js";
|
|
15
|
+
import { SpecContext } from "../../types/spec-context.js";
|
|
16
|
+
const defaultPort = 3000;
|
|
17
|
+
export class PortalQuickstartAction {
|
|
18
|
+
constructor(configDir, commandMetadata) {
|
|
19
|
+
this.prompts = new PortalQuickstartPrompts();
|
|
20
|
+
this.zipService = new ZipService();
|
|
21
|
+
this.fileService = new FileService();
|
|
22
|
+
this.fileDownloadService = new FileDownloadService();
|
|
23
|
+
this.buildFileUrl = new UrlPath(`https://github.com/apimatic/static-portal-workflow/archive/refs/heads/master.zip`);
|
|
24
|
+
this.defaultSpecUrl = new UrlPath(`https://raw.githubusercontent.com/apimatic/static-portal-workflow/refs/heads/master/spec/openapi.json`);
|
|
25
|
+
this.repositoryFolderName = "static-portal-workflow-master";
|
|
26
|
+
this.execute = async () => {
|
|
27
|
+
this.prompts.welcomeMessage();
|
|
28
|
+
const storedAuth = await getAuthInfo(this.configDir.toString());
|
|
29
|
+
if (!(storedAuth === null || storedAuth === void 0 ? void 0 : storedAuth.authKey)) {
|
|
30
|
+
const loginResult = await new LoginAction(this.configDir, this.commandMetadata).execute();
|
|
31
|
+
if (loginResult.isFailed()) {
|
|
32
|
+
return ActionResult.failed();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return await withDirPath(async (tempDirectory) => {
|
|
36
|
+
// Step 1/4
|
|
37
|
+
this.prompts.importSpecStep();
|
|
38
|
+
let specPath;
|
|
39
|
+
while (!specPath) {
|
|
40
|
+
const inputPath = await this.prompts.specPathPrompt(this.defaultSpecUrl);
|
|
41
|
+
if (!inputPath) {
|
|
42
|
+
this.prompts.noSpecSpecified();
|
|
43
|
+
return ActionResult.cancelled();
|
|
44
|
+
}
|
|
45
|
+
if (inputPath instanceof UrlPath) {
|
|
46
|
+
const downloadFileResult = await this.prompts.downloadSpecFile(this.fileDownloadService.downloadFile(inputPath));
|
|
47
|
+
if (downloadFileResult.isErr()) {
|
|
48
|
+
this.prompts.serviceError(downloadFileResult.error);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const specContext = new SpecContext(tempDirectory);
|
|
52
|
+
specPath = await specContext.save(downloadFileResult.value.stream, downloadFileResult.value.filename);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const fileExists = await this.fileService.fileExists(inputPath);
|
|
57
|
+
if (!fileExists) {
|
|
58
|
+
this.prompts.specFileDoesNotExist();
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
specPath = inputPath;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Step 2/4
|
|
66
|
+
this.prompts.validateSpecStep();
|
|
67
|
+
const validateAction = new ValidateAction(this.configDir, this.commandMetadata);
|
|
68
|
+
const validationResult = await validateAction.execute(specPath, false);
|
|
69
|
+
if (validationResult.isFailed()) {
|
|
70
|
+
this.prompts.specValidationFailed();
|
|
71
|
+
if (!(await this.prompts.useDefaultSpecPrompt())) {
|
|
72
|
+
this.prompts.fixYourSpec();
|
|
73
|
+
return ActionResult.cancelled();
|
|
74
|
+
}
|
|
75
|
+
const downloadFileResult = await this.prompts.downloadSpecFile(this.fileDownloadService.downloadFile(this.defaultSpecUrl));
|
|
76
|
+
if (downloadFileResult.isErr()) {
|
|
77
|
+
this.prompts.serviceError(downloadFileResult.error);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
const specContext = new SpecContext(tempDirectory);
|
|
81
|
+
specPath = await specContext.save(downloadFileResult.value.stream, downloadFileResult.value.filename);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Step 3/4
|
|
85
|
+
this.prompts.selectLanguagesStep();
|
|
86
|
+
const languages = await this.prompts.selectLanguagesPrompt();
|
|
87
|
+
if (!languages) {
|
|
88
|
+
this.prompts.noLanguagesSelected();
|
|
89
|
+
return ActionResult.cancelled();
|
|
90
|
+
}
|
|
91
|
+
// Step 4/4
|
|
92
|
+
this.prompts.selectInputDirectoryStep();
|
|
93
|
+
let inputDirectory;
|
|
94
|
+
while (true) {
|
|
95
|
+
inputDirectory = await this.prompts.inputDirectoryPathPrompt();
|
|
96
|
+
if (!inputDirectory) {
|
|
97
|
+
this.prompts.noInputDirectoryProvided();
|
|
98
|
+
return ActionResult.cancelled();
|
|
99
|
+
}
|
|
100
|
+
if (!(await this.fileService.directoryExists(inputDirectory))) {
|
|
101
|
+
this.prompts.inputDirectoryPathDoesNotExist(inputDirectory);
|
|
102
|
+
// TODO: Prompt user if he wants to create the directory
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (!(await this.fileService.directoryEmpty(inputDirectory))) {
|
|
106
|
+
this.prompts.inputDirectoryNotEmpty(inputDirectory);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
const masterBuildFile = await this.prompts.downloadBuildDirectory(this.fileDownloadService.downloadFile(this.buildFileUrl));
|
|
112
|
+
if (masterBuildFile.isErr()) {
|
|
113
|
+
this.prompts.serviceError(masterBuildFile.error);
|
|
114
|
+
return ActionResult.failed();
|
|
115
|
+
}
|
|
116
|
+
const tempContext = new TempContext(tempDirectory);
|
|
117
|
+
const masterBuildFilePath = await tempContext.save(masterBuildFile.value.stream);
|
|
118
|
+
await this.zipService.unArchive(masterBuildFilePath, tempDirectory);
|
|
119
|
+
const extractedFolder = tempDirectory.join(this.repositoryFolderName);
|
|
120
|
+
const tempBuildContext = new BuildContext(extractedFolder);
|
|
121
|
+
await tempBuildContext.replaceDefaultSpec(specPath);
|
|
122
|
+
await tempBuildContext.deleteWorkflowDir();
|
|
123
|
+
const buildFile = await tempBuildContext.getBuildFileContents();
|
|
124
|
+
buildFile.generatePortal.languageConfig = getLanguagesConfig(languages);
|
|
125
|
+
await tempBuildContext.updateBuildFileContents(buildFile);
|
|
126
|
+
const sourceDirectory = inputDirectory.join("src");
|
|
127
|
+
await this.fileService.copyDirectoryContents(extractedFolder, sourceDirectory);
|
|
128
|
+
const buildDirectoryStructure = await this.fileService.getDirectory(sourceDirectory);
|
|
129
|
+
this.prompts.printDirectoryStructure(inputDirectory, buildDirectoryStructure);
|
|
130
|
+
const portalDirectory = inputDirectory.join("portal");
|
|
131
|
+
const portalServeAction = new PortalServeAction(this.configDir, this.commandMetadata, null);
|
|
132
|
+
const result = await portalServeAction.execute(sourceDirectory, portalDirectory, defaultPort, true, false, () => {
|
|
133
|
+
this.prompts.nextSteps();
|
|
134
|
+
});
|
|
135
|
+
if (result.isFailed()) {
|
|
136
|
+
return ActionResult.failed();
|
|
137
|
+
}
|
|
138
|
+
return ActionResult.success();
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
this.configDir = configDir;
|
|
142
|
+
this.commandMetadata = commandMetadata;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=quickstart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../../src/actions/portal/quickstart.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,15 @@
|
|
|
1
|
-
import { Result } from "../../../types/common/result.js";
|
|
2
1
|
import { DirectoryPath } from "../../../types/file/directoryPath.js";
|
|
2
|
+
import { CommandMetadata } from "../../../types/common/command-metadata.js";
|
|
3
|
+
import { ActionResult } from "../../action-result.js";
|
|
3
4
|
export declare class PortalRecipeAction {
|
|
5
|
+
private readonly configDirectory;
|
|
6
|
+
private readonly commandMetadata;
|
|
4
7
|
private readonly prompts;
|
|
5
|
-
private readonly
|
|
6
|
-
private readonly
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
private
|
|
11
|
-
private
|
|
12
|
-
private promptUserAndBuildNewRecipe;
|
|
13
|
-
private promptUserAndAddContentStepToRecipe;
|
|
14
|
-
private promptUserAndAddEndpointStepToRecipe;
|
|
15
|
-
private parseTocFile;
|
|
16
|
-
private createPermalink;
|
|
17
|
-
private getBuildConfigFilePath;
|
|
18
|
-
private parseBuildConfig;
|
|
19
|
-
private checkRecipeAlreadyExists;
|
|
20
|
-
private getBuildDirectoryStructure;
|
|
21
|
-
private extractEndpointGroupsFromSdl;
|
|
22
|
-
private getSpecFolderPath;
|
|
23
|
-
private getContentFolderPath;
|
|
8
|
+
private readonly launcherService;
|
|
9
|
+
private readonly fileService;
|
|
10
|
+
private readonly portalService;
|
|
11
|
+
constructor(configDirectory: DirectoryPath, commandMetadata: CommandMetadata);
|
|
12
|
+
execute(buildDirectory: DirectoryPath, name?: string): Promise<ActionResult>;
|
|
13
|
+
private promptForContent;
|
|
14
|
+
private getTocStructure;
|
|
24
15
|
}
|
|
@@ -1,250 +1,176 @@
|
|
|
1
|
-
import * as path from "path";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import fsExtra from "fs-extra";
|
|
4
|
-
import { parse } from "yaml";
|
|
5
|
-
import { tmpdir } from "os";
|
|
6
|
-
import { execa } from "execa";
|
|
7
1
|
import { PortalRecipePrompts } from "../../../prompts/portal/recipe/new-recipe.js";
|
|
8
2
|
import { StepType } from "../../../types/recipe/recipe.js";
|
|
9
|
-
import {
|
|
3
|
+
import { PortalService } from "../../../infrastructure/services/portal-service.js";
|
|
4
|
+
import { getEndpointDescription, getEndpointGroupsFromSdl } from "../../../types/sdl/sdl.js";
|
|
5
|
+
import { ActionResult } from "../../action-result.js";
|
|
6
|
+
import { TocContext } from "../../../types/toc-context.js";
|
|
7
|
+
import { FileName } from "../../../types/file/fileName.js";
|
|
10
8
|
import { PortalRecipe } from "../../../application/portal/recipe/portal-recipe.js";
|
|
11
9
|
import { PortalRecipeGenerator } from "../../../application/portal/recipe/recipe-generator.js";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
10
|
+
import { BuildContext } from "../../../types/build-context.js";
|
|
11
|
+
import { ContentContext } from "../toc/new-toc.js";
|
|
12
|
+
import { SpecContext } from "../../../types/spec-context.js";
|
|
13
|
+
import { LauncherService } from "../../../infrastructure/launcher-service.js";
|
|
14
|
+
import { FileService } from "../../../infrastructure/file-service.js";
|
|
15
|
+
import { FilePath } from "../../../types/file/filePath.js";
|
|
16
|
+
import { withDirPath } from "../../../infrastructure/tmp-extensions.js";
|
|
17
|
+
import { TempContext } from "../../../types/temp-context.js";
|
|
18
|
+
import { RecipeContext } from "../../../types/recipe-context.js";
|
|
14
19
|
export class PortalRecipeAction {
|
|
15
|
-
constructor() {
|
|
16
|
-
this.
|
|
20
|
+
constructor(configDirectory, commandMetadata) {
|
|
21
|
+
this.configDirectory = configDirectory;
|
|
22
|
+
this.commandMetadata = commandMetadata;
|
|
17
23
|
this.prompts = new PortalRecipePrompts();
|
|
18
|
-
this.
|
|
24
|
+
this.launcherService = new LauncherService();
|
|
25
|
+
this.fileService = new FileService();
|
|
26
|
+
this.portalService = new PortalService();
|
|
19
27
|
}
|
|
20
|
-
async
|
|
28
|
+
async execute(buildDirectory, name) {
|
|
21
29
|
this.prompts.displayWelcomeMessage();
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return Result.failure(`Unable to locate a valid "src" directory. Navigate to the directory containing your APIMatic Portal source or set up a new project by running apimatic portal:quickstart.`);
|
|
27
|
-
}
|
|
28
|
-
//TODO: Create a type for the build config and use that here instead of any.
|
|
29
|
-
const buildConfigFilePath = await this.getBuildConfigFilePath(buildDirectoryPath);
|
|
30
|
-
const buildConfigResult = await this.parseBuildConfig(buildConfigFilePath);
|
|
31
|
-
if (buildConfigResult.isFailed()) {
|
|
32
|
-
return Result.failure(`Unable to generate API Recipe: ${buildConfigResult.error}`);
|
|
33
|
-
}
|
|
34
|
-
const contentFolderPath = this.getContentFolderPath(buildConfigResult.value, buildDirectoryPath);
|
|
35
|
-
const tocFilePath = path.join(contentFolderPath, "content", "toc.yml");
|
|
36
|
-
//TODO: Replace any type of tocFileResult.value to concrete type.
|
|
37
|
-
const tocFileResult = await this.parseTocFile(tocFilePath);
|
|
38
|
-
if (tocFileResult.isFailed()) {
|
|
39
|
-
return Result.failure(`Unable to generate API Recipe: ${tocFileResult.error}`);
|
|
40
|
-
}
|
|
41
|
-
const recipeAlreadyExists = this.checkRecipeAlreadyExists(tocFileResult.value, recipeName, recipeFileName);
|
|
42
|
-
if (recipeAlreadyExists && !(await this.prompts.overwriteApiRecipeInTocPrompt())) {
|
|
43
|
-
return Result.cancelled("Operation was cancelled by the user.");
|
|
44
|
-
}
|
|
45
|
-
const recipeResult = await this.promptUserAndBuildNewRecipe(buildConfigResult.value, contentFolderPath, recipeName, configDir, commandName);
|
|
46
|
-
if (recipeResult.isFailed()) {
|
|
47
|
-
return Result.failure(`Unable to generate API Recipe: ${recipeResult.error}`);
|
|
30
|
+
const buildContext = new BuildContext(buildDirectory);
|
|
31
|
+
if (!(await buildContext.validate())) {
|
|
32
|
+
this.prompts.invalidBuildDirectory(buildDirectory);
|
|
33
|
+
return ActionResult.failed();
|
|
48
34
|
}
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
35
|
+
const recipeName = name !== null && name !== void 0 ? name : (await this.prompts.recipeNamePrompt());
|
|
36
|
+
if (!recipeName) {
|
|
37
|
+
this.prompts.recipeNameEmpty();
|
|
38
|
+
return ActionResult.cancelled();
|
|
39
|
+
}
|
|
40
|
+
const contentDirectory = buildDirectory.join("content");
|
|
41
|
+
const contentContext = new ContentContext(contentDirectory);
|
|
42
|
+
if (!(await contentContext.exists())) {
|
|
43
|
+
this.prompts.contentFolderNotFound();
|
|
44
|
+
return ActionResult.failed();
|
|
45
|
+
}
|
|
46
|
+
const specDirectory = buildDirectory.join("spec");
|
|
47
|
+
const specContext = new SpecContext(specDirectory);
|
|
48
|
+
if (!(await specContext.validate())) {
|
|
49
|
+
this.prompts.specFileEmptyInvalid();
|
|
50
|
+
return ActionResult.failed();
|
|
51
|
+
}
|
|
52
|
+
// Setup TOC context
|
|
53
|
+
const tocContext = new TocContext(contentDirectory);
|
|
54
|
+
const tocData = await tocContext.parseTocData();
|
|
55
|
+
// Setup recipe context
|
|
56
|
+
const recipeContext = new RecipeContext(recipeName);
|
|
57
|
+
const recipeFileName = recipeContext.getRecipeName();
|
|
58
|
+
// Check if the recipe already exists
|
|
59
|
+
const recipeAlreadyExists = recipeContext.exists(tocData, recipeName, recipeFileName);
|
|
60
|
+
if (recipeAlreadyExists && !(await this.prompts.overwriteApiRecipeInTocPrompt(recipeName))) {
|
|
61
|
+
return ActionResult.cancelled();
|
|
62
|
+
}
|
|
63
|
+
// Build the recipe
|
|
73
64
|
const recipe = new PortalRecipe(recipeName);
|
|
74
|
-
let
|
|
75
|
-
let idx = 1;
|
|
76
|
-
let addAnotherStep = true;
|
|
65
|
+
let stepIndex = 0;
|
|
77
66
|
this.prompts.displayStepsInformation();
|
|
78
|
-
|
|
67
|
+
let endpointGroups;
|
|
68
|
+
do {
|
|
79
69
|
const stepType = await this.prompts.stepTypeSelectionPrompt();
|
|
80
|
-
|
|
70
|
+
if (!stepType)
|
|
71
|
+
return ActionResult.cancelled();
|
|
72
|
+
const stepName = await this.prompts.stepNamePrompt(`Step ${++stepIndex}`);
|
|
73
|
+
if (!stepName)
|
|
74
|
+
return ActionResult.cancelled();
|
|
81
75
|
switch (stepType) {
|
|
82
76
|
case StepType.Content: {
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
77
|
+
const contentResult = await this.promptForContent();
|
|
78
|
+
recipe.addContentStep(stepName, contentResult);
|
|
79
|
+
this.prompts.displayStepAddedSuccessfullyMessage();
|
|
87
80
|
break;
|
|
88
81
|
}
|
|
89
82
|
case StepType.Endpoint: {
|
|
90
83
|
if (!endpointGroups) {
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
84
|
+
const sdlResult = await withDirPath(async (tempDirectory) => {
|
|
85
|
+
const tempContext = new TempContext(tempDirectory);
|
|
86
|
+
const specZipPath = await tempContext.zip(specDirectory);
|
|
87
|
+
const specFileStream = await this.fileService.getStream(specZipPath);
|
|
88
|
+
try {
|
|
89
|
+
return await this.prompts.generateSdl(this.portalService.generateSdl(specFileStream, this.configDirectory, this.commandMetadata));
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
specFileStream.close();
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
if (sdlResult.isErr()) {
|
|
96
|
+
this.prompts.serviceError(sdlResult.error);
|
|
97
|
+
return ActionResult.failed();
|
|
94
98
|
}
|
|
95
|
-
endpointGroups =
|
|
99
|
+
endpointGroups = getEndpointGroupsFromSdl(sdlResult.value);
|
|
96
100
|
}
|
|
97
|
-
await this.
|
|
101
|
+
const endpointGroupName = await this.prompts.endpointGroupNamePrompt(endpointGroups);
|
|
102
|
+
if (!endpointGroupName)
|
|
103
|
+
return ActionResult.cancelled();
|
|
104
|
+
const endpointName = await this.prompts.endpointNamePrompt(endpointGroups, endpointGroupName);
|
|
105
|
+
if (!endpointName)
|
|
106
|
+
return ActionResult.cancelled();
|
|
107
|
+
const defaultDescription = getEndpointDescription(endpointGroups, endpointGroupName, endpointName);
|
|
108
|
+
const description = await this.prompts.endpointDescriptionPrompt(defaultDescription);
|
|
109
|
+
if (!description)
|
|
110
|
+
return ActionResult.cancelled();
|
|
111
|
+
recipe.addEndpointStep(stepName, description, endpointGroupName, endpointName);
|
|
112
|
+
this.prompts.displayStepAddedSuccessfullyMessage();
|
|
98
113
|
break;
|
|
99
114
|
}
|
|
100
115
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
this.prompts.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
if (editor === "code" || editor.endsWith("code.cmd") || editor.endsWith("code.exe")) {
|
|
130
|
-
editorArgs.push("--wait");
|
|
131
|
-
}
|
|
132
|
-
editorArgs.push(tempFilePath);
|
|
133
|
-
await execa(editor, editorArgs, { stdio: "ignore" });
|
|
134
|
-
}
|
|
135
|
-
const fileContent = await fsExtra.readFile(tempFilePath, "utf-8");
|
|
136
|
-
recipe.addContentStep(stepName, stepName, fileContent);
|
|
137
|
-
this.prompts.displayStepAddedSuccessfullyMessage();
|
|
138
|
-
return Result.success("Added content step successfully.");
|
|
139
|
-
}
|
|
140
|
-
catch (error) {
|
|
141
|
-
return Result.failure(`Unable to add content step. Please try again later.`);
|
|
142
|
-
}
|
|
143
|
-
finally {
|
|
144
|
-
await fsExtra.unlink(tempFilePath);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
async promptUserAndAddEndpointStepToRecipe(recipe, endpointGroups, stepName) {
|
|
148
|
-
const endpointGroupName = await this.prompts.endpointGroupNamePrompt(endpointGroups);
|
|
149
|
-
const endpointName = await this.prompts.endpointNamePrompt(endpointGroups, endpointGroupName);
|
|
150
|
-
const description = await this.prompts.endpointDescriptionPrompt(endpointGroups, endpointGroupName, endpointName);
|
|
151
|
-
const endpointPermalink = await this.createPermalink([endpointGroupName, endpointName]);
|
|
152
|
-
recipe.addEndpointStep(stepName, stepName, description, endpointPermalink);
|
|
153
|
-
this.prompts.displayStepAddedSuccessfullyMessage();
|
|
154
|
-
}
|
|
155
|
-
//TODO: Replace any with concrete toc file object.
|
|
156
|
-
async parseTocFile(tocFilePath) {
|
|
157
|
-
// Check if the file exists
|
|
158
|
-
if (!fs.existsSync(tocFilePath)) {
|
|
159
|
-
return Result.failure(`toc.yml file not found at ${tocFilePath}. Please run 'apimatic:toc:new' to create your toc.yml file first.`);
|
|
160
|
-
}
|
|
161
|
-
try {
|
|
162
|
-
const tocContent = await fs.promises.readFile(tocFilePath, "utf-8");
|
|
163
|
-
return Result.success(parse(tocContent));
|
|
164
|
-
}
|
|
165
|
-
catch (_a) {
|
|
166
|
-
return Result.failure(`Unable to parse the toc.yml file located at ${tocFilePath}. Please make sure that the toc.yml is a valid YAML file.`);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
async createPermalink(pathPieces) {
|
|
170
|
-
return `$e/${pathPieces.map(encodeURIComponent).join("/")}`;
|
|
171
|
-
}
|
|
172
|
-
async getBuildConfigFilePath(buildDirectoryPath) {
|
|
173
|
-
const files = await fs.promises.readdir(buildDirectoryPath.toString());
|
|
174
|
-
const buildFileExists = files.find((file) => file === this.BUILD_FILE_NAME);
|
|
175
|
-
if (!buildFileExists) {
|
|
176
|
-
return await this.prompts.buildConfigFilePathPrompt(buildDirectoryPath.toString());
|
|
177
|
-
}
|
|
178
|
-
return path.join(buildDirectoryPath.toString(), this.BUILD_FILE_NAME);
|
|
179
|
-
}
|
|
180
|
-
//TODO: Create a type for the build config and use that here instead of any.
|
|
181
|
-
async parseBuildConfig(buildConfigFilePath) {
|
|
182
|
-
try {
|
|
183
|
-
const fileData = await fs.promises.readFile(buildConfigFilePath, "utf-8");
|
|
184
|
-
return Result.success(JSON.parse(fileData));
|
|
185
|
-
}
|
|
186
|
-
catch (_a) {
|
|
187
|
-
return Result.failure(`There was an error parsing the build config file located at "${buildConfigFilePath}". Please check your build config file and try again later.`);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
checkRecipeAlreadyExists(tocData, recipeName, recipeFileName) {
|
|
191
|
-
var _a;
|
|
192
|
-
let apiRecipesGroup = (_a = tocData.toc) === null || _a === void 0 ? void 0 : _a.find((item) => item.group === "API Recipes");
|
|
193
|
-
if (!apiRecipesGroup) {
|
|
194
|
-
return false;
|
|
195
|
-
}
|
|
196
|
-
// Check if recipe name or file name already exists
|
|
197
|
-
const existingRecipe = apiRecipesGroup.items.find((item) => item.page === recipeName || item.file === `recipes/${recipeFileName}.md`);
|
|
198
|
-
if (existingRecipe) {
|
|
199
|
-
return true;
|
|
200
|
-
}
|
|
201
|
-
return false;
|
|
202
|
-
}
|
|
203
|
-
async getBuildDirectoryStructure(recipeFileName) {
|
|
116
|
+
} while (await this.prompts.addAnotherStepSelectionPrompt());
|
|
117
|
+
const serializableRecipe = recipe.toSerializableRecipe();
|
|
118
|
+
// Generate the recipe
|
|
119
|
+
const recipeGenerator = new PortalRecipeGenerator();
|
|
120
|
+
await recipeGenerator.createRecipe(serializableRecipe, tocData, tocContext.tocPath, recipeName, recipeFileName, buildContext, buildDirectory);
|
|
121
|
+
const tocStructure = this.getTocStructure(recipeFileName);
|
|
122
|
+
this.prompts.recipeCreated();
|
|
123
|
+
this.prompts.displayRecipeStructure(tocStructure);
|
|
124
|
+
this.prompts.nextSteps();
|
|
125
|
+
return ActionResult.success();
|
|
126
|
+
}
|
|
127
|
+
async promptForContent() {
|
|
128
|
+
return await withDirPath(async (tempDir) => {
|
|
129
|
+
const tempFile = new FilePath(tempDir, new FileName(`recipe-markdown-content.md`));
|
|
130
|
+
const defaultContent = "# The Heading Goes Here\n\n" +
|
|
131
|
+
"This is placeholder text for your API Recipe content step. " +
|
|
132
|
+
"Feel free to edit this. Save your changes and then close the file once you're done.";
|
|
133
|
+
await this.fileService.writeContents(tempFile, defaultContent);
|
|
134
|
+
this.prompts.openRecipeMarkdownEditor();
|
|
135
|
+
await this.launcherService.openInEditor(tempFile);
|
|
136
|
+
const fileContent = await this.fileService.getContents(tempFile);
|
|
137
|
+
return fileContent.replace(/\r\n|\r/g, "\n");
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
getTocStructure(recipeFileName) {
|
|
204
141
|
return {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
142
|
+
name: "src",
|
|
143
|
+
items: [
|
|
144
|
+
{
|
|
145
|
+
name: "content",
|
|
146
|
+
items: [
|
|
147
|
+
{
|
|
148
|
+
name: "toc.yml",
|
|
149
|
+
description: "# Contains the API Recipes group with a new page for your API recipe"
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: "static",
|
|
155
|
+
items: [
|
|
156
|
+
{
|
|
157
|
+
name: "scripts",
|
|
158
|
+
items: [
|
|
159
|
+
{
|
|
160
|
+
name: "recipes",
|
|
161
|
+
items: [
|
|
162
|
+
{
|
|
163
|
+
name: `${recipeFileName}`,
|
|
164
|
+
description: "# Generated recipe script file containing all of the steps"
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
}
|
|
170
|
+
]
|
|
213
171
|
}
|
|
214
|
-
|
|
172
|
+
]
|
|
215
173
|
};
|
|
216
174
|
}
|
|
217
|
-
async extractEndpointGroupsFromSdl(buildConfig, contentFolderPath, configDir, commandName) {
|
|
218
|
-
const specFolderPath = this.getSpecFolderPath(buildConfig, contentFolderPath);
|
|
219
|
-
if (!(await fsExtra.pathExists(specFolderPath))) {
|
|
220
|
-
return Result.failure(`API specification file not found at ${specFolderPath}.`);
|
|
221
|
-
}
|
|
222
|
-
this.prompts.startProgressIndicatorWithMessage("Extracting endpoint groups and endpoints from the API specification.");
|
|
223
|
-
const endpointGroupsResult = await this.sdlParser.getEndpointGroupsFromSdl(specFolderPath, configDir, commandName);
|
|
224
|
-
if (endpointGroupsResult.isFailed()) {
|
|
225
|
-
this.prompts.stopProgressIndicatorWithMessage("Unable to extract endpoints from your API specification.");
|
|
226
|
-
return Result.failure(`${endpointGroupsResult.error}`);
|
|
227
|
-
}
|
|
228
|
-
this.prompts.stopProgressIndicatorWithMessage("Successfully extracted endpoint groups and endpoints from the API specification.");
|
|
229
|
-
return Result.success(endpointGroupsResult.value);
|
|
230
|
-
}
|
|
231
|
-
//TODO: Replace type of buildConfig from any to actual BuildConfig type after creating it.
|
|
232
|
-
getSpecFolderPath(buildConfig, contentFolderPath) {
|
|
233
|
-
var _a;
|
|
234
|
-
const apiSpecPath = (_a = buildConfig.generatePortal) === null || _a === void 0 ? void 0 : _a.apiSpecPath;
|
|
235
|
-
if (apiSpecPath) {
|
|
236
|
-
return path.join(contentFolderPath, apiSpecPath);
|
|
237
|
-
}
|
|
238
|
-
return path.join(contentFolderPath, "spec");
|
|
239
|
-
}
|
|
240
|
-
//TODO: Replace type of buildConfig from any to actual BuildConfig type after creating it.
|
|
241
|
-
getContentFolderPath(buildConfig, buildDirectoryPath) {
|
|
242
|
-
var _a;
|
|
243
|
-
const contentFolder = (_a = buildConfig.generatePortal) === null || _a === void 0 ? void 0 : _a.contentFolder;
|
|
244
|
-
if (contentFolder) {
|
|
245
|
-
return path.join(buildDirectoryPath.toString(), contentFolder);
|
|
246
|
-
}
|
|
247
|
-
return buildDirectoryPath.toString();
|
|
248
|
-
}
|
|
249
175
|
}
|
|
250
176
|
//# sourceMappingURL=new-recipe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-recipe.js","sourceRoot":"","sources":["../../../../src/actions/portal/recipe/new-recipe.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"new-recipe.js","sourceRoot":"","sources":["../../../../src/actions/portal/recipe/new-recipe.ts"],"names":[],"mappings":"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"}
|