You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.1 KiB
74 lines
2.1 KiB
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = preProcessPattern;
|
|
|
|
var _path = _interopRequireDefault(require("path"));
|
|
|
|
var _isTemplateLike = _interopRequireDefault(require("./utils/isTemplateLike"));
|
|
|
|
var _promisify = require("./utils/promisify");
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
/* eslint-disable no-param-reassign */
|
|
async function preProcessPattern(globalRef, pattern) {
|
|
const {
|
|
context,
|
|
logger,
|
|
inputFileSystem
|
|
} = globalRef;
|
|
pattern = typeof pattern === 'string' ? {
|
|
from: pattern
|
|
} : { ...pattern
|
|
};
|
|
pattern.fromOrigin = pattern.from;
|
|
pattern.from = _path.default.normalize(pattern.from);
|
|
pattern.to = _path.default.normalize(typeof pattern.to !== 'undefined' ? pattern.to : '');
|
|
pattern.context = _path.default.normalize(typeof pattern.context !== 'undefined' ? !_path.default.isAbsolute(pattern.context) ? _path.default.join(context, pattern.context) : pattern.context : context);
|
|
logger.debug(`processing from: '${pattern.from}' to: '${pattern.to}'`);
|
|
|
|
const isToDirectory = _path.default.extname(pattern.to) === '' || pattern.to.slice(-1) === _path.default.sep;
|
|
|
|
switch (true) {
|
|
// if toType already exists
|
|
case !!pattern.toType:
|
|
break;
|
|
|
|
case (0, _isTemplateLike.default)(pattern.to):
|
|
pattern.toType = 'template';
|
|
break;
|
|
|
|
case isToDirectory:
|
|
pattern.toType = 'dir';
|
|
break;
|
|
|
|
default:
|
|
pattern.toType = 'file';
|
|
}
|
|
|
|
if (_path.default.isAbsolute(pattern.from)) {
|
|
pattern.absoluteFrom = pattern.from;
|
|
} else {
|
|
pattern.absoluteFrom = _path.default.resolve(pattern.context, pattern.from);
|
|
}
|
|
|
|
logger.debug(`getting stats for '${pattern.absoluteFrom}' to determinate 'fromType'`);
|
|
let stats;
|
|
|
|
try {
|
|
stats = await (0, _promisify.stat)(inputFileSystem, pattern.absoluteFrom);
|
|
} catch (error) {
|
|
return pattern;
|
|
}
|
|
|
|
if (stats.isDirectory()) {
|
|
pattern.fromType = 'dir';
|
|
} else if (stats.isFile()) {
|
|
pattern.fromType = 'file';
|
|
}
|
|
|
|
return pattern;
|
|
} |