summaryrefslogtreecommitdiff
path: root/src/buildtool/storage/config.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/storage/config.hpp')
-rw-r--r--src/buildtool/storage/config.hpp10
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{};