UNPKG

sb-babel-cli

Version:
124 lines (99 loc) 4.29 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _sbFs = require('sb-fs'); var _sbFs2 = _interopRequireDefault(_sbFs); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _mkdirp = require('mkdirp'); var _mkdirp2 = _interopRequireDefault(_mkdirp); var _rimraf = require('rimraf'); var _rimraf2 = _interopRequireDefault(_rimraf); var _sbPromisify = require('sb-promisify'); var _sbPromisify2 = _interopRequireDefault(_sbPromisify); var _pMapSeries = require('p-map-series'); var _pMapSeries2 = _interopRequireDefault(_pMapSeries); var _anymatch = require('anymatch'); var _anymatch2 = _interopRequireDefault(_anymatch); 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"); }); }; } var rimrafAsync = (0, _sbPromisify2.default)(_rimraf2.default); var mkdirpAsync = (0, _sbPromisify2.default)(_mkdirp2.default); exports.default = function () { var _ref = _asyncToGenerator(function* (_ref2) { var rootDirectory = _ref2.rootDirectory, sourceDirectory = _ref2.sourceDirectory, outputDirectory = _ref2.outputDirectory, ignored = _ref2.ignored, keepExtraFiles = _ref2.keepExtraFiles, filesToKeep = _ref2.filesToKeep, callback = _ref2.callback; var contents = yield _sbFs2.default.readdir(sourceDirectory); var outputStats = void 0; var outputDirectoryExists = false; try { outputStats = yield _sbFs2.default.stat(outputDirectory); } catch (_) { /* No Op */ } if (outputStats && !outputStats.isDirectory()) { yield rimrafAsync(outputDirectory); outputStats = null; } if (outputStats && outputStats.isDirectory()) { outputDirectoryExists = true; } var outputContents = outputStats ? yield _sbFs2.default.readdir(outputDirectory) : []; if (!keepExtraFiles) { var whitelist = filesToKeep(contents); var filesToDelete = outputContents.filter(function (item) { return !whitelist.includes(item); }).map(function (item) { return _path2.default.resolve(outputDirectory, item); }); yield (0, _pMapSeries2.default)(filesToDelete, function (item) { return rimrafAsync(item); }); } yield (0, _pMapSeries2.default)(contents, function () { var _ref3 = _asyncToGenerator(function* (fileName) { var filePath = _path2.default.join(sourceDirectory, fileName); var stat = yield _sbFs2.default.lstat(filePath); if (stat.isSymbolicLink()) { // NOTE: We ignore symlinks return; } if ((0, _anymatch2.default)(ignored, fileName) || (0, _anymatch2.default)(ignored, filePath) || (0, _anymatch2.default)(ignored, _path2.default.relative(rootDirectory, filePath))) { // NOTE: We ignore ignored files return; } if (stat.isFile()) { if (!fileName.endsWith('.js')) return; if (!outputDirectoryExists) { yield mkdirpAsync(outputDirectory); outputDirectoryExists = true; } yield callback(filePath, _path2.default.join(outputDirectory, fileName), stat); } else if (stat.isDirectory()) { yield iterate({ rootDirectory: rootDirectory, sourceDirectory: _path2.default.join(sourceDirectory, fileName), outputDirectory: _path2.default.join(outputDirectory, fileName), ignored: ignored, keepExtraFiles: keepExtraFiles, filesToKeep: filesToKeep, callback: callback }); } }); return function (_x2) { return _ref3.apply(this, arguments); }; }()); }); function iterate(_x) { return _ref.apply(this, arguments); } return iterate; }();