This was kind of taken from a cool trick I saw in dub's buildscript, but
I figured it would be useful to have generalized in a convenient
package, no messing with shell scripts or anything.
https://github.com/Abscissa/gen-package-version
gen-package-version: Automatically generate a D module with version and
timestamp information (detected from git) every time your program or
library is built.
Additionally. all your in-between builds will automatically have their
own git-generated version number, including the git commit hash (for
example: v1.2.0-1-g78f5cf9). So there's never any confusion as to which
"version" of v1.2.0 you're running!
Full usage and instructions are at the link above, but here's a brief
primer for those using it with dub:
To use:
=======
Add this to your dub.json:
-----------------------------------------------------
"dependencies": {
"gen-package-version": "~>0.9.0"
},
"preGenerateCommands":
["dub run gen-package-version -- package.name --src=path/to/src"]
-----------------------------------------------------
It'll generate "path/to/src/package/name/packageVersion.d".
Then just import that and use:
-----------------------------------------------------
module package.name.main;
import std.stdio;
import package.name.packageVersion;
void main()
{
writeln("My Cool Program ", packageVersion);
writeln("Built on ", packageTimestamp);
}
-----------------------------------------------------