@polyfill-io-aot/builder
Version:
This is the builder module for polyfill-io-aot.
46 lines • 1.62 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Bluebird = require("bluebird");
const fs = require("fs-extra");
const path_1 = require("path");
const Executor_1 = require("./Executor");
const symbols_1 = require("./symbols");
/** @internal */
class CopyExecutor extends Executor_1.Executor {
execute() {
this._ora.start(this.startText);
this.emit(this.allStart);
const copyOpts = {
errorOnExist: false,
overwrite: true,
preserveTimestamps: true,
recursive: this.isDir
};
Bluebird
.map(this.source, (cpp) => {
const target = path_1.join(this.builder[symbols_1.POLYFILLS_ROOT], cpp.relative);
const emptyingPromise = this.isDir ? fs.emptyDir(target) : Promise.resolve();
return emptyingPromise
.then(() => {
this.emit(this.oneStart, cpp.absolute, target);
return fs.copy(cpp.absolute, target, copyOpts);
})
.then(() => {
this.emit(this.oneOk, cpp.absolute, target);
})
.catch((e) => {
this.emit(this.oneErr, cpp.absolute, target, e);
throw e;
});
})
.then(() => {
this._ora.succeed(this.okText);
this.emit(this.allOk);
}, (e) => {
this._ora.fail(`Copy operation failed: ${this.formatError(e)}`);
this.onError(e);
});
}
}
exports.CopyExecutor = CopyExecutor;
//# sourceMappingURL=CopyExecutor.js.map