Devel Lib
Dir.h
1 #pragma once
2 
3 #include "IO/Path/Path.h"
4 
5 #include <Core/Exceptions.h>
6 #include <utility>
7 #include <vector>
8 #include <optional>
9 
12 namespace Devel::IO {
13  namespace fs = std::filesystem;
14 
46  class CDir {
47  public:
49  CDir() = default;
50 
53  explicit CDir(CPath i_oPath) : m_oPath(std::move(i_oPath)) {};
54  private:
57  CPath m_oPath;
58  public:
63  std::vector<CPath> getDirectoryFiles(bool i_bIsRecursive = false,
64  std::optional<std::vector<std::string>> i_astExtensionFilters = std::nullopt);
65 
66  public:
70  static bool createDirectories(const CPath &i_oPath) {
71  return fs::create_directories(i_oPath.getPath());
72  }
73 
77  static void createDirectorySymlink(const CPath &i_oTargetPath, const CPath &i_oLinkPath) {
78  return fs::create_directory_symlink(i_oTargetPath.getPath(), i_oLinkPath.getPath());
79  }
80 
84  static bool isDirectory(const CPath &i_oPath) {
85  return fs::is_directory(i_oPath.getPath());
86  }
87 
91  return CPath(std::move(fs::temp_directory_path()));
92  }
93  };
94 }
A class for directory operations.
Definition: Dir.h:46
static CPath getTempDirectoryPath()
Static function to get the path of the temporary directory.
Definition: Dir.h:90
static bool createDirectories(const CPath &i_oPath)
Static function to create directories.
Definition: Dir.h:70
CDir(CPath i_oPath)
Construct a CDir object using the provided path.
Definition: Dir.h:53
std::vector< CPath > getDirectoryFiles(bool i_bIsRecursive=false, std::optional< std::vector< std::string >> i_astExtensionFilters=std::nullopt)
Get the files in the directory.
Definition: Dir.cpp:29
static bool isDirectory(const CPath &i_oPath)
Static function to check if a path is a directory.
Definition: Dir.h:84
CDir()=default
Default constructor for CDir.
static void createDirectorySymlink(const CPath &i_oTargetPath, const CPath &i_oLinkPath)
Static function to create a symlink for a directory.
Definition: Dir.h:77
A class that encapsulates the functionality of std::filesystem::path.
Definition: Path.h:28
const fs::path & getPath() const
Returns the encapsulated fs::path object.
Definition: Path.h:121
The namespace encapsulating I/O related classes and functions in the Devel framework.