Files
nexe/lib/artifacts.js
T
2017-06-26 20:01:53 -05:00

99 lines
3.3 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _path = require('path');
var _fs = require('fs');
var _util = require('./util');
var _bluebird = require('bluebird');
var _mkdirp = require('mkdirp');
var _mkdirp2 = _interopRequireDefault(_mkdirp);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
const mkdirpAsync = (0, _bluebird.promisify)(_mkdirp2.default);
const statAsync = (0, _bluebird.promisify)(_fs.stat);
const unlinkAsync = (0, _bluebird.promisify)(_fs.unlink);
const readdirAsync = (0, _bluebird.promisify)(_fs.readdir);
function readDirAsync(dir) {
return readdirAsync(dir).map(file => {
const path = (0, _path.join)(dir, file);
return statAsync(path).then(s => s.isDirectory() ? readDirAsync(path) : path);
}).reduce((a, b) => a.concat(b), []);
}
function maybeReadFileContents(file) {
return (0, _util.readFileAsync)(file, 'utf-8').catch(e => {
if (e.code === 'ENOENT') {
return '';
}
throw e;
});
}
/**
* The artifacts step is where source patches are committed, or written as "artifacts"
* Steps:
* - A temporary directory is created in the downloaded source
* - On start, any files in that directory are restored into the source tree
* - After the patch functions have run, the temporary directory is emptied
* - Original versions of sources to be patched are written to the temporary directory
* - Finally, The patched files are written into source.
*
*/
exports.default = (() => {
var _ref = _asyncToGenerator(function* (compiler, next) {
const { src } = compiler;
const temp = (0, _path.join)(src, 'nexe');
yield mkdirpAsync(temp);
const tmpFiles = yield readDirAsync(temp);
yield (0, _bluebird.map)(tmpFiles, (() => {
var _ref2 = _asyncToGenerator(function* (path) {
return compiler.writeFileAsync(path.replace(temp, ''), (yield (0, _util.readFileAsync)(path)));
});
return function (_x3) {
return _ref2.apply(this, arguments);
};
})());
yield next();
yield (0, _bluebird.map)(tmpFiles, function (x) {
return unlinkAsync(x);
});
return (0, _bluebird.map)(compiler.files, (() => {
var _ref3 = _asyncToGenerator(function* (file) {
const sourceFile = (0, _path.join)(src, file.filename);
const tempFile = (0, _path.join)(temp, file.filename);
const fileContents = yield maybeReadFileContents(sourceFile);
yield mkdirpAsync((0, _path.dirname)(tempFile));
yield (0, _util.writeFileAsync)(tempFile, fileContents);
yield compiler.writeFileAsync(file.filename, file.contents);
});
return function (_x4) {
return _ref3.apply(this, arguments);
};
})());
});
function artifacts(_x, _x2) {
return _ref.apply(this, arguments);
}
return artifacts;
})();