@salto-io/suitecloud-cli
Version:
SuiteCloud CLI for Node.js
46 lines (39 loc) • 1.34 kB
JavaScript
/*
** Copyright (c) 2024 Oracle and/or its affiliates. All rights reserved.
** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
*/
;
const assert = require('assert');
const Spinner = require('cli-spinner').Spinner;
const { compareLogLevels, logger } = require('@salto-io/logging');
const SPINNER_STRING = '⠋⠙⠹⠸⠼⠴⠦⠧⠏';
const currentLogLevel = logger.config.minLevel;
const verbose = currentLogLevel !== 'none'
&& compareLogLevels(currentLogLevel, 'debug') >= 0;
module.exports = {
async executeWithSpinner(context) {
assert(context.action instanceof Promise, 'Promise is expected');
assert(context.message, 'Message is mandatory when spinner is enabled');
const promise = context.action;
const message = context.message;
const spinner = new Spinner(message);
// TODO: set spinner string conditionally based on the terminal cli is executed in
// spinner.setSpinnerString(SPINNER_STRING);
const showSpinner = (verbose || context.verbose) && process.env.NETSUITE_SDF_PATH == null;
try {
if (showSpinner) {
spinner.start();
}
const result = await promise;
if (showSpinner) {
spinner.stop(true);
}
return result;
} catch (error) {
if (showSpinner) {
spinner.stop(true);
}
throw error;
}
},
};