bump-cli
Version:
The Bump CLI is used to interact with your API documentation hosted on Bump.sh by using the API of developers.bump.sh
74 lines (73 loc) • 2.7 kB
JavaScript
import debug from 'debug';
export class Deploy {
_bump;
constructor(bumpClient) {
this._bump = bumpClient;
}
async createVersion(request, token) {
const response = await this._bump.postVersion(request, token);
let version;
switch (response.status) {
case 204: {
break;
}
case 201: {
version = response.data ?? { doc_public_url: 'https://bump.sh', id: '' };
break;
}
default: {
this.d(`API status response was ${response.status}. Expected 201 or 204.`);
throw new Error('Unexpected server response. Please contact support at https://bump.sh if this error persists');
}
}
return version;
}
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
d(formatter, ...args) {
return debug(`bump-cli:core:deploy`)(formatter, ...args);
}
async run(api, dryRun, documentation, token, hub, autoCreate, documentationName, branch, overlay, temporary) {
let version;
if (overlay) {
/* eslint-disable no-await-in-loop */
// Alternatively we can apply all overlays in parallel
// https://stackoverflow.com/questions/48957022/unexpected-await-inside-a-loop-no-await-in-loop
for (const overlayFile of overlay) {
await api.applyOverlay(overlayFile);
}
/* eslint-enable no-await-in-loop */
}
const [definition, references] = api.extractDefinition();
const request = {
auto_create_documentation: autoCreate && !dryRun,
branch_name: branch,
definition,
documentation,
documentation_name: documentationName,
hub,
references,
temporary,
};
if (dryRun) {
await this.validateVersion(request, token);
}
else {
version = await this.createVersion(request, token);
}
return version;
}
// Function signature type taken from @types/debug
// Debugger(formatter: any, ...args: any[]): void;
async validateVersion(version, token) {
const response = await this._bump.postValidation(version, token);
switch (response.status) {
case 200: {
break;
}
default: {
this.d(`API status response was ${response.status}. Expected 200.`);
throw new Error('Unexpected server response. Please contact support at https://bump.sh if this error persists');
}
}
}
}