bump-cli 2.3.0 → 2.3.3

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 CHANGED
@@ -114,7 +114,7 @@ From a Bump documentation, the `diff` command will retrieve a comparaison change
114
114
 
115
115
  ```sh-session
116
116
  $ bump diff path/to/your/file.yml --doc DOC_ID_OR_SLUG --token DOC_TOKEN
117
- * Let's compare the given definition file with the currently deployed one... done
117
+ * Comparing the given definition file with the currently deployed one... done
118
118
 
119
119
  Updated: POST /validations
120
120
  Body attribute modified: documentation
@@ -124,7 +124,7 @@ If you want to compare two unpublished versions of your definition file, the `di
124
124
 
125
125
  ```sh-session
126
126
  $ bump diff path/to/your/file.yml path/to/your/next-file.yml --doc <doc_slug> --token <your_doc_token>
127
- * Let's compare the two given definition files... done
127
+ * Comparing the two given definition files... done
128
128
 
129
129
  Updated: POST /versions
130
130
  Body attribute added: previous_version_id
@@ -1,16 +1,18 @@
1
1
  import * as Config from '@oclif/config';
2
2
  import { AxiosInstance, AxiosResponse } from 'axios';
3
- import { PingResponse, PreviewRequest, PreviewResponse, VersionRequest, VersionResponse } from './models';
3
+ import { PingResponse, PreviewRequest, PreviewResponse, VersionRequest, VersionResponse, DiffRequest, DiffResponse, WithDiff } from './models';
4
4
  import APIError from './error';
5
5
  declare class BumpApi {
6
6
  protected config: Config.IConfig;
7
7
  protected readonly client: AxiosInstance;
8
8
  constructor(config: Config.IConfig);
9
9
  getPing: () => Promise<AxiosResponse<PingResponse>>;
10
- getVersion: (versionId: string, token: string) => Promise<AxiosResponse<VersionResponse>>;
10
+ getVersion: (versionId: string, token: string) => Promise<AxiosResponse<VersionResponse & WithDiff>>;
11
11
  postPreview: (body?: PreviewRequest | undefined) => Promise<AxiosResponse<PreviewResponse>>;
12
12
  putPreview: (versionId: string, body?: PreviewRequest | undefined) => Promise<AxiosResponse<PreviewResponse>>;
13
13
  postVersion: (body: VersionRequest, token: string) => Promise<AxiosResponse<VersionResponse>>;
14
+ postDiff: (body: DiffRequest) => Promise<AxiosResponse<DiffResponse>>;
15
+ getDiff: (diffId: string) => Promise<AxiosResponse<DiffResponse>>;
14
16
  postValidation: (body: VersionRequest, token: string) => Promise<AxiosResponse<void>>;
15
17
  private initializeResponseInterceptor;
16
18
  private handleError;
package/lib/api/index.js CHANGED
@@ -29,6 +29,12 @@ class BumpApi {
29
29
  headers: this.authorizationHeader(token),
30
30
  });
31
31
  };
32
+ this.postDiff = (body) => {
33
+ return this.client.post('/diffs', body);
34
+ };
35
+ this.getDiff = (diffId) => {
36
+ return this.client.get(`/diffs/${diffId}`);
37
+ };
32
38
  this.postValidation = (body, token) => {
33
39
  return this.client.post('/validations', body, {
34
40
  headers: this.authorizationHeader(token),
@@ -33,7 +33,33 @@ export interface VersionRequest {
33
33
  export interface VersionResponse {
34
34
  id: string;
35
35
  doc_public_url?: string;
36
+ }
37
+ export interface WithDiff {
36
38
  diff_public_url?: string;
37
39
  diff_summary?: string;
40
+ diff_markdown?: string;
41
+ diff_details?: DiffItem[];
38
42
  diff_breaking?: boolean;
39
43
  }
44
+ export interface DiffRequest {
45
+ definition: string;
46
+ references?: Reference[];
47
+ previous_definition: string;
48
+ previous_references?: Reference[];
49
+ }
50
+ export interface DiffResponse {
51
+ id: string;
52
+ public_url?: string;
53
+ text?: string;
54
+ markdown?: string;
55
+ details?: DiffItem[];
56
+ breaking?: boolean;
57
+ }
58
+ export interface DiffItem {
59
+ id: string;
60
+ name: string;
61
+ status: string;
62
+ type: string;
63
+ breaking: boolean;
64
+ children: DiffItem[];
65
+ }
package/lib/args.js CHANGED
@@ -4,7 +4,7 @@ exports.otherFileArg = exports.fileArg = void 0;
4
4
  const fileArg = {
5
5
  name: 'FILE',
6
6
  required: true,
7
- description: 'Path or URL to your API documentation file. OpenAPI (2.0 to 3.1.0) and AsyncAPI (2.0 to 2.2) specifications are currently supported.',
7
+ description: 'Path or URL to your API documentation file. OpenAPI (2.0 to 3.1.0) and AsyncAPI (2.x) specifications are currently supported.',
8
8
  };
9
9
  exports.fileArg = fileArg;
10
10
  const otherFileArg = {
@@ -1,6 +1,6 @@
1
1
  import Command from '../command';
2
2
  import * as flags from '../flags';
3
- import { VersionResponse } from '../api/models';
3
+ import { DiffResponse } from '../api/models';
4
4
  export default class Diff extends Command {
5
5
  static description: string;
6
6
  static examples: string[];
@@ -10,11 +10,12 @@ export default class Diff extends Command {
10
10
  hub: flags.IOptionFlag<string | undefined>;
11
11
  token: flags.IOptionFlag<string | undefined>;
12
12
  open: import("@oclif/parser/lib/flags").IBooleanFlag<boolean>;
13
+ format: flags.IOptionFlag<string | undefined>;
13
14
  };
14
15
  static args: {
15
16
  name: string;
16
17
  description: string;
17
18
  }[];
18
- run(): Promise<VersionResponse | void>;
19
- displayCompareResult(version: VersionResponse, open: boolean): Promise<void>;
19
+ run(): Promise<void>;
20
+ displayCompareResult(result: DiffResponse, format: string, open: boolean): Promise<void>;
20
21
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ const errors_1 = require("@oclif/errors");
4
5
  const command_1 = (0, tslib_1.__importDefault)(require("../command"));
5
6
  const flags = (0, tslib_1.__importStar)(require("../flags"));
6
7
  const diff_1 = require("../core/diff");
@@ -15,34 +16,47 @@ class Diff extends command_1.default {
15
16
  */
16
17
  async run() {
17
18
  const { args, flags } = this.parse(Diff);
18
- /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */
19
19
  const [documentation, hub, token] = [flags.doc, flags.hub, flags.token];
20
- if (args.FILE2) {
21
- cli_1.cli.action.start("* Let's compare the two given definition files");
20
+ if (flags.format == 'text') {
21
+ if (args.FILE2) {
22
+ cli_1.cli.action.start('* Comparing the two given definition files');
23
+ }
24
+ else {
25
+ cli_1.cli.action.start('* Comparing the given definition file with the currently deployed one');
26
+ }
22
27
  }
23
- else {
24
- cli_1.cli.action.start("* Let's compare the given definition file with the currently deployed one");
28
+ if (!args.FILE2 && (!documentation || !token)) {
29
+ throw new errors_1.CLIError('Please provide a second file argument or login with an existing token');
25
30
  }
26
- const version = await new diff_1.Diff(this.config).run(args.FILE, args.FILE2, documentation, hub, token);
31
+ const diff = await new diff_1.Diff(this.config).run(args.FILE, args.FILE2, documentation, hub, token);
27
32
  cli_1.cli.action.stop();
28
- if (version) {
29
- await this.displayCompareResult(version, flags.open);
33
+ if (diff) {
34
+ /* Flags format has a default value, so it's always defined. But
35
+ * oclif types can"t detect it */
36
+ /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */
37
+ await this.displayCompareResult(diff, flags.format, flags.open);
30
38
  }
31
39
  else {
32
40
  await cli_1.cli.log('No changes detected.');
33
41
  }
34
42
  return;
35
43
  }
36
- async displayCompareResult(version, open) {
37
- if (version && version.diff_summary) {
38
- await cli_1.cli.log(version.diff_summary);
39
- if (open && version.diff_public_url) {
40
- await cli_1.cli.open(version.diff_public_url);
41
- }
44
+ async displayCompareResult(result, format, open) {
45
+ if (format == 'text' && result.text) {
46
+ await cli_1.cli.log(result.text);
47
+ }
48
+ else if (format == 'markdown' && result.markdown) {
49
+ await cli_1.cli.log(result.markdown);
50
+ }
51
+ else if (format == 'json' && result.details) {
52
+ await cli_1.cli.log(JSON.stringify(result.details, null, 2));
42
53
  }
43
54
  else {
44
55
  await cli_1.cli.log('No structural changes detected.');
45
56
  }
57
+ if (open && result.public_url) {
58
+ await cli_1.cli.open(result.public_url);
59
+ }
46
60
  }
47
61
  }
48
62
  exports.default = Diff;
@@ -51,14 +65,14 @@ Diff.examples = [
51
65
  `Compare a potential new version with the currently published one:
52
66
 
53
67
  $ bump diff FILE --doc <your_doc_id_or_slug> --token <your_doc_token>
54
- * Let's compare the given definition file with the currently deployed one... done
68
+ * Comparing the given definition file with the currently deployed one... done
55
69
  Removed: GET /compare
56
70
  Added: GET /versions/{versionId}
57
71
  `,
58
72
  `Store the diff in a dedicated file:
59
73
 
60
74
  $ bump diff FILE --doc <doc_slug> --token <doc_token> > /tmp/my-saved-diff
61
- * Let's compare the given definition file with the currently deployed one... done
75
+ * Comparing the given definition file with the currently deployed one... done
62
76
 
63
77
  $ cat /tmp/my-saved-diff
64
78
  Removed: GET /compare
@@ -67,22 +81,23 @@ Diff.examples = [
67
81
  `In case of a non modified definition FILE compared to your existing documentation, no changes are output:
68
82
 
69
83
  $ bump diff FILE --doc <doc_slug> --token <your_doc_token>
70
- * Let's compare the given definition file with the currently deployed one... done
84
+ * Comparing the given definition file with the currently deployed one... done
71
85
  › Warning: Your documentation has not changed
72
86
  `,
73
87
  `Compare two different input files or URL independently to the one published on bump.sh
74
88
 
75
89
  $ bump diff FILE FILE2 --doc <doc_slug> --token <your_doc_token>
76
- * Let's compare the two given definition files... done
90
+ * Comparing the two given definition files... done
77
91
  Updated: POST /versions
78
92
  Body attribute added: previous_version_id
79
93
  `,
80
94
  ];
81
95
  Diff.flags = {
82
96
  help: flags.help({ char: 'h' }),
83
- doc: flags.doc(),
97
+ doc: flags.doc({ required: false }),
84
98
  hub: flags.hub(),
85
- token: flags.token(),
99
+ token: flags.token({ required: false }),
86
100
  open: flags.open({ description: 'Open the visual diff in your browser' }),
101
+ format: flags.format(),
87
102
  };
88
103
  Diff.args = [args_1.fileArg, args_1.otherFileArg];
@@ -1,18 +1,22 @@
1
1
  import * as Config from '@oclif/config';
2
2
  import { BumpApi } from '../api';
3
- import { VersionResponse } from '../api/models';
3
+ import { VersionResponse, WithDiff, DiffResponse } from '../api/models';
4
4
  export declare class Diff {
5
5
  _bump: BumpApi;
6
6
  _config: Config.IConfig;
7
7
  constructor(config: Config.IConfig);
8
- run(file1: string, file2: string | undefined, documentation: string, hub: string | undefined, token: string): Promise<VersionResponse | undefined>;
8
+ run(file1: string, file2: string | undefined, documentation: string | undefined, hub: string | undefined, token: string | undefined): Promise<DiffResponse | undefined>;
9
9
  get bumpClient(): BumpApi;
10
10
  get pollingPeriod(): number;
11
+ createDiff(file1: string, file2: string): Promise<DiffResponse | undefined>;
11
12
  createVersion(file: string, documentation: string, token: string, hub: string | undefined, previous_version_id?: string | undefined): Promise<VersionResponse | undefined>;
12
- waitResult(versionId: string, token: string, opts: {
13
+ waitResult(result: VersionResponse | DiffResponse, token: string | undefined, opts: {
13
14
  timeout: number;
14
- }): Promise<VersionResponse>;
15
+ }): Promise<DiffResponse>;
15
16
  pollingDelay(): Promise<void>;
16
17
  private delay;
17
18
  d(formatter: any, ...args: any[]): void;
19
+ isVersion(result: VersionResponse | DiffResponse): result is VersionResponse;
20
+ isVersionWithDiff(result: (VersionResponse & WithDiff) | DiffResponse): result is VersionResponse & WithDiff;
21
+ extractDiff(versionWithDiff: VersionResponse & WithDiff): DiffResponse;
18
22
  }
package/lib/core/diff.js CHANGED
@@ -11,20 +11,27 @@ class Diff {
11
11
  this._config = config;
12
12
  }
13
13
  async run(file1, file2, documentation, hub, token) {
14
- const version = await this.createVersion(file1, documentation, token, hub);
15
14
  let diffVersion = undefined;
16
- if (file2) {
17
- diffVersion = await this.createVersion(file2, documentation, token, hub, version && version.id);
15
+ if (file2 && (!documentation || !token)) {
16
+ diffVersion = await this.createDiff(file1, file2);
18
17
  }
19
18
  else {
20
- diffVersion = version;
19
+ if (!documentation || !token) {
20
+ throw new Error('Please login to bump (with documentation & token) when using a single file argument');
21
+ }
22
+ diffVersion = await this.createVersion(file1, documentation, token, hub);
23
+ if (file2) {
24
+ diffVersion = await this.createVersion(file2, documentation, token, hub, diffVersion && diffVersion.id);
25
+ }
21
26
  }
22
27
  if (diffVersion) {
23
- diffVersion = await this.waitResult(diffVersion.id, token, {
28
+ return await this.waitResult(diffVersion, token, {
24
29
  timeout: 30,
25
30
  });
26
31
  }
27
- return diffVersion;
32
+ else {
33
+ return undefined;
34
+ }
28
35
  }
29
36
  get bumpClient() {
30
37
  if (!this._bump)
@@ -34,6 +41,29 @@ class Diff {
34
41
  get pollingPeriod() {
35
42
  return 1000;
36
43
  }
44
+ async createDiff(file1, file2) {
45
+ const api = await definition_1.API.load(file1);
46
+ const [previous_definition, previous_references] = api.extractDefinition();
47
+ const api2 = await definition_1.API.load(file2);
48
+ const [definition, references] = api2.extractDefinition();
49
+ const request = {
50
+ previous_definition,
51
+ previous_references,
52
+ definition,
53
+ references,
54
+ };
55
+ const response = await this.bumpClient.postDiff(request);
56
+ switch (response.status) {
57
+ case 201:
58
+ this.d(`Diff created with ID ${response.data.id}`);
59
+ this.d(response.data);
60
+ return response.data;
61
+ break;
62
+ case 204:
63
+ break;
64
+ }
65
+ return;
66
+ }
37
67
  async createVersion(file, documentation, token, hub, previous_version_id = undefined) {
38
68
  const api = await definition_1.API.load(file);
39
69
  const [definition, references] = api.extractDefinition();
@@ -56,22 +86,31 @@ class Diff {
56
86
  }
57
87
  return;
58
88
  }
59
- async waitResult(versionId, token, opts) {
60
- const diffResponse = await this.bumpClient.getVersion(versionId, token);
89
+ async waitResult(result, token, opts) {
90
+ let pollingResponse = undefined;
91
+ if (this.isVersion(result) && token) {
92
+ pollingResponse = await this.bumpClient.getVersion(result.id, token);
93
+ }
94
+ else {
95
+ pollingResponse = await this.bumpClient.getDiff(result.id);
96
+ }
61
97
  if (opts.timeout <= 0) {
62
98
  throw new errors_1.CLIError('We were unable to compute your documentation diff. Sorry about that. Please try again later');
63
99
  }
64
- switch (diffResponse.status) {
100
+ switch (pollingResponse.status) {
65
101
  case 200:
66
- const version = diffResponse.data;
67
- this.d(`Received version:`);
68
- this.d(version);
69
- return version;
102
+ let diff = pollingResponse.data;
103
+ if (this.isVersionWithDiff(diff)) {
104
+ diff = this.extractDiff(diff);
105
+ }
106
+ this.d('Received diff:');
107
+ this.d(diff);
108
+ return diff;
70
109
  break;
71
110
  case 202:
72
- this.d('Waiting 1 sec before next pool');
111
+ this.d('Waiting 1 sec before next poll');
73
112
  await this.pollingDelay();
74
- return await this.waitResult(versionId, token, {
113
+ return await this.waitResult(result, token, {
75
114
  timeout: opts.timeout - 1,
76
115
  });
77
116
  break;
@@ -90,5 +129,22 @@ class Diff {
90
129
  d(formatter, ...args) {
91
130
  return (0, debug_1.default)(`bump-cli:core:diff`)(formatter, ...args);
92
131
  }
132
+ isVersion(result) {
133
+ return result.doc_public_url !== undefined;
134
+ }
135
+ isVersionWithDiff(result) {
136
+ return result.diff_summary !== undefined;
137
+ }
138
+ extractDiff(versionWithDiff) {
139
+ // TODO: return a real diff_id in the GET /version API
140
+ return {
141
+ id: versionWithDiff.id,
142
+ public_url: versionWithDiff.diff_public_url,
143
+ text: versionWithDiff.diff_summary,
144
+ markdown: versionWithDiff.diff_markdown,
145
+ details: versionWithDiff.diff_details,
146
+ breaking: versionWithDiff.diff_breaking,
147
+ };
148
+ }
93
149
  }
94
150
  exports.Diff = Diff;
package/lib/definition.js CHANGED
@@ -10,14 +10,15 @@ const path_1 = (0, tslib_1.__importDefault)(require("path"));
10
10
  class SupportedFormat {
11
11
  }
12
12
  SupportedFormat.openapi = {
13
- '2.0.x': require('oas-schemas/schemas/v2.0/schema.json'),
14
- '3.0.x': require('oas-schemas/schemas/v3.0/schema.json'),
15
- '3.1.x': require('oas-schemas/schemas/v3.1/schema.json'),
13
+ '2.0': require('oas-schemas/schemas/v2.0/schema.json'),
14
+ '3.0': require('oas-schemas/schemas/v3.0/schema.json'),
15
+ '3.1': require('oas-schemas/schemas/v3.1/schema.json'),
16
16
  };
17
17
  SupportedFormat.asyncapi = {
18
- '2.0.0': specs_1.default['2.0.0'],
19
- '2.1.0': specs_1.default['2.1.0'],
20
- '2.2.0': specs_1.default['2.2.0'],
18
+ '2.0': specs_1.default['2.0.0'],
19
+ '2.1': specs_1.default['2.1.0'],
20
+ '2.2': specs_1.default['2.2.0'],
21
+ '2.3': specs_1.default['2.3.0'],
21
22
  };
22
23
  class UnsupportedFormat extends errors_1.CLIError {
23
24
  constructor(message = '') {
@@ -46,7 +47,7 @@ class API {
46
47
  }
47
48
  getSpec(definition) {
48
49
  if (API.isAsyncAPI(definition)) {
49
- return SupportedFormat.asyncapi[this.version];
50
+ return SupportedFormat.asyncapi[this.versionWithoutPatch()];
50
51
  }
51
52
  else {
52
53
  return SupportedFormat.openapi[this.versionWithoutPatch()];
@@ -70,7 +71,7 @@ class API {
70
71
  }
71
72
  versionWithoutPatch() {
72
73
  const [major, minor] = this.version.split('.', 3);
73
- return `${major}.${minor}.x`;
74
+ return `${major}.${minor}`;
74
75
  }
75
76
  /* Resolve reference absolute paths to the main api location when possible */
76
77
  resolveRelativeLocation(absPath) {
package/lib/flags.d.ts CHANGED
@@ -9,4 +9,5 @@ declare const autoCreate: (options?: {}) => Parser.flags.IBooleanFlag<boolean>;
9
9
  declare const dryRun: (options?: {}) => Parser.flags.IBooleanFlag<boolean>;
10
10
  declare const open: (options?: {}) => Parser.flags.IBooleanFlag<boolean>;
11
11
  declare const live: (options?: {}) => Parser.flags.IBooleanFlag<boolean>;
12
- export { doc, docName, hub, token, autoCreate, dryRun, open, live };
12
+ declare const format: flags.Definition<string>;
13
+ export { doc, docName, hub, token, autoCreate, dryRun, open, live, format };
package/lib/flags.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.live = exports.open = exports.dryRun = exports.autoCreate = exports.token = exports.hub = exports.docName = exports.doc = void 0;
3
+ exports.format = exports.live = exports.open = exports.dryRun = exports.autoCreate = exports.token = exports.hub = exports.docName = exports.doc = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const command_1 = require("@oclif/command");
6
6
  // Re-export oclif flags https://oclif.io/docs/flags
@@ -62,3 +62,10 @@ const live = (options = {}) => {
62
62
  return command_1.flags.boolean(Object.assign({ char: 'l', default: false }, options));
63
63
  };
64
64
  exports.live = live;
65
+ const format = command_1.flags.build({
66
+ char: 'f',
67
+ description: 'Format in which to provide the diff result',
68
+ default: 'text',
69
+ options: ['text', 'markdown', 'json'],
70
+ });
71
+ exports.format = format;
package/lib/index.d.ts CHANGED
@@ -2,5 +2,5 @@ import { run } from '@oclif/command';
2
2
  import { Diff } from './core/diff';
3
3
  import Deploy from './commands/deploy';
4
4
  import Preview from './commands/preview';
5
- import { VersionResponse } from './api/models';
6
- export { run, Deploy, Diff, Preview, VersionResponse };
5
+ export { VersionResponse, PreviewResponse, DiffResponse, WithDiff } from './api/models';
6
+ export { run, Deploy, Diff, Preview };
@@ -1 +1 @@
1
- {"version":"2.3.0","commands":{"deploy":{"id":"deploy","description":"create a new version of your documentation from the given file or URL","pluginName":"bump-cli","pluginType":"core","aliases":[],"examples":["Deploy a new version of an existing documentation\n\n$ bump deploy FILE --doc <your_doc_id_or_slug> --token <your_doc_token>\n* Let's deploy a new documentation version on Bump... done\n* Your new documentation version will soon be ready\n","Deploy a new version of an existing documentation attached to a hub\n\n$ bump deploy FILE --doc <doc_slug> --hub <your_hub_id_or_slug> --token <your_doc_token>\n* Let's deploy a new documentation version on Bump... done\n* Your new documentation version will soon be ready\n","Validate a new documentation version before deploying it\n\n$ bump deploy FILE --dry-run --doc <doc_slug> --token <your_doc_token>\n* Let's validate a new documentation version on Bump... done\n* Definition is valid\n"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"show CLI help","allowNo":false},"doc":{"name":"doc","type":"option","char":"d","description":"Documentation public id or slug. Can be provided via BUMP_ID environment variable","required":true},"doc-name":{"name":"doc-name","type":"option","char":"n","description":"Documentation name. Used with --auto-create flag."},"hub":{"name":"hub","type":"option","char":"b","description":"Hub id or slug. Can be provided via BUMP_HUB_ID environment variable"},"token":{"name":"token","type":"option","char":"t","description":"Documentation or Hub token. Can be provided via BUMP_TOKEN environment variable","required":true},"auto-create":{"name":"auto-create","type":"boolean","description":"Automatically create the documentation if needed (only available with a --hub flag). Documentation name can be provided with --doc-name flag. Default: false","allowNo":false},"dry-run":{"name":"dry-run","type":"boolean","description":"Validate a new documentation version. Does everything a normal deploy would do except publishing the new version. Useful in automated environments such as test platforms or continuous integration. Default: false","allowNo":false}},"args":[{"name":"FILE","description":"Path or URL to your API documentation file. OpenAPI (2.0 to 3.1.0) and AsyncAPI (2.0 to 2.2) specifications are currently supported.","required":true}]},"diff":{"id":"diff","description":"Get a comparaison diff with your documentation from the given file or URL","pluginName":"bump-cli","pluginType":"core","aliases":[],"examples":["Compare a potential new version with the currently published one:\n\n $ bump diff FILE --doc <your_doc_id_or_slug> --token <your_doc_token>\n * Let's compare the given definition file with the currently deployed one... done\n Removed: GET /compare\n Added: GET /versions/{versionId}\n","Store the diff in a dedicated file:\n\n $ bump diff FILE --doc <doc_slug> --token <doc_token> > /tmp/my-saved-diff\n * Let's compare the given definition file with the currently deployed one... done\n\n $ cat /tmp/my-saved-diff\n Removed: GET /compare\n Added: GET /versions/{versionId}\n","In case of a non modified definition FILE compared to your existing documentation, no changes are output:\n\n $ bump diff FILE --doc <doc_slug> --token <your_doc_token>\n * Let's compare the given definition file with the currently deployed one... done\n › Warning: Your documentation has not changed\n","Compare two different input files or URL independently to the one published on bump.sh\n\n $ bump diff FILE FILE2 --doc <doc_slug> --token <your_doc_token>\n * Let's compare the two given definition files... done\n Updated: POST /versions\n Body attribute added: previous_version_id\n"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"show CLI help","allowNo":false},"doc":{"name":"doc","type":"option","char":"d","description":"Documentation public id or slug. Can be provided via BUMP_ID environment variable","required":true},"hub":{"name":"hub","type":"option","char":"b","description":"Hub id or slug. Can be provided via BUMP_HUB_ID environment variable"},"token":{"name":"token","type":"option","char":"t","description":"Documentation or Hub token. Can be provided via BUMP_TOKEN environment variable","required":true},"open":{"name":"open","type":"boolean","char":"o","description":"Open the visual diff in your browser","allowNo":false}},"args":[{"name":"FILE","description":"Path or URL to your API documentation file. OpenAPI (2.0 to 3.1.0) and AsyncAPI (2.0 to 2.2) specifications are currently supported.","required":true},{"name":"FILE2","description":"Path or URL to a second API documentation file to compute its diff"}]},"preview":{"id":"preview","description":"create a documentation preview from the given file or URL","pluginName":"bump-cli","pluginType":"core","aliases":[],"examples":["$ bump preview FILE\n* Your preview is visible at: https://bump.sh/preview/45807371-9a32-48a7-b6e4-1cb7088b5b9b\n"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"show CLI help","allowNo":false},"live":{"name":"live","type":"boolean","char":"l","description":"Generate a preview each time you save the given file","allowNo":false},"open":{"name":"open","type":"boolean","char":"o","description":"Open the generated preview URL in your browser","allowNo":false}},"args":[{"name":"FILE","description":"Path or URL to your API documentation file. OpenAPI (2.0 to 3.1.0) and AsyncAPI (2.0 to 2.2) specifications are currently supported.","required":true}]}}}
1
+ {"version":"2.3.3","commands":{"deploy":{"id":"deploy","description":"create a new version of your documentation from the given file or URL","pluginName":"bump-cli","pluginType":"core","aliases":[],"examples":["Deploy a new version of an existing documentation\n\n$ bump deploy FILE --doc <your_doc_id_or_slug> --token <your_doc_token>\n* Let's deploy a new documentation version on Bump... done\n* Your new documentation version will soon be ready\n","Deploy a new version of an existing documentation attached to a hub\n\n$ bump deploy FILE --doc <doc_slug> --hub <your_hub_id_or_slug> --token <your_doc_token>\n* Let's deploy a new documentation version on Bump... done\n* Your new documentation version will soon be ready\n","Validate a new documentation version before deploying it\n\n$ bump deploy FILE --dry-run --doc <doc_slug> --token <your_doc_token>\n* Let's validate a new documentation version on Bump... done\n* Definition is valid\n"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"show CLI help","allowNo":false},"doc":{"name":"doc","type":"option","char":"d","description":"Documentation public id or slug. Can be provided via BUMP_ID environment variable","required":true},"doc-name":{"name":"doc-name","type":"option","char":"n","description":"Documentation name. Used with --auto-create flag."},"hub":{"name":"hub","type":"option","char":"b","description":"Hub id or slug. Can be provided via BUMP_HUB_ID environment variable"},"token":{"name":"token","type":"option","char":"t","description":"Documentation or Hub token. Can be provided via BUMP_TOKEN environment variable","required":true},"auto-create":{"name":"auto-create","type":"boolean","description":"Automatically create the documentation if needed (only available with a --hub flag). Documentation name can be provided with --doc-name flag. Default: false","allowNo":false},"dry-run":{"name":"dry-run","type":"boolean","description":"Validate a new documentation version. Does everything a normal deploy would do except publishing the new version. Useful in automated environments such as test platforms or continuous integration. Default: false","allowNo":false}},"args":[{"name":"FILE","description":"Path or URL to your API documentation file. OpenAPI (2.0 to 3.1.0) and AsyncAPI (2.x) specifications are currently supported.","required":true}]},"diff":{"id":"diff","description":"Get a comparaison diff with your documentation from the given file or URL","pluginName":"bump-cli","pluginType":"core","aliases":[],"examples":["Compare a potential new version with the currently published one:\n\n $ bump diff FILE --doc <your_doc_id_or_slug> --token <your_doc_token>\n * Comparing the given definition file with the currently deployed one... done\n Removed: GET /compare\n Added: GET /versions/{versionId}\n","Store the diff in a dedicated file:\n\n $ bump diff FILE --doc <doc_slug> --token <doc_token> > /tmp/my-saved-diff\n * Comparing the given definition file with the currently deployed one... done\n\n $ cat /tmp/my-saved-diff\n Removed: GET /compare\n Added: GET /versions/{versionId}\n","In case of a non modified definition FILE compared to your existing documentation, no changes are output:\n\n $ bump diff FILE --doc <doc_slug> --token <your_doc_token>\n * Comparing the given definition file with the currently deployed one... done\n › Warning: Your documentation has not changed\n","Compare two different input files or URL independently to the one published on bump.sh\n\n $ bump diff FILE FILE2 --doc <doc_slug> --token <your_doc_token>\n * Comparing the two given definition files... done\n Updated: POST /versions\n Body attribute added: previous_version_id\n"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"show CLI help","allowNo":false},"doc":{"name":"doc","type":"option","char":"d","description":"Documentation public id or slug. Can be provided via BUMP_ID environment variable","required":false},"hub":{"name":"hub","type":"option","char":"b","description":"Hub id or slug. Can be provided via BUMP_HUB_ID environment variable"},"token":{"name":"token","type":"option","char":"t","description":"Documentation or Hub token. Can be provided via BUMP_TOKEN environment variable","required":false},"open":{"name":"open","type":"boolean","char":"o","description":"Open the visual diff in your browser","allowNo":false},"format":{"name":"format","type":"option","char":"f","description":"Format in which to provide the diff result","options":["text","markdown","json"],"default":"text"}},"args":[{"name":"FILE","description":"Path or URL to your API documentation file. OpenAPI (2.0 to 3.1.0) and AsyncAPI (2.x) specifications are currently supported.","required":true},{"name":"FILE2","description":"Path or URL to a second API documentation file to compute its diff"}]},"preview":{"id":"preview","description":"create a documentation preview from the given file or URL","pluginName":"bump-cli","pluginType":"core","aliases":[],"examples":["$ bump preview FILE\n* Your preview is visible at: https://bump.sh/preview/45807371-9a32-48a7-b6e4-1cb7088b5b9b\n"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"show CLI help","allowNo":false},"live":{"name":"live","type":"boolean","char":"l","description":"Generate a preview each time you save the given file","allowNo":false},"open":{"name":"open","type":"boolean","char":"o","description":"Open the generated preview URL in your browser","allowNo":false}},"args":[{"name":"FILE","description":"Path or URL to your API documentation file. OpenAPI (2.0 to 3.1.0) and AsyncAPI (2.x) specifications are currently supported.","required":true}]}}}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bump-cli",
3
3
  "description": "The Bump CLI is used to interact with your API documentation hosted on Bump by using the API of developers.bump.sh",
4
- "version": "2.3.0",
4
+ "version": "2.3.3",
5
5
  "author": "Paul Bonaud <paulr@bump.sh>",
6
6
  "bin": {
7
7
  "bump": "./bin/run"
@@ -77,12 +77,12 @@
77
77
  "types": "lib/index.d.ts",
78
78
  "dependencies": {
79
79
  "@apidevtools/json-schema-ref-parser": "^9.0.7",
80
- "@asyncapi/specs": "^2.9.0",
80
+ "@asyncapi/specs": "^2.13.0",
81
81
  "@oclif/command": "^1.8.0",
82
82
  "@oclif/config": "^1.17.0",
83
83
  "@oclif/plugin-help": "^5.1.10",
84
84
  "async-mutex": "^0.3.2",
85
- "axios": "^0.24.0",
85
+ "axios": "^0.25.0",
86
86
  "cli-ux": "^6.0.7",
87
87
  "debug": "^4.3.1",
88
88
  "oas-schemas": "git+https://git@github.com/OAI/OpenAPI-Specification.git#0f9d3ec7c033fef184ec54e1ffc201b2d61ce023",