import std.algorithm; import std.ascii; import std.conv; import std.exception; import std.file; import std.path; import std.process; import std.range; import std.string; void main() { auto dir = environment.get("DUB_PACKAGE_DIR"); auto hashFile = dir.buildPath("bin", "dubhash.txt"); auto gitVer = executeShell("git -C " ~ dir ~ " describe --tags"); auto ver = (gitVer.status == 0 ? gitVer.output.strip : "v" ~ dir.dirName.baseName.findSplitAfter( environment.get("DUB_ROOT_PACKAGE") ~ "-")[1]).ifThrown("0.0.0") .chain(newline).to!string.strip; dir.buildPath("bin").mkdirRecurse; if (!hashFile.exists || ver != hashFile.readText.strip) hashFile.write(ver); }