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