diff options
Diffstat (limited to 'src/buildtool/storage/config.hpp')
-rw-r--r-- | src/buildtool/storage/config.hpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/buildtool/storage/config.hpp b/src/buildtool/storage/config.hpp index 92358d12..858f74ff 100644 --- a/src/buildtool/storage/config.hpp +++ b/src/buildtool/storage/config.hpp @@ -38,6 +38,7 @@ #include "src/buildtool/logging/log_level.hpp" #include "src/buildtool/logging/logger.hpp" #include "src/utils/cpp/gsl.hpp" +#include "src/utils/cpp/tmp_dir.hpp" /// \brief Global storage configuration. class StorageConfig { @@ -184,6 +185,15 @@ class StorageConfig { return EphemeralRoot() / "exec_root"; } + /// \brief Create a tmp directory with controlled lifetime for specific + /// operations (archive, zip, file, distdir checkouts; fetch; update). + [[nodiscard]] static auto CreateTypedTmpDir( + std::string const& type) noexcept -> TmpDirPtr { + // try to create parent dir + auto parent_path = EphemeralRoot() / "tmp-workspaces" / type; + return TmpDir::Create(parent_path); + } + private: [[nodiscard]] static auto Data() noexcept -> ConfigData& { static ConfigData instance{}; |