blob: 4e7bdc2be5e0ce6c2763fed92f32246f131f63c3 [file] [log] [blame]
James Kuszmaul4b81d302019-12-14 20:53:14 -08001def fileCheck = { parsedJson, folder ->
2 def folderNames = parsedJson.collect { it.foldername }
Brian Silverman41cdd3e2019-01-19 19:48:58 -08003 def folders = []
4 folder.eachDir {
5 folders << it.name
6 }
7 def disjunct = (folders + folderNames) - folders.intersect(folderNames)
8 def missingFromFolders = folderNames.intersect(disjunct)
9 def missingFromJson = folders.intersect(disjunct)
10
11 if (!missingFromFolders.empty || !missingFromJson.empty) {
12 StringBuilder missingString = new StringBuilder();
13 missingString.append("Missing From Folders\n")
14 for (String symbol : missingFromFolders) {
15 missingString.append(symbol);
16 missingString.append('\n');
17 }
18 missingString.append("\nMissing from JSON\n")
19 for (String symbol : missingFromJson) {
20 missingString.append(symbol);
21 missingString.append('\n');
22 }
23 throw new GradleException("Found missing items\n" + missingString.toString());
24 }
25}
26
27task checkTemplates(type: Task) {
28 doLast {
James Kuszmaul4b81d302019-12-14 20:53:14 -080029 def parsedJson = new groovy.json.JsonSlurper().parseText(templateFile.text)
30 fileCheck(parsedJson, templateDirectory)
31 parsedJson.each {
32 assert it.name != null
33 assert it.description != null
34 assert it.tags != null
35 assert it.foldername != null
36 assert it.gradlebase != null
37 assert it.commandversion != null
38 if (it.gradlebase == 'java') {
39 assert it.mainclass != null
40 }
41 }
Brian Silverman41cdd3e2019-01-19 19:48:58 -080042 }
43}
44
45task checkExamples(type: Task) {
46 doLast {
James Kuszmaul4b81d302019-12-14 20:53:14 -080047 def parsedJson = new groovy.json.JsonSlurper().parseText(exampleFile.text)
48 fileCheck(parsedJson, exampleDirectory)
49 parsedJson.each {
50 assert it.name != null
51 assert it.description != null
52 assert it.tags != null
53 assert it.foldername != null
54 assert it.gradlebase != null
55 assert it.commandversion != null
56 if (it.gradlebase == 'java') {
57 assert it.mainclass != null
58 }
59 }
Brian Silverman41cdd3e2019-01-19 19:48:58 -080060 }
61}
62
63task checkCommands(type: Task) {
64 doLast {
James Kuszmaul4b81d302019-12-14 20:53:14 -080065 def parsedJson = new groovy.json.JsonSlurper().parseText(commandFile.text)
66 fileCheck(parsedJson, commandDirectory)
67 parsedJson.each {
68 assert it.name != null
69 assert it.description != null
70 assert it.tags != null
71 assert it.foldername != null
72 assert it.replacename != null
73 if (project.isCppCommands) {
74 assert it.headers != null
75 assert !it.headers.isEmpty()
76 assert it.source != null
77 assert !it.source.isEmpty()
78 }
79 }
Brian Silverman41cdd3e2019-01-19 19:48:58 -080080 }
81}
82
83check.dependsOn checkTemplates
84check.dependsOn checkExamples
85check.dependsOn checkCommands