@aurora-cli/utils
Version:
aurora-cli utils
83 lines (71 loc) • 1.75 kB
JavaScript
;
const cp = require('child_process');
const spawn = require('cross-spawn');
const fs = require('fs');
const Spinner = require('cli-spinner').Spinner;
function isObject(o) {
return Object.prototype.toString.call(o) === '[object Object]';
}
function spinnerStart(msg, spinnerString = '|/-\\') {
const spinner = new Spinner(`${msg} %s`);
spinner.setSpinnerString(spinnerString);
spinner.start();
return spinner;
}
async function sleep(timeout = 1000) {
return await new Promise(resolve => setTimeout(resolve, timeout));
}
// function spawn(command, args, options) {
// const win32 = process.platform === 'win32';
// if (win32) {
// command = 'cmd';
// args = ['/c'].concat(command, args);
// }
// return cp.spawn(command, args, options);
// }
function spawnAsync(command, args, options) {
// return new Promise((resolve, reject) => {
// const p = spawn(command, args, options);
// p.on('error', (e) => {
// reject(e);
// });
// p.on('exit', (c) => {
// resolve(c);
// });
// });
return spawn.sync(command, args, options);
}
function readFile(path, options = {}) {
if (path && fs.existsSync(path)) {
const buffer = fs.readFileSync(path);
if (buffer) {
if (options.toJson) {
return buffer.toJSON();
} else {
return buffer.toString();
}
}
}
return null;
}
function writeFile(path, data, { rewrite = true } = {}) {
if (fs.existsSync(path)) {
if (rewrite) {
fs.writeFileSync(path, data);
return true;
}
return false;
} else {
fs.writeFileSync(path, data);
return true;
}
}
module.exports = {
isObject,
spinnerStart,
sleep,
spawn,
spawnAsync,
readFile,
writeFile,
};