blob: 64a83c75c64851225d31014c2d944e770ed84d17 [file] [log] [blame]
Brian Silverman41cdd3e2019-01-19 19:48:58 -08001def fileCheck = { file, folder ->
2 def folderNames = new groovy.json.JsonSlurper().parseText(file.text).collect { it.foldername }
3 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 {
29 fileCheck(templateFile, templateDirectory)
30 }
31}
32
33task checkExamples(type: Task) {
34 doLast {
35 fileCheck(exampleFile, exampleDirectory)
36 }
37}
38
39task checkCommands(type: Task) {
40 doLast {
41 fileCheck(commandFile, commandDirectory)
42 }
43}
44
45check.dependsOn checkTemplates
46check.dependsOn checkExamples
47check.dependsOn checkCommands