vtex
Version:
The platform for e-commerce apps
59 lines (58 loc) • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.listLocalFiles = exports.getIgnoredPaths = void 0;
const tslib_1 = require("tslib");
const fs_extra_1 = require("fs-extra");
const globby_1 = tslib_1.__importDefault(require("globby"));
const path_1 = require("path");
const ramda_1 = require("ramda");
const logger_1 = tslib_1.__importDefault(require("../../logger"));
const defaultIgnored = [
'.DS_Store',
'README.md',
'.gitignore',
'package.json',
'node_modules/**',
'**/node_modules/**',
'.git/**',
'cypress/videos/**',
'cypress/screenshots/**',
];
const services = ['react', 'render', 'masterdata', 'service'];
const safeFolder = folder => {
if (folder && services.indexOf(folder) === -1) {
logger_1.default.warn('Using unknown service', folder);
}
return folder ? `./${folder}/**` : '*/**';
};
const isTestOrMockPath = (p) => /.*(test|mock|snapshot).*/.test(p.toLowerCase());
const getIgnoredPaths = (root, test = false) => {
try {
const filesToIgnore = (0, fs_extra_1.readFileSync)((0, path_1.join)(root, '.vtexignore'))
.toString()
.split('\n')
.map(p => p.trim())
.filter(p => p !== '')
.map(p => p.replace(/\/$/, '/**'))
.concat(defaultIgnored);
return test ? (0, ramda_1.reject)(isTestOrMockPath, filesToIgnore) : filesToIgnore;
}
catch (e) {
return defaultIgnored;
}
};
exports.getIgnoredPaths = getIgnoredPaths;
const listLocalFiles = (root, test = false, folder) => Promise.resolve((0, globby_1.default)(['manifest.json', 'policies.json', '.npmrc', 'node/.*', 'react/.*', `${safeFolder(folder)}`], {
cwd: root,
follow: true,
ignore: (0, exports.getIgnoredPaths)(root, test),
nodir: true,
}))
.then((files) => Promise.all(files.map(file => (0, fs_extra_1.lstat)((0, path_1.join)(root, file)).then(stats => ({ file, stats })))))
.then(filesStats => filesStats.reduce((acc, { file, stats }) => {
if (stats.size > 0) {
acc.push(file);
}
return acc;
}, []));
exports.listLocalFiles = listLocalFiles;