#include "utility/file/FileManager.h" #include #include "utility/file/FileSystem.h" #include "utility/file/FilePath.h" FileManager::FileManager() { } FileManager::~FileManager() { } void FileManager::update( const std::vector& sourcePaths, const std::vector& excludePaths, const std::vector& sourceExtensions ){ m_sourcePaths = sourcePaths; m_excludePaths = makeCanonical(excludePaths); m_sourceExtensions = sourceExtensions; m_allSourceFilePaths.clear(); for (const FileInfo& fileInfo : FileSystem::getFileInfosFromPaths(m_sourcePaths, m_sourceExtensions)) { const FilePath& filePath = fileInfo.path; if (isExcluded(filePath)) { continue; } m_allSourceFilePaths.insert(filePath); } } std::vector FileManager::getSourcePaths() const { return m_sourcePaths; } bool FileManager::hasSourceFilePath(const FilePath& filePath) const { if (m_allSourceFilePaths.find(filePath) != m_allSourceFilePaths.end()) { return true; } return false; } std::set FileManager::getAllSourceFilePaths() const { return m_allSourceFilePaths; } std::set FileManager::getAllSourceFilePathsRelative(const FilePath& baseDirectory) const { std::set absolutePaths; for (const FilePath& path: getAllSourceFilePaths()) { if (baseDirectory.exists()) { absolutePaths.insert(path.getRelativeTo(baseDirectory)); } else { absolutePaths.insert(path); } } return absolutePaths; } std::vector FileManager::makeCanonical(const std::vector& filePaths) { std::vector ret; for (const FilePath& filePath: filePaths) { ret.push_back(filePath.getCanonical()); } return ret; } bool FileManager::isExcluded(const FilePath& filePath) const { for (const FilePath& path : m_excludePaths) { if (path == filePath || path.contains(filePath)) { return true; } } return false; }