module build; import std.exception; import std.range; import std.file; import std.path; import std.process; import std.string; import std.stdio; version(Windows) { string libArg = r"bin\libgit2_implib.lib"; string binPath = r"bin\"; enum string exeExt = ".exe"; } else { string libArg = "-Lbin/ -L-lgit2"; string binPath = "bin/"; enum string exeExt = ""; } void main(string[] args) { args.popFront(); if (args.empty) { writeln("Error: Pass a .d file to compile."); return; } string arg = args.front; string proj = arg.stripExtension.baseName; string outFile = format("%s%s%s", binPath, proj, exeExt); string path1 = buildPath(".".absolutePath, "src/git2").buildNormalizedPath; string path2 = buildPath(".".absolutePath, "../../src/git2").buildNormalizedPath; string dlibgitPath = path1.exists ? path1 : path2; dlibgitPath = buildPath(dlibgitPath, "../").buildNormalizedPath; enforce(dlibgitPath.exists); string basePath = buildPath(dlibgitPath, "../"); libArg = buildPath(basePath, libArg).buildNormalizedPath; outFile = buildPath(basePath, outFile).buildNormalizedPath; string cmd = format("rdmd --force --build-only -m32 %s -I%s -of%s %s", libArg, dlibgitPath, outFile, arg); system(cmd); }