30 lines
815 B
D
30 lines
815 B
D
import std.stdio;
|
|
|
|
void main() {
|
|
makeDir("parent/test");
|
|
}
|
|
|
|
/// Manual implementation of what mkdirRecurse in std.file does.
|
|
void makeDir(string path) out {
|
|
import std.exception : enforce;
|
|
import std.file : exists;
|
|
enforce(path.exists, "Failed to create the requested directory.");
|
|
} body {
|
|
import std.array : array;
|
|
import std.file;
|
|
import std.path : pathSplitter, chainPath;
|
|
|
|
auto workdir = "";
|
|
foreach (dir; path.pathSplitter) {
|
|
workdir = chainPath(workdir, dir).array;
|
|
if (workdir.exists) {
|
|
if (!workdir.isDir) {
|
|
import std.conv : text;
|
|
throw new FileException(text("The file ", workdir, " in the path ", path, " is not a directory."));
|
|
}
|
|
} else {
|
|
workdir.mkdir();
|
|
}
|
|
}
|
|
}
|