commit:     1673958029040f3368d310341832db6d03c18c9c
Author:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
AuthorDate: Sat Nov  2 21:32:16 2019 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Sat Nov  2 21:32:16 2019 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=16739580

added option for dumping parsed projects

Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org>

 src/main/java/org/gentoo/java/ebuilder/Config.java | 22 +++++++
 src/main/java/org/gentoo/java/ebuilder/Main.java   | 28 ++++++++
 .../gentoo/java/ebuilder/maven/MavenProject.java   | 75 ++++++++++++++++++++++
 src/main/resources/usage.txt                       |  2 +
 4 files changed, 127 insertions(+)

diff --git a/src/main/java/org/gentoo/java/ebuilder/Config.java 
b/src/main/java/org/gentoo/java/ebuilder/Config.java
index 9bc98f8..3bf8cb8 100644
--- a/src/main/java/org/gentoo/java/ebuilder/Config.java
+++ b/src/main/java/org/gentoo/java/ebuilder/Config.java
@@ -24,6 +24,10 @@ public class Config {
      * URI that goes to SRC_URI.
      */
     private URI downloadUri;
+    /**
+     * Whether to output information about parsed projects.
+     */
+    private boolean dumpProjects;
     /**
      * Path to ebuild file that should be generated.
      */
@@ -327,6 +331,24 @@ public class Config {
         this.workdir = workdir;
     }
 
+    /**
+     * Getter for {@link #dumpProjects}.
+     *
+     * @return {@link #dumpProjects}
+     */
+    public boolean isDumpProjects() {
+        return dumpProjects;
+    }
+
+    /**
+     * Setter for {@link #dumpProjects}.
+     *
+     * @param dumpProjects {@link #dumpProjects}
+     */
+    public void setDumpProjects(final boolean dumpProjects) {
+        this.dumpProjects = dumpProjects;
+    }
+
     /**
      * Getter for {@link #generateEbuild}.
      *

diff --git a/src/main/java/org/gentoo/java/ebuilder/Main.java 
b/src/main/java/org/gentoo/java/ebuilder/Main.java
index bb6fbd7..871ac2a 100644
--- a/src/main/java/org/gentoo/java/ebuilder/Main.java
+++ b/src/main/java/org/gentoo/java/ebuilder/Main.java
@@ -126,6 +126,9 @@ public class Main {
         } else if (config.getDownloadUri() != null) {
             config.getErrorWriter().println("WARNING: Download URI is used "
                     + "only when generating ebuild.");
+        } else if (config.isDumpProjects()) {
+            config.getErrorWriter().println("WARNING: Dumping of projects can "
+                    + "be used only when generating ebuild.");
         } else if (config.getEbuild() != null) {
             config.getErrorWriter().println(
                     "WARNING: Ebuild is used only when "
@@ -155,6 +158,23 @@ public class Main {
         }
     }
 
+    private static void dumpMavenProjects(final Config config,
+            final List<MavenProject> mavenProjects) {
+        int i = 0;
+
+        for (final MavenProject mavenProject : mavenProjects) {
+            config.getStdoutWriter().println(MessageFormat.format(
+                    "\n===== PROJECT {0} DUMP START =====", i));
+            mavenProject.dump(config.getStdoutWriter());
+            config.getStdoutWriter().println(MessageFormat.format(
+                    "===== PROJECT {0} DUMP END =====", i));
+
+            i++;
+        }
+
+        config.getStdoutWriter().println();
+    }
+
     /**
      * Processed generation of ebuild.
      *
@@ -170,6 +190,10 @@ public class Main {
         final List<MavenProject> mavenProjects
                 = mavenParser.parsePomFiles(config, mavenCache);
 
+        if (config.isDumpProjects()) {
+            dumpMavenProjects(config, mavenProjects);
+        }
+
         final MavenEbuilder mavenEbuilder = new MavenEbuilder();
         mavenEbuilder.generateEbuild(config, mavenProjects, mavenCache);
     }
@@ -197,6 +221,10 @@ public class Main {
                                 + " is not valid.");
                     }
 
+                    break;
+                case "--dump-projects":
+                case "-d":
+                    config.setDumpProjects(true);
                     break;
                 case "--ebuild":
                 case "-e":

diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java 
b/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java
index ba575b1..6d0d8ec 100644
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java
@@ -1,5 +1,6 @@
 package org.gentoo.java.ebuilder.maven;
 
+import java.io.PrintWriter;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -121,6 +122,80 @@ public class MavenProject {
         testResourceDirectories.add(path);
     }
 
+    /**
+     * Outputs project properties to the writer.
+     *
+     * @param writer writer
+     */
+    public void dump(final PrintWriter writer) {
+        writer.print("POM file: ");
+        writer.println(pomFile);
+        writer.print("groupId: ");
+        writer.println(groupId);
+        writer.print("artifactId: ");
+        writer.println(artifactId);
+        writer.print("version: ");
+        writer.println(version);
+        writer.print("description: ");
+        writer.println(description);
+        writer.print("homepage: ");
+        writer.println(homepage);
+        writer.print("mainClass: ");
+        writer.println(mainClass);
+        writer.print("sourceVersion: ");
+        writer.println(sourceVersion);
+        writer.print("targetVersion: ");
+        writer.println(targetVersion);
+        writer.print("sourceEncoding: ");
+        writer.println(sourceEncoding);
+        writer.print("sourceDirectory: ");
+        writer.println(sourceDirectory);
+        writer.print("hasResources: ");
+        writer.println(hasResources);
+
+        writer.print("resourceDirectories:");
+
+        if (resourceDirectories != null) {
+            resourceDirectories.forEach((resourceDirectory) -> {
+                writer.print("  ");
+                writer.println(resourceDirectory);
+            });
+        }
+
+        writer.print("hasTests: ");
+        writer.println(hasTests);
+        writer.print("testSourceDirectory: ");
+        writer.println(testSourceDirectory);
+        writer.print("hasTestResources: ");
+        writer.println(hasTestResources);
+
+        writer.println("testResourceDirectories:");
+
+        testResourceDirectories.forEach((testResourceDirectory) -> {
+            writer.print("  ");
+            writer.println(testResourceDirectory);
+        });
+
+        writer.println("dependencies:");
+
+        if (dependencies != null) {
+            dependencies.forEach((dependency) -> {
+                writer.print("\n  groupId: ");
+                writer.println(dependency.getGroupId());
+                writer.print("  artifactId: ");
+                writer.println(dependency.getArtifactId());
+                writer.print("  mavenVersion: ");
+                writer.println(dependency.getMavenVersion());
+                writer.print("  scope: ");
+                writer.println(dependency.getScope());
+                writer.print("  systemDependency: ");
+                writer.println(dependency.getSystemDependency());
+                writer.print("  version: ");
+                writer.println(dependency.getVersion());
+            });
+        }
+    }
+
     /**
      * Getter for {@link #artifactId}.
      *

diff --git a/src/main/resources/usage.txt b/src/main/resources/usage.txt
index 4ad06d7..fc2689f 100644
--- a/src/main/resources/usage.txt
+++ b/src/main/resources/usage.txt
@@ -2,6 +2,8 @@ Usage: java-ebuilder <args>
 
 Generating ebuild:
 --download-uri|-u <uri>     uri that goes to SRC_URI
+--dump-projects|-d          outputs information about parsed projects (useful
+                            for debugging)
 --ebuild|-e <file>          path to ebuild that should be created
 --generate-ebuild|-g        generates ebuild from pom.xml
 --keywords|-k <keywords>    arch keywords

Reply via email to