| #!/usr/bin/env groovy |
| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| /* groovylint-disable SystemExit */ |
| /* groovylint-disable JavaIoPackageAccess */ |
| |
| import groovy.io.FileType |
| import groovy.transform.SourceURI |
| import groovy.util.XmlParser |
| import groovy.util.Node |
| |
| import java.nio.file.Paths |
| |
| if (args.length == 0) { |
| println 'Generates the badges for a project.' |
| println 'Please provide the Project Directory: groovy generate-project-badges.groovy [PROJECT_DIR]' |
| System.exit(1) |
| } |
| |
| GroovyShell shell = new GroovyShell() |
| |
| @SourceURI |
| URI sourceUri |
| |
| File getReadMe(File projectDir) { |
| def readmes = [] |
| projectDir.eachFile(FileType.FILES, { |
| if (it.path =~ ~/(?i)readme.md/) { |
| readmes.push(it.name) |
| } |
| }) |
| return new File(projectDir, readmes[0]) |
| } |
| |
| def genBadges = shell.parse(new File(Paths.get(sourceUri).parent.toString(), './generate-badges.groovy').text) |
| String projectDir = args[0] |
| projectDir = new File(projectDir).getCanonicalPath() |
| |
| println '\n\nGenerate Project Badges!' |
| println '-------------------------' |
| |
| println "Updating badges in ${projectDir}" |
| |
| Map project = genBadges.parseMavenPom(new File(projectDir), new File(Paths.get(sourceUri).parent.toString())) |
| if (project == null) { |
| project = [:] |
| project.folder = new File(projectDir).name |
| } |
| def badges = genBadges.calculateBadges(project) |
| badges.add(' [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)') |
| |
| File readme = getReadMe(new File(projectDir)) |
| def lines = readme.readLines() |
| |
| println "Updating ${readme}" |
| lines[3..(lines.size() - 1)].join('\n') |
| readme.newWriter().withWriter { w -> |
| w << "[![Apache Sling](https://sling.apache.org/res/logos/sling.png)](https://sling.apache.org)\n\n${badges.join('')}\n${lines[3..(lines.size - 1)].join('\n')}\n" |
| } |
| |
| println 'Update complete!' |
| |