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