config/source-archive.gradle
changeset 1 831cffa9c991
child 6 99ad8c14fec2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config/source-archive.gradle	Fri May 08 21:33:19 2020 -0400
@@ -0,0 +1,38 @@
+task sourceArchive {
+    description "Get the source archive of the project"
+}
+
+sourceArchive.doLast {
+    makeSourceArchive(rootProject.name)
+}
+
+project.build.dependsOn sourceArchive
+
+def makeSourceArchive(String projectName) {
+    def git = new File(".git")
+    def hg = new File(".hg")
+    def tag
+    if (git.exists()) {
+        tag = getGitSha1()
+        println("Building source archive \"${projectName}-src-${tag}.zip\" from git")
+        exec {
+            workingDir project.rootDir
+            commandLine "git", "archive", "--format=zip", "--prefix=${projectName}-src-${tag}/", "-o", "${projectName}-src-${tag}.zip", "HEAD"
+        }
+    } else if (hg.exists()) {
+        tag = getHgSha1()
+        println("Building source archive \"${projectName}-src-${tag}.zip\" from hg")
+        exec {
+            workingDir project.rootDir
+            commandLine "hg", "archive", "-t", "zip", "-r", tag, "${projectName}-src-${tag}.zip"
+        }
+    }
+}
+
+def getGitSha1() {
+    return 'git rev-parse HEAD'.execute().text.trim()
+}
+
+def getHgSha1() {
+    return 'hg id --debug -i -r .'.execute().text.trim()
+}