blob: 3d05c672928e8ea6ff1d61e4df752c60c56f7dbe [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
James Kuszmaul397f6fe2020-01-04 16:21:52 -080073 assert it.commandversion != null
James Kuszmaul4b81d302019-12-14 20:53:14 -080074 if (project.isCppCommands) {
75 assert it.headers != null
76 assert !it.headers.isEmpty()
77 assert it.source != null
78 assert !it.source.isEmpty()
79 }
80 }
Brian Silverman41cdd3e2019-01-19 19:48:58 -080081 }
82}
83
84check.dependsOn checkTemplates
85check.dependsOn checkExamples
86check.dependsOn checkCommands