@apimatic/cli 1.1.0-beta.11 → 1.1.0-beta.14
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 +64 -1
- package/lib/actions/publishing/profile/list.d.ts +11 -0
- package/lib/actions/publishing/profile/list.js +29 -0
- package/lib/actions/publishing/profile/list.js.map +1 -0
- package/lib/actions/sdk/generate.d.ts +2 -1
- package/lib/actions/sdk/generate.js +3 -3
- package/lib/actions/sdk/generate.js.map +1 -1
- package/lib/actions/sdk/publish/interactive.d.ts +13 -0
- package/lib/actions/sdk/publish/interactive.js +105 -0
- package/lib/actions/sdk/publish/interactive.js.map +1 -0
- package/lib/actions/sdk/publish/non-interactive.d.ts +14 -0
- package/lib/actions/sdk/publish/non-interactive.js +101 -0
- package/lib/actions/sdk/publish/non-interactive.js.map +1 -0
- package/lib/actions/sdk/publish.d.ts +18 -0
- package/lib/actions/sdk/publish.js +57 -0
- package/lib/actions/sdk/publish.js.map +1 -0
- package/lib/commands/publishing/profile/list.d.ts +9 -0
- package/lib/commands/publishing/profile/list.js +28 -0
- package/lib/commands/publishing/profile/list.js.map +1 -0
- package/lib/commands/sdk/publish.d.ts +18 -0
- package/lib/commands/sdk/publish.js +73 -0
- package/lib/commands/sdk/publish.js.map +1 -0
- package/lib/infrastructure/env-info.d.ts +2 -0
- package/lib/infrastructure/env-info.js +23 -12
- package/lib/infrastructure/env-info.js.map +1 -1
- package/lib/infrastructure/file-service.d.ts +4 -0
- package/lib/infrastructure/file-service.js +43 -0
- package/lib/infrastructure/file-service.js.map +1 -1
- package/lib/infrastructure/git-service.d.ts +0 -1
- package/lib/infrastructure/git-service.js +0 -3
- package/lib/infrastructure/git-service.js.map +1 -1
- package/lib/infrastructure/launcher-service.d.ts +3 -0
- package/lib/infrastructure/launcher-service.js +13 -1
- package/lib/infrastructure/launcher-service.js.map +1 -1
- package/lib/infrastructure/os-extensions.d.ts +2 -0
- package/lib/infrastructure/os-extensions.js +6 -0
- package/lib/infrastructure/os-extensions.js.map +1 -0
- package/lib/infrastructure/service-error.d.ts +1 -0
- package/lib/infrastructure/service-error.js +3 -0
- package/lib/infrastructure/service-error.js.map +1 -1
- package/lib/infrastructure/services/portal-service.d.ts +2 -1
- package/lib/infrastructure/services/portal-service.js +2 -2
- package/lib/infrastructure/services/portal-service.js.map +1 -1
- package/lib/infrastructure/services/publishing-api-service.d.ts +19 -0
- package/lib/infrastructure/services/publishing-api-service.js +111 -0
- package/lib/infrastructure/services/publishing-api-service.js.map +1 -0
- package/lib/infrastructure/zip-service.d.ts +2 -2
- package/lib/infrastructure/zip-service.js +29 -11
- package/lib/infrastructure/zip-service.js.map +1 -1
- package/lib/prompts/format.d.ts +0 -2
- package/lib/prompts/format.js +0 -31
- package/lib/prompts/format.js.map +1 -1
- package/lib/prompts/prompt.d.ts +6 -0
- package/lib/prompts/prompt.js +45 -0
- package/lib/prompts/prompt.js.map +1 -1
- package/lib/prompts/publishing/profile/list.d.ts +9 -0
- package/lib/prompts/publishing/profile/list.js +27 -0
- package/lib/prompts/publishing/profile/list.js.map +1 -0
- package/lib/prompts/sdk/publish/interactive.d.ts +30 -0
- package/lib/prompts/sdk/publish/interactive.js +139 -0
- package/lib/prompts/sdk/publish/interactive.js.map +1 -0
- package/lib/prompts/sdk/publish/non-interactive.d.ts +27 -0
- package/lib/prompts/sdk/publish/non-interactive.js +97 -0
- package/lib/prompts/sdk/publish/non-interactive.js.map +1 -0
- package/lib/prompts/sdk/publish.d.ts +12 -0
- package/lib/prompts/sdk/publish.js +16 -0
- package/lib/prompts/sdk/publish.js.map +1 -0
- package/lib/types/build-context.d.ts +2 -1
- package/lib/types/build-context.js +12 -2
- package/lib/types/build-context.js.map +1 -1
- package/lib/types/events/sdk-publish-validation-failed.d.ts +5 -0
- package/lib/types/events/sdk-publish-validation-failed.js +8 -0
- package/lib/types/events/sdk-publish-validation-failed.js.map +1 -0
- package/lib/types/merge-source-tree-context.js +2 -1
- package/lib/types/merge-source-tree-context.js.map +1 -1
- package/lib/types/package-settings-context.d.ts +10 -0
- package/lib/types/package-settings-context.js +20 -0
- package/lib/types/package-settings-context.js.map +1 -0
- package/lib/types/publish/package-settings-configuration.d.ts +70 -0
- package/lib/types/publish/package-settings-configuration.js +46 -0
- package/lib/types/publish/package-settings-configuration.js.map +1 -0
- package/lib/types/publish/profile-id.d.ts +10 -0
- package/lib/types/publish/profile-id.js +22 -0
- package/lib/types/publish/profile-id.js.map +1 -0
- package/lib/types/publish/publishing-profile.d.ts +18 -0
- package/lib/types/publish/publishing-profile.js +105 -0
- package/lib/types/publish/publishing-profile.js.map +1 -0
- package/lib/types/publish/publishing-profiles.d.ts +12 -0
- package/lib/types/publish/publishing-profiles.js +36 -0
- package/lib/types/publish/publishing-profiles.js.map +1 -0
- package/lib/types/publish/version.d.ts +7 -0
- package/lib/types/publish/version.js +17 -0
- package/lib/types/publish/version.js.map +1 -0
- package/lib/types/publish-api/publish-log.d.ts +20 -0
- package/lib/types/publish-api/publish-log.js +2 -0
- package/lib/types/publish-api/publish-log.js.map +1 -0
- package/lib/types/publish-api/publishing-info.d.ts +4 -0
- package/lib/types/publish-api/publishing-info.js +2 -0
- package/lib/types/publish-api/publishing-info.js.map +1 -0
- package/lib/types/publish-api/publishing-profile-item.d.ts +183 -0
- package/lib/types/publish-api/publishing-profile-item.js +6 -0
- package/lib/types/publish-api/publishing-profile-item.js.map +1 -0
- package/package.json +16 -8
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ $ npm install -g @apimatic/cli
|
|
|
24
24
|
$ apimatic COMMAND
|
|
25
25
|
running command...
|
|
26
26
|
$ apimatic (--version)
|
|
27
|
-
@apimatic/cli/1.1.0-beta.
|
|
27
|
+
@apimatic/cli/1.1.0-beta.11 win32-x64 node-v23.4.0
|
|
28
28
|
$ apimatic --help [COMMAND]
|
|
29
29
|
USAGE
|
|
30
30
|
$ apimatic COMMAND
|
|
@@ -46,8 +46,10 @@ USAGE
|
|
|
46
46
|
* [`apimatic portal recipe new`](#apimatic-portal-recipe-new)
|
|
47
47
|
* [`apimatic portal serve`](#apimatic-portal-serve)
|
|
48
48
|
* [`apimatic portal toc new`](#apimatic-portal-toc-new)
|
|
49
|
+
* [`apimatic publishing profile list`](#apimatic-publishing-profile-list)
|
|
49
50
|
* [`apimatic quickstart`](#apimatic-quickstart)
|
|
50
51
|
* [`apimatic sdk generate`](#apimatic-sdk-generate)
|
|
52
|
+
* [`apimatic sdk publish`](#apimatic-sdk-publish)
|
|
51
53
|
* [`apimatic sdk save-changes`](#apimatic-sdk-save-changes)
|
|
52
54
|
|
|
53
55
|
## `apimatic api transform`
|
|
@@ -387,6 +389,25 @@ EXAMPLES
|
|
|
387
389
|
|
|
388
390
|
_See code: [src/commands/portal/toc/new.ts](https://github.com/apimatic/apimatic-cli/blob/beta/src/commands/portal/toc/new.ts)_
|
|
389
391
|
|
|
392
|
+
## `apimatic publishing profile list`
|
|
393
|
+
|
|
394
|
+
List all publishing profiles
|
|
395
|
+
|
|
396
|
+
```
|
|
397
|
+
USAGE
|
|
398
|
+
$ apimatic publishing profile list
|
|
399
|
+
|
|
400
|
+
DESCRIPTION
|
|
401
|
+
List all publishing profiles
|
|
402
|
+
|
|
403
|
+
Display all publishing profiles associated with your account, including each profile's name, ID and enabled languages.
|
|
404
|
+
|
|
405
|
+
EXAMPLES
|
|
406
|
+
apimatic publishing profile list
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
_See code: [src/commands/publishing/profile/list.ts](https://github.com/apimatic/apimatic-cli/blob/beta/src/commands/publishing/profile/list.ts)_
|
|
410
|
+
|
|
390
411
|
## `apimatic quickstart`
|
|
391
412
|
|
|
392
413
|
Create your first SDK or API Portal using APIMatic.
|
|
@@ -445,6 +466,48 @@ EXAMPLES
|
|
|
445
466
|
|
|
446
467
|
_See code: [src/commands/sdk/generate.ts](https://github.com/apimatic/apimatic-cli/blob/beta/src/commands/sdk/generate.ts)_
|
|
447
468
|
|
|
469
|
+
## `apimatic sdk publish`
|
|
470
|
+
|
|
471
|
+
Generate and publish an SDK to a package registry and/or source repository
|
|
472
|
+
|
|
473
|
+
```
|
|
474
|
+
USAGE
|
|
475
|
+
$ apimatic sdk publish [-p <value>] [-v <value>] [-d <value>] [-l csharp|java|php|python|ruby|typescript] [-f]
|
|
476
|
+
[-i <value>] [--publish-type package|sourcecode...] [--dry-run]
|
|
477
|
+
|
|
478
|
+
FLAGS
|
|
479
|
+
-d, --destination=<value> [default: <input>/sdk] path where the sdk will be generated.
|
|
480
|
+
-f, --force overwrite changes without asking for user consent.
|
|
481
|
+
-i, --input=<value> [default: ./] path to the parent directory containing the 'src' directory, which
|
|
482
|
+
includes API specifications and configuration files.
|
|
483
|
+
-l, --language=<option> Language of the SDK to generate and publish.
|
|
484
|
+
<options: csharp|java|php|python|ruby|typescript>
|
|
485
|
+
-p, --profile-id=<value> Id of the publishing profile to use.
|
|
486
|
+
-v, --version=<value> Semantic version of the SDK to publish (e.g. 1.0.0).
|
|
487
|
+
--dry-run Generate the SDK locally for review without publishing.
|
|
488
|
+
--publish-type=<option>... One or more publishing targets: 'package' for a package registry, 'sourcecode' for a
|
|
489
|
+
git repository.
|
|
490
|
+
<options: package|sourcecode>
|
|
491
|
+
|
|
492
|
+
DESCRIPTION
|
|
493
|
+
Generate and publish an SDK to a package registry and/or source repository
|
|
494
|
+
|
|
495
|
+
Generate and publish an SDK using a publishing profile configured in the APIMatic App. Requires an input directory
|
|
496
|
+
containing the API specification. Run without flags for a step-by-step interactive experience, or pass all required
|
|
497
|
+
flags for CI/CD automation.
|
|
498
|
+
|
|
499
|
+
EXAMPLES
|
|
500
|
+
apimatic sdk publish
|
|
501
|
+
|
|
502
|
+
apimatic sdk publish --profile-id=a1b2c3d4e5f6a1b2c3d4e5f6 --language=typescript --version=1.0.0 --publish-type=package --publish-type=sourcecode
|
|
503
|
+
|
|
504
|
+
apimatic sdk publish --profile-id=b2c3d4e5f6a1b2c3d4e5f6a1 --language=java --version=2.0.0 --publish-type=sourcecode
|
|
505
|
+
|
|
506
|
+
apimatic sdk publish --profile-id=c3d4e5f6a1b2c3d4e5f6a1b2 --language=python --version=1.0.0 --publish-type=package --dry-run
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
_See code: [src/commands/sdk/publish.ts](https://github.com/apimatic/apimatic-cli/blob/beta/src/commands/sdk/publish.ts)_
|
|
510
|
+
|
|
448
511
|
## `apimatic sdk save-changes`
|
|
449
512
|
|
|
450
513
|
Save customizations made to an auto-generated SDK
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DirectoryPath } from '../../../types/file/directoryPath.js';
|
|
2
|
+
import { CommandMetadata } from '../../../types/common/command-metadata.js';
|
|
3
|
+
import { ActionResult } from '../../action-result.js';
|
|
4
|
+
export declare class PublishingProfileListAction {
|
|
5
|
+
private readonly configDir;
|
|
6
|
+
private readonly commandMetadata;
|
|
7
|
+
private readonly prompts;
|
|
8
|
+
private readonly publishingApiService;
|
|
9
|
+
constructor(configDir: DirectoryPath, commandMetadata: CommandMetadata);
|
|
10
|
+
execute(): Promise<ActionResult>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { PublishingApiService } from '../../../infrastructure/services/publishing-api-service.js';
|
|
2
|
+
import { PublishingProfileListPrompts } from '../../../prompts/publishing/profile/list.js';
|
|
3
|
+
import { ActionResult } from '../../action-result.js';
|
|
4
|
+
import { PublishingProfiles } from '../../../types/publish/publishing-profiles.js';
|
|
5
|
+
export class PublishingProfileListAction {
|
|
6
|
+
constructor(configDir, commandMetadata) {
|
|
7
|
+
this.configDir = configDir;
|
|
8
|
+
this.commandMetadata = commandMetadata;
|
|
9
|
+
this.prompts = new PublishingProfileListPrompts();
|
|
10
|
+
this.publishingApiService = new PublishingApiService();
|
|
11
|
+
}
|
|
12
|
+
async execute() {
|
|
13
|
+
const profilesResult = await this.prompts.fetchProfiles(this.publishingApiService.getPublishingProfiles(this.configDir, this.commandMetadata.shell));
|
|
14
|
+
if (profilesResult.isErr()) {
|
|
15
|
+
this.prompts.fetchError(profilesResult.error);
|
|
16
|
+
return ActionResult.failed();
|
|
17
|
+
}
|
|
18
|
+
const publishingProfilesResult = PublishingProfiles.create(profilesResult.value);
|
|
19
|
+
if (publishingProfilesResult.isErr()) {
|
|
20
|
+
this.prompts.noProfilesFound();
|
|
21
|
+
return ActionResult.success();
|
|
22
|
+
}
|
|
23
|
+
const publishingProfiles = publishingProfilesResult.value;
|
|
24
|
+
const publishingProfileSummariesByApiGroups = publishingProfiles.toPublishingProfileSummariesByApiGroups();
|
|
25
|
+
this.prompts.displayProfiles(publishingProfileSummariesByApiGroups);
|
|
26
|
+
return ActionResult.success();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/actions/publishing/profile/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAC;AAGlG,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AAEnF,MAAM,OAAO,2BAA2B;IAItC,YAA6B,SAAwB,EAAmB,eAAgC;QAA3E,cAAS,GAAT,SAAS,CAAe;QAAmB,oBAAe,GAAf,eAAe,CAAiB;QAHvF,YAAO,GAAG,IAAI,4BAA4B,EAAE,CAAC;QAC7C,yBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAEwC,CAAC;IAErG,KAAK,CAAC,OAAO;QAClB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CACrD,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAC5F,CAAC;QAEF,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC;QAC/B,CAAC;QAED,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACjF,IAAI,wBAAwB,CAAC,KAAK,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC/B,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,KAAK,CAAC;QAC1D,MAAM,qCAAqC,GAAG,kBAAkB,CAAC,uCAAuC,EAAE,CAAC;QAC3G,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,qCAAqC,CAAC,CAAC;QACpE,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -2,6 +2,7 @@ import { DirectoryPath } from "../../types/file/directoryPath.js";
|
|
|
2
2
|
import { ActionResult } from "../action-result.js";
|
|
3
3
|
import { CommandMetadata } from "../../types/common/command-metadata.js";
|
|
4
4
|
import { Language } from "../../types/sdk/generate.js";
|
|
5
|
+
import { SemVersion } from "../../types/publish/version.js";
|
|
5
6
|
export declare class GenerateAction {
|
|
6
7
|
private readonly prompts;
|
|
7
8
|
private readonly portalService;
|
|
@@ -9,7 +10,7 @@ export declare class GenerateAction {
|
|
|
9
10
|
private readonly commandMetadata;
|
|
10
11
|
private readonly authKey;
|
|
11
12
|
constructor(configDir: DirectoryPath, commandMetadata: CommandMetadata, authKey?: string | null);
|
|
12
|
-
readonly execute: (buildDirectory: DirectoryPath, destinationSdkDirectory: DirectoryPath, language: Language, force: boolean, zipSdk: boolean, skipChanges: boolean, trackChanges: boolean, apiVersion?: string) => Promise<ActionResult<{
|
|
13
|
+
readonly execute: (buildDirectory: DirectoryPath, destinationSdkDirectory: DirectoryPath, language: Language, force: boolean, zipSdk: boolean, skipChanges: boolean, trackChanges: boolean, apiVersion?: string, packageVersion?: SemVersion, packageSettingsDirectory?: DirectoryPath) => Promise<ActionResult<{
|
|
13
14
|
sourceTreeTrackingInitiated: boolean;
|
|
14
15
|
conflictsResolved: boolean;
|
|
15
16
|
}>>;
|
|
@@ -10,7 +10,7 @@ export class GenerateAction {
|
|
|
10
10
|
constructor(configDir, commandMetadata, authKey = null) {
|
|
11
11
|
this.prompts = new SdkGeneratePrompts();
|
|
12
12
|
this.portalService = new PortalService();
|
|
13
|
-
this.execute = async (buildDirectory, destinationSdkDirectory, language, force, zipSdk, skipChanges, trackChanges, apiVersion) => {
|
|
13
|
+
this.execute = async (buildDirectory, destinationSdkDirectory, language, force, zipSdk, skipChanges, trackChanges, apiVersion, packageVersion, packageSettingsDirectory) => {
|
|
14
14
|
if (buildDirectory.isEqual(destinationSdkDirectory)) {
|
|
15
15
|
this.prompts.sameBuildAndSdkDir(buildDirectory);
|
|
16
16
|
return ActionResult.failed();
|
|
@@ -65,8 +65,8 @@ export class GenerateAction {
|
|
|
65
65
|
}
|
|
66
66
|
return await withDirPath(async (tempDirectory) => {
|
|
67
67
|
const tempContext = new TempContext(tempDirectory);
|
|
68
|
-
const buildZipPath = await
|
|
69
|
-
const response = await this.prompts.generateSDK(this.portalService.generateSdk(buildZipPath, language, this.configDir, this.commandMetadata, this.authKey));
|
|
68
|
+
const buildZipPath = await buildContext.getBuildZipPath(tempDirectory, packageSettingsDirectory);
|
|
69
|
+
const response = await this.prompts.generateSDK(this.portalService.generateSdk(buildZipPath, language, this.configDir, this.commandMetadata, this.authKey, packageVersion));
|
|
70
70
|
if (response.isErr()) {
|
|
71
71
|
this.prompts.sdkGenerationServiceError(response.error);
|
|
72
72
|
return ActionResult.failed();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/actions/sdk/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/actions/sdk/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CommandMetadata } from '../../../types/common/command-metadata.js';
|
|
2
|
+
import { DirectoryPath } from '../../../types/file/directoryPath.js';
|
|
3
|
+
import { ActionResult } from '../../action-result.js';
|
|
4
|
+
export declare class SdkPublishInteractiveAction {
|
|
5
|
+
private readonly configDir;
|
|
6
|
+
private readonly commandMetadata;
|
|
7
|
+
private readonly prompts;
|
|
8
|
+
private readonly publishingApiService;
|
|
9
|
+
constructor(configDir: DirectoryPath, commandMetadata: CommandMetadata);
|
|
10
|
+
readonly execute: (defaultBuildDirectory: DirectoryPath, onPublishSdkError: (errorMessage: string) => void) => Promise<ActionResult>;
|
|
11
|
+
static workingDirectoryValidator(defaultBuildDirectory: DirectoryPath): (value: string | undefined) => string | undefined;
|
|
12
|
+
static sdkDirectoryValidator(buildDirectory: DirectoryPath): (value: string | undefined) => string | undefined;
|
|
13
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { PublishingApiService } from '../../../infrastructure/services/publishing-api-service.js';
|
|
2
|
+
import { SdkPublishInteractivePrompts } from '../../../prompts/sdk/publish/interactive.js';
|
|
3
|
+
import { DirectoryPath } from '../../../types/file/directoryPath.js';
|
|
4
|
+
import { PublishType } from '../../../types/publish-api/publishing-profile-item.js';
|
|
5
|
+
import { PublishingProfile } from '../../../types/publish/publishing-profile.js';
|
|
6
|
+
import { PublishingProfiles } from '../../../types/publish/publishing-profiles.js';
|
|
7
|
+
import { ActionResult } from '../../action-result.js';
|
|
8
|
+
import { SdkPublishAction } from '../publish.js';
|
|
9
|
+
import { BuildContext } from '../../../types/build-context.js';
|
|
10
|
+
import { ProfileId } from '../../../types/publish/profile-id.js';
|
|
11
|
+
import { removeQuotes } from '../../../utils/string-utils.js';
|
|
12
|
+
export class SdkPublishInteractiveAction {
|
|
13
|
+
constructor(configDir, commandMetadata) {
|
|
14
|
+
this.configDir = configDir;
|
|
15
|
+
this.commandMetadata = commandMetadata;
|
|
16
|
+
this.prompts = new SdkPublishInteractivePrompts();
|
|
17
|
+
this.publishingApiService = new PublishingApiService();
|
|
18
|
+
this.execute = async (defaultBuildDirectory, onPublishSdkError) => {
|
|
19
|
+
const workingDirectory = await this.prompts.inputWorkingDirectory(defaultBuildDirectory, SdkPublishInteractiveAction.workingDirectoryValidator(defaultBuildDirectory));
|
|
20
|
+
if (!workingDirectory) {
|
|
21
|
+
await this.prompts.noInputDirectoryProvided();
|
|
22
|
+
return ActionResult.cancelled();
|
|
23
|
+
}
|
|
24
|
+
const buildDirectory = workingDirectory.join('src');
|
|
25
|
+
const defaultSdkDirectory = workingDirectory.join('sdk');
|
|
26
|
+
const sdkDirectory = await this.prompts.inputSdkDirectory(defaultSdkDirectory, SdkPublishInteractiveAction.sdkDirectoryValidator(buildDirectory));
|
|
27
|
+
if (!sdkDirectory) {
|
|
28
|
+
await this.prompts.noSdkDirectoryProvided();
|
|
29
|
+
return ActionResult.cancelled();
|
|
30
|
+
}
|
|
31
|
+
const publishingProfilesResponse = await this.prompts.getPublishingProfiles(this.publishingApiService.getPublishingProfiles(this.configDir, this.commandMetadata.shell));
|
|
32
|
+
if (publishingProfilesResponse.isErr()) {
|
|
33
|
+
this.prompts.getPublishingProfilesServiceError(publishingProfilesResponse.error);
|
|
34
|
+
return ActionResult.failed();
|
|
35
|
+
}
|
|
36
|
+
const publishingProfileItems = publishingProfilesResponse.value;
|
|
37
|
+
const publishingProfilesResult = PublishingProfiles.create(publishingProfileItems);
|
|
38
|
+
if (publishingProfilesResult.isErr()) {
|
|
39
|
+
this.prompts.noPublishingProfilesFound(publishingProfilesResult.error);
|
|
40
|
+
return ActionResult.failed();
|
|
41
|
+
}
|
|
42
|
+
const activePublishingProfiles = publishingProfilesResult.value.getActiveProfiles();
|
|
43
|
+
if (activePublishingProfiles.length === 0) {
|
|
44
|
+
this.prompts.noProfileWithEnabledLanguagesFound();
|
|
45
|
+
return ActionResult.failed();
|
|
46
|
+
}
|
|
47
|
+
const publishingProfileItem = await this.prompts.selectPublishingProfile(publishingProfilesResult.value.toActiveProfilesGroups());
|
|
48
|
+
if (!publishingProfileItem) {
|
|
49
|
+
this.prompts.noPublishingProfileSelected();
|
|
50
|
+
return ActionResult.cancelled();
|
|
51
|
+
}
|
|
52
|
+
const publishingProfile = PublishingProfile.create(publishingProfileItem);
|
|
53
|
+
const language = await this.prompts.selectLanguage(publishingProfile);
|
|
54
|
+
if (!language) {
|
|
55
|
+
this.prompts.noLanguageSelected();
|
|
56
|
+
return ActionResult.cancelled();
|
|
57
|
+
}
|
|
58
|
+
const version = await this.prompts.inputVersion();
|
|
59
|
+
if (!version) {
|
|
60
|
+
this.prompts.noVersionSpecified();
|
|
61
|
+
return ActionResult.cancelled();
|
|
62
|
+
}
|
|
63
|
+
const publishTypes = publishingProfile.getPublishTypesForLanguage(language);
|
|
64
|
+
this.prompts.publishingSummary(publishingProfile, language, version, publishTypes);
|
|
65
|
+
const confirmed = await this.prompts.confirmPublishing();
|
|
66
|
+
if (!confirmed) {
|
|
67
|
+
this.prompts.publishingCancelled();
|
|
68
|
+
return ActionResult.cancelled();
|
|
69
|
+
}
|
|
70
|
+
if (!publishTypes.includes(PublishType.PackagePublishing)) {
|
|
71
|
+
this.prompts.sourceCodeOnlyPublishingNotice();
|
|
72
|
+
}
|
|
73
|
+
const publishingProfileId = ProfileId.createFromPublishingProfileItem(publishingProfileItem);
|
|
74
|
+
const publishResult = await new SdkPublishAction(this.configDir, this.commandMetadata).execute(buildDirectory, sdkDirectory, language, publishTypes, false, publishingProfileId, version, publishingProfile, false, onPublishSdkError);
|
|
75
|
+
if (publishResult.isFailed()) {
|
|
76
|
+
return ActionResult.failed();
|
|
77
|
+
}
|
|
78
|
+
if (publishResult.isCancelled()) {
|
|
79
|
+
return ActionResult.cancelled();
|
|
80
|
+
}
|
|
81
|
+
this.prompts.sdkPublishingInProgress(publishResult.getValue().publishingLogUrl);
|
|
82
|
+
return ActionResult.success();
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
static workingDirectoryValidator(defaultBuildDirectory) {
|
|
86
|
+
return (value) => {
|
|
87
|
+
if (!value) {
|
|
88
|
+
if (!new BuildContext(defaultBuildDirectory.join('src')).existsSync())
|
|
89
|
+
return "The 'src' directory does not exist at the provided location. Please check the path and try again.";
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (!new BuildContext(new DirectoryPath(removeQuotes(value.trim())).join('src')).existsSync())
|
|
93
|
+
return "The 'src' directory does not exist at the provided location. Please check the path and try again.";
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
static sdkDirectoryValidator(buildDirectory) {
|
|
97
|
+
return (value) => {
|
|
98
|
+
if (!value)
|
|
99
|
+
return;
|
|
100
|
+
if (new DirectoryPath(removeQuotes(value.trim())).isEqual(buildDirectory))
|
|
101
|
+
return 'SDK directory must be different from the src directory.';
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=interactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../../../src/actions/sdk/publish/interactive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CommandMetadata } from '../../../types/common/command-metadata.js';
|
|
2
|
+
import { DirectoryPath } from '../../../types/file/directoryPath.js';
|
|
3
|
+
import { PublishType } from '../../../types/publish-api/publishing-profile-item.js';
|
|
4
|
+
import { Language } from '../../../types/sdk/generate.js';
|
|
5
|
+
import { ActionResult } from '../../action-result.js';
|
|
6
|
+
export declare class SdkPublishNonInteractiveAction {
|
|
7
|
+
private readonly configDir;
|
|
8
|
+
private readonly commandMetadata;
|
|
9
|
+
private readonly prompts;
|
|
10
|
+
private readonly publishingApiService;
|
|
11
|
+
private readonly fileService;
|
|
12
|
+
constructor(configDir: DirectoryPath, commandMetadata: CommandMetadata);
|
|
13
|
+
readonly execute: (buildDirectory: DirectoryPath, sdkDirectory: DirectoryPath, language: Language, publishTypes: PublishType[], force: boolean, dryRun: boolean, onPublishSdkError: (errorMessage: string) => void, profileId?: string, version?: string) => Promise<ActionResult>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { PublishingApiService } from '../../../infrastructure/services/publishing-api-service.js';
|
|
2
|
+
import { SdkPublishNonInteractivePrompts } from '../../../prompts/sdk/publish/non-interactive.js';
|
|
3
|
+
import { PublishType } from '../../../types/publish-api/publishing-profile-item.js';
|
|
4
|
+
import { PublishingProfile } from '../../../types/publish/publishing-profile.js';
|
|
5
|
+
import { ActionResult } from '../../action-result.js';
|
|
6
|
+
import { getDownloadsDirectory } from '../../../infrastructure/os-extensions.js';
|
|
7
|
+
import { SemVersion } from '../../../types/publish/version.js';
|
|
8
|
+
import { ProfileId } from '../../../types/publish/profile-id.js';
|
|
9
|
+
import { BuildContext } from '../../../types/build-context.js';
|
|
10
|
+
import { SdkPublishAction } from '../publish.js';
|
|
11
|
+
import { FileService } from '../../../infrastructure/file-service.js';
|
|
12
|
+
export class SdkPublishNonInteractiveAction {
|
|
13
|
+
constructor(configDir, commandMetadata) {
|
|
14
|
+
this.configDir = configDir;
|
|
15
|
+
this.commandMetadata = commandMetadata;
|
|
16
|
+
this.prompts = new SdkPublishNonInteractivePrompts();
|
|
17
|
+
this.publishingApiService = new PublishingApiService();
|
|
18
|
+
this.fileService = new FileService();
|
|
19
|
+
this.execute = async (buildDirectory, sdkDirectory, language, publishTypes, force, dryRun, onPublishSdkError, profileId, version) => {
|
|
20
|
+
if (buildDirectory.isEqual(sdkDirectory)) {
|
|
21
|
+
this.prompts.directoryCannotBeSame(sdkDirectory);
|
|
22
|
+
return ActionResult.failed();
|
|
23
|
+
}
|
|
24
|
+
const buildContext = new BuildContext(buildDirectory);
|
|
25
|
+
if (!(await buildContext.exists())) {
|
|
26
|
+
this.prompts.srcDirectoryDoesNotExist(buildDirectory);
|
|
27
|
+
return ActionResult.failed();
|
|
28
|
+
}
|
|
29
|
+
const missing = [];
|
|
30
|
+
if (!profileId)
|
|
31
|
+
missing.push('--profile-id');
|
|
32
|
+
if (!language)
|
|
33
|
+
missing.push('--language');
|
|
34
|
+
if (!version)
|
|
35
|
+
missing.push('--version');
|
|
36
|
+
if (!publishTypes || publishTypes.length === 0)
|
|
37
|
+
missing.push('--publish-type');
|
|
38
|
+
if (missing.length > 0) {
|
|
39
|
+
this.prompts.missingRequiredFlags(missing);
|
|
40
|
+
this.prompts.interactiveModeNotice();
|
|
41
|
+
return ActionResult.failed();
|
|
42
|
+
}
|
|
43
|
+
const semVersionResult = SemVersion.tryCreate(version);
|
|
44
|
+
if (semVersionResult.isErr()) {
|
|
45
|
+
this.prompts.invalidVersion(version);
|
|
46
|
+
return ActionResult.failed();
|
|
47
|
+
}
|
|
48
|
+
const profileIdResult = ProfileId.tryCreate(profileId);
|
|
49
|
+
if (profileIdResult.isErr()) {
|
|
50
|
+
this.prompts.invalidProfileId(profileId);
|
|
51
|
+
return ActionResult.failed();
|
|
52
|
+
}
|
|
53
|
+
const publishingProfilesResponse = await this.prompts.getPublishingProfiles(this.publishingApiService.getPublishingProfiles(this.configDir, this.commandMetadata.shell));
|
|
54
|
+
if (publishingProfilesResponse.isErr()) {
|
|
55
|
+
this.prompts.getPublishingProfilesServiceError(publishingProfilesResponse.error);
|
|
56
|
+
return ActionResult.failed();
|
|
57
|
+
}
|
|
58
|
+
const publishingProfileId = profileIdResult.value;
|
|
59
|
+
const publishingProfileItem = publishingProfilesResponse.value.find((profile) => ProfileId.tryCreate(profile.id).match((id) => publishingProfileId.isEqual(id), () => false));
|
|
60
|
+
if (!publishingProfileItem) {
|
|
61
|
+
this.prompts.publishingProfileNotFound(publishingProfileId);
|
|
62
|
+
return ActionResult.failed();
|
|
63
|
+
}
|
|
64
|
+
const publishingProfile = PublishingProfile.create(publishingProfileItem);
|
|
65
|
+
if (!publishingProfile.isLanguageEnabled(language)) {
|
|
66
|
+
this.prompts.languageNotConfiguredForProfile(language);
|
|
67
|
+
return ActionResult.failed();
|
|
68
|
+
}
|
|
69
|
+
const unallowedPublishTypes = publishingProfile.getUnallowedPublishTypes(language, publishTypes);
|
|
70
|
+
if (unallowedPublishTypes.length > 0) {
|
|
71
|
+
this.prompts.publishTypesNotAvailableForLanguage(unallowedPublishTypes, language);
|
|
72
|
+
return ActionResult.failed();
|
|
73
|
+
}
|
|
74
|
+
if (!publishTypes.includes(PublishType.PackagePublishing)) {
|
|
75
|
+
this.prompts.sourceCodeOnlyPublishingNotice();
|
|
76
|
+
}
|
|
77
|
+
const semVersion = semVersionResult.value;
|
|
78
|
+
const outputDir = dryRun ? await this.fileService.getAvailableDirectoryPath(getDownloadsDirectory('apimatic-sdk')) : sdkDirectory;
|
|
79
|
+
const publishResult = await new SdkPublishAction(this.configDir, this.commandMetadata).execute(buildDirectory, outputDir, language, publishTypes, force, publishingProfileId, semVersion, publishingProfile, dryRun, onPublishSdkError);
|
|
80
|
+
if (publishResult.isFailed()) {
|
|
81
|
+
return ActionResult.failed();
|
|
82
|
+
}
|
|
83
|
+
if (publishResult.isCancelled()) {
|
|
84
|
+
return ActionResult.cancelled();
|
|
85
|
+
}
|
|
86
|
+
// Since publishing was not initiated, skip the next steps for polling.
|
|
87
|
+
if (dryRun) {
|
|
88
|
+
return ActionResult.success();
|
|
89
|
+
}
|
|
90
|
+
const publishingInfo = publishResult.getValue();
|
|
91
|
+
this.prompts.publishingRunningNotice(publishingProfile, language, semVersion, publishTypes);
|
|
92
|
+
const publishingSucceeded = await this.prompts.pollPublishingStatus(() => this.publishingApiService.getSdkPublishingLog(publishingInfo.publishLogId, this.configDir, this.commandMetadata.shell));
|
|
93
|
+
this.prompts.postPublishingMessage(publishingInfo.publishingLogUrl);
|
|
94
|
+
if (!publishingSucceeded) {
|
|
95
|
+
return ActionResult.failed();
|
|
96
|
+
}
|
|
97
|
+
return ActionResult.success();
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=non-interactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-interactive.js","sourceRoot":"","sources":["../../../../src/actions/sdk/publish/non-interactive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CommandMetadata } from '../../types/common/command-metadata.js';
|
|
2
|
+
import { DirectoryPath } from '../../types/file/directoryPath.js';
|
|
3
|
+
import { PublishType } from '../../types/publish-api/publishing-profile-item.js';
|
|
4
|
+
import { PublishingInfo } from '../../types/publish-api/publishing-info.js';
|
|
5
|
+
import { ProfileId } from '../../types/publish/profile-id.js';
|
|
6
|
+
import { SemVersion } from '../../types/publish/version.js';
|
|
7
|
+
import { Language } from '../../types/sdk/generate.js';
|
|
8
|
+
import { PublishingProfile } from '../../types/publish/publishing-profile.js';
|
|
9
|
+
import { ActionResult } from '../action-result.js';
|
|
10
|
+
export declare class SdkPublishAction {
|
|
11
|
+
private readonly configDir;
|
|
12
|
+
private readonly commandMetadata;
|
|
13
|
+
private readonly prompts;
|
|
14
|
+
private readonly publishingApiService;
|
|
15
|
+
private readonly launcherService;
|
|
16
|
+
constructor(configDir: DirectoryPath, commandMetadata: CommandMetadata);
|
|
17
|
+
readonly execute: (buildDirectory: DirectoryPath, outputDirectory: DirectoryPath, language: Language, publishType: PublishType[], force: boolean, profileId: ProfileId, semVersion: SemVersion, publishingProfile: PublishingProfile, dryRun: boolean, onPublishSdkError: (errorMessage: string) => void) => Promise<ActionResult<PublishingInfo>>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { PublishingApiService } from '../../infrastructure/services/publishing-api-service.js';
|
|
2
|
+
import { withDirPath } from '../../infrastructure/tmp-extensions.js';
|
|
3
|
+
import { LauncherService } from '../../infrastructure/launcher-service.js';
|
|
4
|
+
import { SdkPublishPrompts } from '../../prompts/sdk/publish.js';
|
|
5
|
+
import { PackageSettingsConfiguration } from '../../types/publish/package-settings-configuration.js';
|
|
6
|
+
import { PackageSettingsContext } from '../../types/package-settings-context.js';
|
|
7
|
+
import { TempContext } from '../../types/temp-context.js';
|
|
8
|
+
import { ActionResult } from '../action-result.js';
|
|
9
|
+
import { GenerateAction } from './generate.js';
|
|
10
|
+
import { FileName } from '../../types/file/fileName.js';
|
|
11
|
+
import { FilePath } from '../../types/file/filePath.js';
|
|
12
|
+
export class SdkPublishAction {
|
|
13
|
+
constructor(configDir, commandMetadata) {
|
|
14
|
+
this.configDir = configDir;
|
|
15
|
+
this.commandMetadata = commandMetadata;
|
|
16
|
+
this.prompts = new SdkPublishPrompts();
|
|
17
|
+
this.publishingApiService = new PublishingApiService();
|
|
18
|
+
this.launcherService = new LauncherService();
|
|
19
|
+
this.execute = async (buildDirectory, outputDirectory, language, publishType, force, profileId, semVersion, publishingProfile, dryRun, onPublishSdkError) => {
|
|
20
|
+
return await withDirPath(async (tempDirectory) => {
|
|
21
|
+
const packageConfiguration = publishingProfile.getPackageConfigurationForLanguage(language);
|
|
22
|
+
let packageSettingsDirectory;
|
|
23
|
+
if (packageConfiguration !== null && packageConfiguration.isEnabled) {
|
|
24
|
+
const packageSettingsConfiguration = PackageSettingsConfiguration.create(language, packageConfiguration);
|
|
25
|
+
packageSettingsDirectory = tempDirectory.join('package-settings');
|
|
26
|
+
const packageSettingsContext = new PackageSettingsContext(packageSettingsDirectory);
|
|
27
|
+
await packageSettingsContext.writeConfiguration(packageSettingsConfiguration, language);
|
|
28
|
+
}
|
|
29
|
+
const sdkGenerateAction = new GenerateAction(this.configDir, this.commandMetadata);
|
|
30
|
+
const sdkGenerationResult = await sdkGenerateAction.execute(buildDirectory, outputDirectory, language, force, false, false, false, undefined, semVersion, packageSettingsDirectory);
|
|
31
|
+
if (sdkGenerationResult.isFailed()) {
|
|
32
|
+
return ActionResult.failed();
|
|
33
|
+
}
|
|
34
|
+
if (sdkGenerationResult.isCancelled()) {
|
|
35
|
+
return ActionResult.cancelled();
|
|
36
|
+
}
|
|
37
|
+
const sdkLanguageDirectory = outputDirectory.join(language);
|
|
38
|
+
if (dryRun) {
|
|
39
|
+
this.prompts.dryRunNotice(publishingProfile, language, semVersion, publishType);
|
|
40
|
+
const readmeFilePath = new FilePath(sdkLanguageDirectory, new FileName('README.md'));
|
|
41
|
+
await this.launcherService.openDirectoryInEditorOrFileExplorer(sdkLanguageDirectory, readmeFilePath);
|
|
42
|
+
return ActionResult.success();
|
|
43
|
+
}
|
|
44
|
+
const tempContext = new TempContext(tempDirectory);
|
|
45
|
+
const sdkFilePath = await tempContext.zip(sdkLanguageDirectory);
|
|
46
|
+
const publishSdkResponse = await this.prompts.publishSdk(this.publishingApiService.publishSdkPackage(sdkFilePath, profileId, language, semVersion, publishType, this.configDir, this.commandMetadata.shell));
|
|
47
|
+
if (publishSdkResponse.isErr()) {
|
|
48
|
+
this.prompts.sdkPublishingServiceError(publishSdkResponse.error);
|
|
49
|
+
onPublishSdkError(publishSdkResponse.error.errorMessage);
|
|
50
|
+
return ActionResult.failed();
|
|
51
|
+
}
|
|
52
|
+
return ActionResult.success(publishSdkResponse.value);
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/actions/sdk/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class PublishingProfileList extends Command {
|
|
3
|
+
static readonly summary = "List all publishing profiles";
|
|
4
|
+
static readonly description = "Display all publishing profiles associated with your account, including each profile's name, ID and enabled languages.";
|
|
5
|
+
private static readonly cmdTxt;
|
|
6
|
+
static examples: string[];
|
|
7
|
+
run(): Promise<void>;
|
|
8
|
+
private readonly getConfigDir;
|
|
9
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
import { DirectoryPath } from '../../../types/file/directoryPath.js';
|
|
3
|
+
import { format, intro, outro } from '../../../prompts/format.js';
|
|
4
|
+
import { PublishingProfileListAction } from '../../../actions/publishing/profile/list.js';
|
|
5
|
+
class PublishingProfileList extends Command {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.getConfigDir = () => {
|
|
9
|
+
return new DirectoryPath(this.config.configDir);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
async run() {
|
|
13
|
+
const commandMetadata = {
|
|
14
|
+
commandName: PublishingProfileList.id,
|
|
15
|
+
shell: this.config.shell
|
|
16
|
+
};
|
|
17
|
+
intro('Publishing Profile List');
|
|
18
|
+
const action = new PublishingProfileListAction(this.getConfigDir(), commandMetadata);
|
|
19
|
+
const result = await action.execute();
|
|
20
|
+
outro(result);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
PublishingProfileList.summary = 'List all publishing profiles';
|
|
24
|
+
PublishingProfileList.description = `Display all publishing profiles associated with your account, including each profile's name, ID and enabled languages.`;
|
|
25
|
+
PublishingProfileList.cmdTxt = format.cmd('apimatic', 'publishing', 'profile', 'list');
|
|
26
|
+
PublishingProfileList.examples = [PublishingProfileList.cmdTxt];
|
|
27
|
+
export default PublishingProfileList;
|
|
28
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/publishing/profile/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAE1F,MAAqB,qBAAsB,SAAQ,OAAO;IAA1D;;QAqBmB,iBAAY,GAAG,GAAG,EAAE;YACnC,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC;IAfC,KAAK,CAAC,GAAG;QACP,MAAM,eAAe,GAAoB;YACvC,WAAW,EAAE,qBAAqB,CAAC,EAAE;YACrC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACzB,CAAC;QAEF,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACtC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;;AAlBe,6BAAO,GAAG,8BAA8B,AAAjC,CAAkC;AAEzC,iCAAW,GAAG,wHAAwH,AAA3H,CAA4H;AAE/H,4BAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,AAA1D,CAA2D;AAElF,8BAAQ,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,AAAjC,CAAkC;eAP9B,qBAAqB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class SdkPublish extends Command {
|
|
3
|
+
static readonly summary = "Generate and publish an SDK to a package registry and/or source repository";
|
|
4
|
+
static readonly description = "Generate and publish an SDK using a publishing profile configured in the APIMatic App. Requires an input directory containing the API specification. Run without flags for a step-by-step interactive experience, or pass all required flags for CI/CD automation.";
|
|
5
|
+
static readonly cmdTxt: string;
|
|
6
|
+
static flags: {
|
|
7
|
+
'publish-type': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
language: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
destination: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
'profile-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
version: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
};
|
|
15
|
+
static examples: string[];
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
private readonly getConfigDir;
|
|
18
|
+
}
|