Map parseMavenPom()

in generate-badges.groovy [96:154]


Map parseMavenPom(File projectFolder, File aggregatorDir) {
    File pomFile = new File(projectFolder, 'pom.xml')
    String repoName = projectFolder.name

    println "Fetching from ${projectFolder}..."

    println 'Reading status lists...'
    String[] contrib = new File(aggregatorDir, 'contrib-projects.txt').text.split('\\n')
    assert contrib

    if (!pomFile.exists()) {
        return null
    }

    println 'Parsing pom.xml...'
    Node pom = new XmlParser().parseText(pomFile.text)

    Map project = [:]
    project['artifactId'] = pom.artifactId.text()
    project['name'] = pom.name.text()
    if (!project['name']) {
        project['name'] = repoName
    }
    project['description'] = pom.description.text().replace('\n', ' ')
    project['group'] = getProjectGroup(repoName, aggregatorDir)
    project['folder'] = repoName
    project['projectVersion'] = pom.version.text()
    project['parentVersion'] = pom.parent.version.text()
    project['javaVersion'] = pom.properties["sling.java.version"].text()
    if (contrib.contains(repoName)) {
        println 'Setting project status to contrib...'
        project['contrib'] = true
    }

    // parse .sling-module.json
    project['buildJdks'] = ''
    File slingModuleFile = new File(projectFolder, '.sling-module.json')
    if (slingModuleFile.exists()) {
        def jsonParser = new JsonSlurper()
        def slingModule = jsonParser.parse(slingModuleFile)
        if (slingModule.jenkins.jdks) {
            project['buildJdks'] = slingModule.jenkins.jdks
        }
    }

    // parse .asf.yaml
    File asfYamlFile = new File(projectFolder, '.asf.yaml')
    if (asfYamlFile.exists()) {
        def yamlParser = new YamlSlurper()
        def asfYaml = yamlParser.parse(asfYamlFile)
        def labels = asfYaml.github.labels
        if (labels && labels.contains("deprecated")) {
            println 'Setting project status to deprecated...'
            project['deprecated'] = true
        }
    }

    return project
}