@aikidosec/ci-api-client
Version:
CLI api client to easily integrate the Aikido public CI API into custom deploy scripts
48 lines (47 loc) • 1.99 kB
JavaScript
import ora from 'ora';
import { program } from './index.js';
import chalk from 'chalk';
export const outputLog = (message) => {
if (!process.env.QUIET) {
console.log(message);
}
};
export const outputDebug = (variable) => {
if (process.env.CLI_DEBUG == true || process.env.CLI_DEBUG == 'true') {
console.log(chalk.blue(typeof variable == 'object' ? JSON.stringify(variable) : variable));
}
};
export const outputError = (message, exitCode = 1) => {
program.error(message, {
exitCode,
});
};
export const outputHttpError = (axiosError) => {
outputDebug(axiosError);
if (axiosError.isAxiosError) {
if (axiosError.response) {
const statusStr = `${axiosError.response.status} ${axiosError.response.statusText}`;
switch (axiosError.response.status) {
case 401:
return outputError(`${statusStr}: The provided api key is most likely no longer valid and has been rotated or revoked. Visit https://app.aikido.dev/settings/integrations/continuous-integration to generate a new key.`);
case 403:
return outputError(`${statusStr}: Could not authenticate with the Aikido API. Please verify your Aikdio API key.`);
case 500:
return outputError(`${statusStr}: Something went wrong contacting the Aikido API. Please try again later.`);
default:
return outputError(`${statusStr}: ${axiosError.response.data ?? ''} Please contact us if this problem persists.`);
}
}
return outputError(`${axiosError.name}: ${axiosError.message}`);
}
return outputError('Unexpected error occurred. Please contact us if this problem persists.');
};
export const startSpinner = (message) => {
if (process.env.QUIET) {
return null;
}
const spinner = ora(message);
spinner.color = 'magenta';
spinner.start();
return spinner;
};