// SPDX-License-Identifier: MIT // // ES-DE Frontend // FileSystemUtil.h // // Low-level filesystem functions. // Resolve relative paths, resolve symlinks, create directories, // remove files etc. // #ifndef ES_CORE_UTILS_FILE_SYSTEM_UTIL_H #define ES_CORE_UTILS_FILE_SYSTEM_UTIL_H #include #include #include class FileSystemVariables { public: static inline std::string sAppDataDirectory; }; namespace Utils { namespace FileSystem { using StringList = std::list; StringList getDirContent(const std::string& path, const bool recursive = false); StringList getMatchingFiles(const std::string& pattern); StringList getPathList(const std::string& path); void setHomePath(const std::string& path); std::string getHomePath(); std::string getAppDataDirectory(); std::string getInternalAppDataDirectory(); std::string getSystemHomeDirectory(); std::string getCWDPath(); std::string getPathToBinary(const std::string& executable); void setExePath(const std::string& path); std::string getExePath(); std::string getEsBinary(); std::string getProgramDataPath(); std::string getPreferredPath(const std::string& path); std::string getGenericPath(const std::string& path); std::string getEscapedPath(const std::string& path); std::string getCanonicalPath(const std::string& path); std::string getAbsolutePath(const std::string& path, const std::string& base = getCWDPath()); std::string getParent(const std::string& path); std::string getFileName(const std::string& path); std::string getStem(const std::string& path); std::string getExtension(const std::string& path); long getFileSize(const std::filesystem::path& path); std::string expandHomePath(const std::string& path); std::string resolveRelativePath(const std::string& path, const std::string& relativeTo, const bool allowHome); std::string createRelativePath(const std::string& path, const std::string& relativeTo, const bool allowHome); std::string removeCommonPath(const std::string& path, const std::string& commonArg, bool& contains); std::string resolveSymlink(const std::string& path); bool copyFile(const std::string& sourcePath, const std::string& destinationPath, bool overwrite); bool renameFile(const std::string& sourcePath, const std::string& destinationPath, bool overwrite); bool createEmptyFile(const std::filesystem::path& path); bool removeFile(const std::string& path); bool removeDirectory(const std::string& path, bool recursive); bool createDirectory(const std::string& path); bool exists(const std::string& path); bool driveExists(const std::string& path); bool isAbsolute(const std::string& path); bool isRegularFile(const std::string& path); bool isDirectory(const std::string& path); bool isSymlink(const std::string& path); bool isHidden(const std::string& path); } // namespace FileSystem } // namespace Utils #endif // ES_CORE_UTILS_FILE_SYSTEM_UTIL_H