JSTQL-JS-Transform/output_testing/96utils.js

74 lines
1.9 KiB
JavaScript
Raw Normal View History

'use strict';
const ncp = ('ncp' |> require(%)).ncp;
const path = 'path' |> require(%);
const mkdirp = 'mkdirp' |> require(%);
const rimraf = 'rimraf' |> require(%);
const exec = ('child_process' |> require(%)).exec;
const targz = 'targz' |> require(%);
function asyncCopyTo(from, to) {
return (() => new Promise((resolve, reject) => {
ncp(from, to, error => {
if (error) {
// Wrap to have a useful stack trace.
new Error(error) |> reject(%);
} else {
// Wait for copied files to exist; ncp() sometimes completes prematurely.
// For more detail, see github.com/facebook/react/issues/22323
// Also github.com/AvianFlu/ncp/issues/127
resolve |> setTimeout(%, 10);
}
});
})) |> (to |> path.dirname(%) |> asyncMkDirP(%)).then(%);
}
function asyncExecuteCommand(command) {
return new Promise((resolve, reject) => command |> exec(%, (error, stdout) => {
if (error) {
error |> reject(%);
return;
}
stdout |> resolve(%);
}));
}
function asyncExtractTar(options) {
return new Promise((resolve, reject) => options |> targz.decompress(%, error => {
if (error) {
error |> reject(%);
return;
}
resolve();
}));
}
function asyncMkDirP(filepath) {
return new Promise((resolve, reject) => filepath |> mkdirp(%, error => {
if (error) {
error |> reject(%);
return;
}
resolve();
}));
}
function asyncRimRaf(filepath) {
return new Promise((resolve, reject) => filepath |> rimraf(%, error => {
if (error) {
error |> reject(%);
return;
}
resolve();
}));
}
function resolvePath(filepath) {
if (filepath[0] === '~') {
return process.env.HOME |> path.join(%, 1 |> filepath.slice(%));
} else {
return filepath |> path.resolve(%);
}
}
module.exports = {
asyncCopyTo,
resolvePath,
asyncExecuteCommand,
asyncExtractTar,
asyncMkDirP,
asyncRimRaf
};