Conscience Core
fs.h
Go to the documentation of this file.
1 #ifndef CONSCIENCE_UTIL_FS_h
2 #define CONSCIENCE_UTIL_FS_h
3 
4 #include "conscience_util.h"
5 #include <filesystem>
6 
7 namespace fs = std::filesystem;
8 
10 
11 fs::path resolvePathFromEnvironment(const char *envVar, const string &macro, optional<fs::path> defaultPath = {});
12 
16 string readFileToString(const string &path);
17 
18 bool canReadFile(const fs::path &filePath);
19 
24 optional<unsigned> findLineInFile(const string &searchedString, const string &path, string *lineContent = nullptr);
25 
26 vector<unsigned char> *readFileToBytes(const string &path);
27 
28 void writeStringToFile(const string &outPath, const string &content);
29 
30 void writeBytesToFile(const string &outPath, const vector<unsigned char> &content);
31 
36 void collectPathsRecursively(const fs::path &fromDirectory, vector<fs::path> &collectedPaths, const vector<string> &allowedExtensions = {});
37 
38 bool isFileModifiedRecently(const fs::path &filePath, unsigned long long durationMillis);
39 bool isParentDirectory(const fs::path &filePath, const fs::path &directoryPath);
40 
44 inline bool hasExtension(const fs::path &filePath, const string &extension) {
45  return filePath.extension().string() == extension || filePath.extension().string() == string("." + extension);
46 }
47 
48 inline bool hasAnyExtension(const fs::path &filePath, const vector<string> &extensions) {
49  for (const string &extension : extensions) {
50  if (hasExtension(filePath, extension)) {
51  return true;
52  }
53  }
54  return false;
55 }
56 
57 optional<bool> replaceLineInFile(const std::string &filePath, const std::string &searchedToken, const std::string &replacement);
58 
59 }
60 
61 #endif
conscience_utils::file_system
Definition: fs.cpp:9
conscience_util.h
conscience_utils::file_system::readFileToString
string readFileToString(const string &path)
Definition: fs.cpp:28
conscience_utils::file_system::replaceLineInFile
optional< bool > replaceLineInFile(const std::string &filePath, const std::string &searchedToken, const std::string &replacement)
Definition: fs.cpp:148
conscience_utils::file_system::writeBytesToFile
void writeBytesToFile(const string &outPath, const vector< unsigned char > &content)
Definition: fs.cpp:101
conscience_utils::file_system::readFileToBytes
vector< unsigned char > * readFileToBytes(const string &path)
Definition: fs.cpp:85
conscience_utils::file_system::resolvePathFromEnvironment
fs::path resolvePathFromEnvironment(const char *envVar, const string &macro, std::optional< fs::path > defaultPath)
Definition: fs.cpp:11
conscience_utils::file_system::hasExtension
bool hasExtension(const fs::path &filePath, const string &extension)
Definition: fs.h:44
conscience_utils::file_system::writeStringToFile
void writeStringToFile(const string &outPath, const string &content)
Definition: fs.cpp:92
conscience_utils::file_system::isParentDirectory
bool isParentDirectory(const fs::path &filePath, const fs::path &directoryPath)
Definition: fs.cpp:139
conscience_utils::file_system::findLineInFile
optional< unsigned > findLineInFile(const string &searchedString, const string &path, string *lineContent)
Definition: fs.cpp:61
conscience_utils::file_system::hasAnyExtension
bool hasAnyExtension(const fs::path &filePath, const vector< string > &extensions)
Definition: fs.h:48
conscience_utils::file_system::isFileModifiedRecently
bool isFileModifiedRecently(const fs::path &filePath, unsigned long long durationMillis)
Definition: fs.cpp:120
conscience_utils::file_system::canReadFile
bool canReadFile(const fs::path &filePath)
Definition: fs.cpp:49
conscience_utils::file_system::collectPathsRecursively
void collectPathsRecursively(const fs::path &fromDirectory, vector< fs::path > &collectedPaths, const vector< string > &allowedExtensions)
Definition: fs.cpp:107