From ce0a9ab622c18cc4950362f8c1fc8bc79c24efe6 Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Mon, 9 Jan 2023 11:00:02 -0700
Subject: [PATCH] add function and task

---
 gradle/nshm.gradle | 49 ++++++++++++++++++++++++++++++++++------------
 1 file changed, 36 insertions(+), 13 deletions(-)

diff --git a/gradle/nshm.gradle b/gradle/nshm.gradle
index 7774f90b..8b8cfbd7 100644
--- a/gradle/nshm.gradle
+++ b/gradle/nshm.gradle
@@ -15,16 +15,11 @@ ext {
   nshmDir = "nshms";
 
   // Download and unzip NSHM
-  downloadNshm = {repo, year ->
-    def yaml = new Yaml()
-    def nshmConfig = new Yaml().load(new File("${projectDir}/nshms.yml").newInputStream())
-    def nshm = nshmConfig.nshms.find{nshm -> nshm.repo == repo && nshm.year == year}
-
-    if (nshm == null) {
-      throw new Exception("NSHM ${repo} ${year} not found.")
-    }
-
+  downloadNshm = {nshm ->
+    def repo = nshm.repo
     def tag = nshm.tag
+    def year = nshm.year
+
     def zipName = "${repo}-${tag}.zip";
     def zipFile = new File(nshmDir, zipName)
     def nshmFile = file("${nshmDir}/${repo}-${year}")
@@ -46,6 +41,20 @@ ext {
       delete zipFile
     }
   }
+
+  // Returns a NSHM from nshms.yml array
+  findNshm = {repo, year ->
+    def yaml = new Yaml()
+    def nshmConfig = new Yaml().load(new File("${projectDir}/nshms.yml").newInputStream())
+    def nshm = nshmConfig.nshms.find{nshm -> nshm.repo == repo && nshm.year == year}
+
+    if (nshm == null) {
+      throw new Exception("NSHM ${repo} ${year} not found.")
+    }
+
+    return nshm
+  }
+
 }
 
 task cleanNshm(type: Delete) {
@@ -53,13 +62,27 @@ task cleanNshm(type: Delete) {
 }
 clean.dependsOn cleanNshm
 
+// Download all NSHMs
+task nshms() {
+  dependsOn cleanNshm
+  def yaml = new Yaml()
+  def nshmConfig = new Yaml().load(new File("${projectDir}/nshms.yml").newInputStream())
+
+  doLast {
+    for (nshm in nshmConfig.nshms) {
+      // Download NSHM
+      downloadNshm(nshm)
+    }
+  }
+}
+
 // Test Alaska 2023 NSHM
 task testAlaska2023(type: Test) {
   description = "Test Alaska 2023 NSHM"
   group = "verification"
 
   doFirst {
-    downloadNshm("nshm-alaska", 2023)
+    downloadNshm(findNshm("nshm-alaska", 2023))
   }
 
   testLogging {
@@ -83,7 +106,7 @@ task testConus2018(type: Test) {
   group = "verification"
 
   doFirst {
-    downloadNshm("nshm-conus", 2018)
+    downloadNshm(findNshm("nshm-conus", 2018))
   }
 
   testLogging {
@@ -107,7 +130,7 @@ task testConus2023(type: Test) {
   group = "verification"
 
   doFirst {
-    downloadNshm("nshm-conus", 2023)
+    downloadNshm(findNshm("nshm-conus", 2023))
   }
 
   testLogging {
@@ -131,7 +154,7 @@ task testHawaii2021(type: Test) {
   group = "verification"
 
   doFirst {
-    downloadNshm("nshm-hawaii", 2021)
+    downloadNshm(findNshm("nshm-hawaii", 2021))
   }
 
   testLogging {
-- 
GitLab