Rename our allwpilib (which is now 2020) to not have 2019 in the name

Change-Id: I3c07f85ed32ab8b97db765a9b43f2a6ce7da964a
diff --git a/shared/examplecheck.gradle b/shared/examplecheck.gradle
new file mode 100644
index 0000000..3d05c67
--- /dev/null
+++ b/shared/examplecheck.gradle
@@ -0,0 +1,86 @@
+def fileCheck = { parsedJson, folder ->
+    def folderNames = parsedJson.collect { it.foldername }
+    def folders = []
+    folder.eachDir {
+        folders << it.name
+    }
+    def disjunct = (folders + folderNames) - folders.intersect(folderNames)
+    def missingFromFolders = folderNames.intersect(disjunct)
+    def missingFromJson = folders.intersect(disjunct)
+
+    if (!missingFromFolders.empty || !missingFromJson.empty) {
+        StringBuilder missingString = new StringBuilder();
+        missingString.append("Missing From Folders\n")
+        for (String symbol : missingFromFolders) {
+            missingString.append(symbol);
+            missingString.append('\n');
+        }
+        missingString.append("\nMissing from JSON\n")
+        for (String symbol : missingFromJson) {
+            missingString.append(symbol);
+            missingString.append('\n');
+        }
+        throw new GradleException("Found missing items\n" + missingString.toString());
+    }
+}
+
+task checkTemplates(type: Task) {
+    doLast {
+        def parsedJson = new groovy.json.JsonSlurper().parseText(templateFile.text)
+        fileCheck(parsedJson, templateDirectory)
+        parsedJson.each {
+            assert it.name != null
+            assert it.description != null
+            assert it.tags != null
+            assert it.foldername != null
+            assert it.gradlebase != null
+            assert it.commandversion != null
+            if (it.gradlebase == 'java') {
+                assert it.mainclass != null
+            }
+        }
+    }
+}
+
+task checkExamples(type: Task) {
+    doLast {
+        def parsedJson = new groovy.json.JsonSlurper().parseText(exampleFile.text)
+        fileCheck(parsedJson, exampleDirectory)
+        parsedJson.each {
+            assert it.name != null
+            assert it.description != null
+            assert it.tags != null
+            assert it.foldername != null
+            assert it.gradlebase != null
+            assert it.commandversion != null
+            if (it.gradlebase == 'java') {
+                assert it.mainclass != null
+            }
+        }
+    }
+}
+
+task checkCommands(type: Task) {
+    doLast {
+        def parsedJson = new groovy.json.JsonSlurper().parseText(commandFile.text)
+        fileCheck(parsedJson, commandDirectory)
+        parsedJson.each {
+            assert it.name != null
+            assert it.description != null
+            assert it.tags != null
+            assert it.foldername != null
+            assert it.replacename != null
+            assert it.commandversion != null
+            if (project.isCppCommands) {
+                assert it.headers != null
+                assert !it.headers.isEmpty()
+                assert it.source != null
+                assert !it.source.isEmpty()
+            }
+        }
+    }
+}
+
+check.dependsOn checkTemplates
+check.dependsOn checkExamples
+check.dependsOn checkCommands