1 |
commit: 1673958029040f3368d310341832db6d03c18c9c |
2 |
Author: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Nov 2 21:32:16 2019 +0000 |
4 |
Commit: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Nov 2 21:32:16 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=16739580 |
7 |
|
8 |
added option for dumping parsed projects |
9 |
|
10 |
Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org> |
11 |
|
12 |
src/main/java/org/gentoo/java/ebuilder/Config.java | 22 +++++++ |
13 |
src/main/java/org/gentoo/java/ebuilder/Main.java | 28 ++++++++ |
14 |
.../gentoo/java/ebuilder/maven/MavenProject.java | 75 ++++++++++++++++++++++ |
15 |
src/main/resources/usage.txt | 2 + |
16 |
4 files changed, 127 insertions(+) |
17 |
|
18 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/Config.java b/src/main/java/org/gentoo/java/ebuilder/Config.java |
19 |
index 9bc98f8..3bf8cb8 100644 |
20 |
--- a/src/main/java/org/gentoo/java/ebuilder/Config.java |
21 |
+++ b/src/main/java/org/gentoo/java/ebuilder/Config.java |
22 |
@@ -24,6 +24,10 @@ public class Config { |
23 |
* URI that goes to SRC_URI. |
24 |
*/ |
25 |
private URI downloadUri; |
26 |
+ /** |
27 |
+ * Whether to output information about parsed projects. |
28 |
+ */ |
29 |
+ private boolean dumpProjects; |
30 |
/** |
31 |
* Path to ebuild file that should be generated. |
32 |
*/ |
33 |
@@ -327,6 +331,24 @@ public class Config { |
34 |
this.workdir = workdir; |
35 |
} |
36 |
|
37 |
+ /** |
38 |
+ * Getter for {@link #dumpProjects}. |
39 |
+ * |
40 |
+ * @return {@link #dumpProjects} |
41 |
+ */ |
42 |
+ public boolean isDumpProjects() { |
43 |
+ return dumpProjects; |
44 |
+ } |
45 |
+ |
46 |
+ /** |
47 |
+ * Setter for {@link #dumpProjects}. |
48 |
+ * |
49 |
+ * @param dumpProjects {@link #dumpProjects} |
50 |
+ */ |
51 |
+ public void setDumpProjects(final boolean dumpProjects) { |
52 |
+ this.dumpProjects = dumpProjects; |
53 |
+ } |
54 |
+ |
55 |
/** |
56 |
* Getter for {@link #generateEbuild}. |
57 |
* |
58 |
|
59 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/Main.java b/src/main/java/org/gentoo/java/ebuilder/Main.java |
60 |
index bb6fbd7..871ac2a 100644 |
61 |
--- a/src/main/java/org/gentoo/java/ebuilder/Main.java |
62 |
+++ b/src/main/java/org/gentoo/java/ebuilder/Main.java |
63 |
@@ -126,6 +126,9 @@ public class Main { |
64 |
} else if (config.getDownloadUri() != null) { |
65 |
config.getErrorWriter().println("WARNING: Download URI is used " |
66 |
+ "only when generating ebuild."); |
67 |
+ } else if (config.isDumpProjects()) { |
68 |
+ config.getErrorWriter().println("WARNING: Dumping of projects can " |
69 |
+ + "be used only when generating ebuild."); |
70 |
} else if (config.getEbuild() != null) { |
71 |
config.getErrorWriter().println( |
72 |
"WARNING: Ebuild is used only when " |
73 |
@@ -155,6 +158,23 @@ public class Main { |
74 |
} |
75 |
} |
76 |
|
77 |
+ private static void dumpMavenProjects(final Config config, |
78 |
+ final List<MavenProject> mavenProjects) { |
79 |
+ int i = 0; |
80 |
+ |
81 |
+ for (final MavenProject mavenProject : mavenProjects) { |
82 |
+ config.getStdoutWriter().println(MessageFormat.format( |
83 |
+ "\n===== PROJECT {0} DUMP START =====", i)); |
84 |
+ mavenProject.dump(config.getStdoutWriter()); |
85 |
+ config.getStdoutWriter().println(MessageFormat.format( |
86 |
+ "===== PROJECT {0} DUMP END =====", i)); |
87 |
+ |
88 |
+ i++; |
89 |
+ } |
90 |
+ |
91 |
+ config.getStdoutWriter().println(); |
92 |
+ } |
93 |
+ |
94 |
/** |
95 |
* Processed generation of ebuild. |
96 |
* |
97 |
@@ -170,6 +190,10 @@ public class Main { |
98 |
final List<MavenProject> mavenProjects |
99 |
= mavenParser.parsePomFiles(config, mavenCache); |
100 |
|
101 |
+ if (config.isDumpProjects()) { |
102 |
+ dumpMavenProjects(config, mavenProjects); |
103 |
+ } |
104 |
+ |
105 |
final MavenEbuilder mavenEbuilder = new MavenEbuilder(); |
106 |
mavenEbuilder.generateEbuild(config, mavenProjects, mavenCache); |
107 |
} |
108 |
@@ -197,6 +221,10 @@ public class Main { |
109 |
+ " is not valid."); |
110 |
} |
111 |
|
112 |
+ break; |
113 |
+ case "--dump-projects": |
114 |
+ case "-d": |
115 |
+ config.setDumpProjects(true); |
116 |
break; |
117 |
case "--ebuild": |
118 |
case "-e": |
119 |
|
120 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java |
121 |
index ba575b1..6d0d8ec 100644 |
122 |
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java |
123 |
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java |
124 |
@@ -1,5 +1,6 @@ |
125 |
package org.gentoo.java.ebuilder.maven; |
126 |
|
127 |
+import java.io.PrintWriter; |
128 |
import java.nio.file.Path; |
129 |
import java.util.ArrayList; |
130 |
import java.util.Collections; |
131 |
@@ -121,6 +122,80 @@ public class MavenProject { |
132 |
testResourceDirectories.add(path); |
133 |
} |
134 |
|
135 |
+ /** |
136 |
+ * Outputs project properties to the writer. |
137 |
+ * |
138 |
+ * @param writer writer |
139 |
+ */ |
140 |
+ public void dump(final PrintWriter writer) { |
141 |
+ writer.print("POM file: "); |
142 |
+ writer.println(pomFile); |
143 |
+ writer.print("groupId: "); |
144 |
+ writer.println(groupId); |
145 |
+ writer.print("artifactId: "); |
146 |
+ writer.println(artifactId); |
147 |
+ writer.print("version: "); |
148 |
+ writer.println(version); |
149 |
+ writer.print("description: "); |
150 |
+ writer.println(description); |
151 |
+ writer.print("homepage: "); |
152 |
+ writer.println(homepage); |
153 |
+ writer.print("mainClass: "); |
154 |
+ writer.println(mainClass); |
155 |
+ writer.print("sourceVersion: "); |
156 |
+ writer.println(sourceVersion); |
157 |
+ writer.print("targetVersion: "); |
158 |
+ writer.println(targetVersion); |
159 |
+ writer.print("sourceEncoding: "); |
160 |
+ writer.println(sourceEncoding); |
161 |
+ writer.print("sourceDirectory: "); |
162 |
+ writer.println(sourceDirectory); |
163 |
+ writer.print("hasResources: "); |
164 |
+ writer.println(hasResources); |
165 |
+ |
166 |
+ writer.print("resourceDirectories:"); |
167 |
+ |
168 |
+ if (resourceDirectories != null) { |
169 |
+ resourceDirectories.forEach((resourceDirectory) -> { |
170 |
+ writer.print(" "); |
171 |
+ writer.println(resourceDirectory); |
172 |
+ }); |
173 |
+ } |
174 |
+ |
175 |
+ writer.print("hasTests: "); |
176 |
+ writer.println(hasTests); |
177 |
+ writer.print("testSourceDirectory: "); |
178 |
+ writer.println(testSourceDirectory); |
179 |
+ writer.print("hasTestResources: "); |
180 |
+ writer.println(hasTestResources); |
181 |
+ |
182 |
+ writer.println("testResourceDirectories:"); |
183 |
+ |
184 |
+ testResourceDirectories.forEach((testResourceDirectory) -> { |
185 |
+ writer.print(" "); |
186 |
+ writer.println(testResourceDirectory); |
187 |
+ }); |
188 |
+ |
189 |
+ writer.println("dependencies:"); |
190 |
+ |
191 |
+ if (dependencies != null) { |
192 |
+ dependencies.forEach((dependency) -> { |
193 |
+ writer.print("\n groupId: "); |
194 |
+ writer.println(dependency.getGroupId()); |
195 |
+ writer.print(" artifactId: "); |
196 |
+ writer.println(dependency.getArtifactId()); |
197 |
+ writer.print(" mavenVersion: "); |
198 |
+ writer.println(dependency.getMavenVersion()); |
199 |
+ writer.print(" scope: "); |
200 |
+ writer.println(dependency.getScope()); |
201 |
+ writer.print(" systemDependency: "); |
202 |
+ writer.println(dependency.getSystemDependency()); |
203 |
+ writer.print(" version: "); |
204 |
+ writer.println(dependency.getVersion()); |
205 |
+ }); |
206 |
+ } |
207 |
+ } |
208 |
+ |
209 |
/** |
210 |
* Getter for {@link #artifactId}. |
211 |
* |
212 |
|
213 |
diff --git a/src/main/resources/usage.txt b/src/main/resources/usage.txt |
214 |
index 4ad06d7..fc2689f 100644 |
215 |
--- a/src/main/resources/usage.txt |
216 |
+++ b/src/main/resources/usage.txt |
217 |
@@ -2,6 +2,8 @@ Usage: java-ebuilder <args> |
218 |
|
219 |
Generating ebuild: |
220 |
--download-uri|-u <uri> uri that goes to SRC_URI |
221 |
+--dump-projects|-d outputs information about parsed projects (useful |
222 |
+ for debugging) |
223 |
--ebuild|-e <file> path to ebuild that should be created |
224 |
--generate-ebuild|-g generates ebuild from pom.xml |
225 |
--keywords|-k <keywords> arch keywords |