@amplitude/ampli
Version:
Amplitude CLI
29 lines (28 loc) • 1.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileService = void 0;
const walk = require("ignore-walk");
const minimatch = require("minimatch");
const path = require("path");
const fs = require("../util/fs");
class FileService {
constructor() {
this.findFiles = async (searchDir, extension, ignoreDirs, ignoreFiles = ['.gitignore', '.itlyignore', '.ampliignore']) => {
const fqIgnorePaths = ignoreDirs.map(ignoreDir => path.resolve(searchDir, ignoreDir)
.substr(path.resolve(searchDir).length + 1));
let paths = (await walk({ path: searchDir, ignoreFiles }))
.filter(minimatch.filter(`**/*.${extension}`));
fqIgnorePaths.forEach(fqIgnorePath => {
paths = paths.filter(minimatch.filter(`!${fqIgnorePath}/**`));
});
return paths.map((f) => path.resolve(searchDir, f));
};
this.getFileContentsIfIncludes = async (filepath, searchStrings) => {
const contents = await fs.readTextFile(filepath);
return searchStrings.some(searchString => contents.includes(searchString))
? contents
: undefined;
};
}
}
exports.FileService = FileService;