aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@google.com>2015-06-30 16:19:15 +0000
committerandroid-build-merger <android-build-merger@google.com>2015-06-30 16:19:15 +0000
commit2d55af7621e11073c9145001d797a2e7257c6e19 (patch)
treed3b3705badf2d8555fc708cc94451f9d235148c1
parent96b6b5a5a90933212e8ace7efb93571f49b32f78 (diff)
parent37cf50511e90760bce9d24636503209f6e7a1e4e (diff)
downloadbuildSrc-2d55af7621e11073c9145001d797a2e7257c6e19.tar.gz
Write the license report to out/dist
automerge: 37cf505 * commit '37cf50511e90760bce9d24636503209f6e7a1e4e': Write the license report to out/dist
-rw-r--r--src/main/groovy/com/android/tools/internal/license/ReportTask.java59
-rw-r--r--src/main/java/com/android/tools/internal/artifacts/PomHandler.java2
2 files changed, 47 insertions, 14 deletions
diff --git a/src/main/groovy/com/android/tools/internal/license/ReportTask.java b/src/main/groovy/com/android/tools/internal/license/ReportTask.java
index 8964c2f..7f53069 100644
--- a/src/main/groovy/com/android/tools/internal/license/ReportTask.java
+++ b/src/main/groovy/com/android/tools/internal/license/ReportTask.java
@@ -29,9 +29,11 @@ import org.gradle.api.artifacts.component.ProjectComponentIdentifier;
import org.gradle.api.artifacts.result.DependencyResult;
import org.gradle.api.artifacts.result.ResolvedComponentResult;
import org.gradle.api.artifacts.result.ResolvedDependencyResult;
+import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction;
import java.io.File;
+import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
@@ -45,6 +47,13 @@ import java.util.*;
*/
public class ReportTask extends DefaultTask {
+ @OutputFile
+ public File getOutputFile() {
+ return new File(
+ (File) getProject().getRootProject().getExtensions().getExtraProperties().get("androidHostDist"),
+ "license-" + getProject().getName() + ".txt");
+ }
+
@TaskAction
public void report() throws IOException {
Project project = getProject();
@@ -67,41 +76,68 @@ public class ReportTask extends DefaultTask {
}
}
+ Map<String, List<License>> map = new HashMap<String, List<License>>(pomFiles.size());
+
for (File pomFile : pomFiles) {
PomHandler pomHandler = new PomHandler(pomFile);
- ModuleVersionIdentifier artifactName = pomHandler.getArtifactName();
- System.out.println(artifactName);
+ ModuleVersionIdentifier artifactName = pomHandler.getArtifactId();
List<License> licenses = pomHandler.getLicenses();
-
File parentPomFile = pomFile;
PomHandler parentPomHandler = pomHandler;
while (licenses.isEmpty()) {
// get the parent pom
parentPomFile = computeParentPomLocation(parentPomFile, parentPomHandler);
+ if (parentPomFile == null) {
+ break;
+ }
parentPomHandler = new PomHandler(parentPomFile);
licenses = parentPomHandler.getLicenses();
}
if (!licenses.isEmpty()) {
- for (License license : licenses) {
- System.out.println(" > " + license.getName());
+ map.put(artifactName.toString(), licenses);
+ } else {
+ throw new RuntimeException("unable to find license info for " + artifactName);
+ }
+ }
+
+ List<String> keys = new ArrayList<String>(map.keySet());
+ Collections.sort(keys);
+
+ File outputFile = getOutputFile();
+ FileWriter writer = new FileWriter(outputFile);
+ try {
+ for (String key : keys) {
+ writer.write(key);
+ writer.write("\n");
+ for (License license : map.get(key)) {
+ writer.write(" > " + license.getName());
+ writer.write("\n");
if (license.getUrl() != null) {
- System.out.println(" " + license.getUrl());
+ writer.write(" " + license.getUrl());
+ writer.write("\n");
}
if (license.getComments() != null) {
- System.out.println(" " + license.getComments());
+ writer.write(" " + license.getComments());
+ writer.write("\n");
}
}
- } else {
- throw new RuntimeException("unable to find license info for " + artifactName);
}
+ } finally {
+ writer.close();
}
}
private static File computeParentPomLocation(File pomFile, PomHandler pomHandler) throws IOException {
+ // get the parent pom coordinate
+ ModuleVersionIdentifier parentPomCoord = pomHandler.getParentPom();
+ if (parentPomCoord == null) {
+ return null;
+ }
+
// To find the location of the parentPom, we can rely on the following location pattern for pom files:
// groupIdSeg1/groupIdSeg2/.../name/version/name-version.pom
// So first we back track from the current pom to find the root of the repo
@@ -110,15 +146,12 @@ public class ReportTask extends DefaultTask {
File parentPomFile = pomFile.getParentFile().getParentFile().getParentFile();
// now get the number of groupId segment
- Iterable<String> segments = Splitter.on('.').split(pomHandler.getArtifactName().getGroup());
+ Iterable<String> segments = Splitter.on('.').split(pomHandler.getArtifactId().getGroup());
//noinspection unused
for (String segment : segments) {
parentPomFile = parentPomFile.getParentFile();
}
- // now get the parent pom coordinate
- ModuleVersionIdentifier parentPomCoord = pomHandler.getParentPom();
-
// add the segments
segments = Splitter.on('.').split(parentPomCoord.getGroup());
for (String segment : segments) {
diff --git a/src/main/java/com/android/tools/internal/artifacts/PomHandler.java b/src/main/java/com/android/tools/internal/artifacts/PomHandler.java
index 74cd322..1279195 100644
--- a/src/main/java/com/android/tools/internal/artifacts/PomHandler.java
+++ b/src/main/java/com/android/tools/internal/artifacts/PomHandler.java
@@ -114,7 +114,7 @@ public class PomHandler {
this.pomFile = pomFile;
}
- public ModuleVersionIdentifier getArtifactName() throws IOException {
+ public ModuleVersionIdentifier getArtifactId() throws IOException {
Document document = getDocument();
Node rootNode = document.getDocumentElement();