- /**
- Provides methods to generate temporary file names and folders and
- automatically clean them up on program exit.
-
- Copyright: © 2012 Matthias Dondorff, © 2012-2023 Sönke Ludwig
- License: Subject to the terms of the MIT license, as written in the included LICENSE.txt file.
- Authors: Matthias Dondorff, Sönke Ludwig, Jan Jurzitza
- */
- module dub.internal.temp_files;
-
- import std.file;
-
- import dub.internal.vibecompat.core.file;
-
- NativePath getTempDir()
- {
- return NativePath(std.file.tempDir());
- }
-
- NativePath getTempFile(string prefix, string extension = null)
- {
- import std.uuid : randomUUID;
- import std.array: replace;
-
- string fileName = prefix ~ "-" ~ randomUUID.toString() ~ extension;
-
- if (extension !is null && extension == ".d")
- fileName = fileName.replace("-", "_");
-
- auto path = getTempDir() ~ fileName;
- temporary_files ~= path;
- return path;
- }
-
- private NativePath[] temporary_files;
-
- static ~this()
- {
- foreach (path; temporary_files)
- {
- auto spath = path.toNativeString();
- if (spath.exists)
- std.file.remove(spath);
- }
- }