| 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 |