diff options
author | Xavier Ducrohet <xav@google.com> | 2015-06-30 16:19:15 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2015-06-30 16:19:15 +0000 |
commit | 2d55af7621e11073c9145001d797a2e7257c6e19 (patch) | |
tree | d3b3705badf2d8555fc708cc94451f9d235148c1 | |
parent | 96b6b5a5a90933212e8ace7efb93571f49b32f78 (diff) | |
parent | 37cf50511e90760bce9d24636503209f6e7a1e4e (diff) | |
download | buildSrc-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.java | 59 | ||||
-rw-r--r-- | src/main/java/com/android/tools/internal/artifacts/PomHandler.java | 2 |
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(); |