1 |
commit: 11678b72a491963a8bad6d65c84d6228a0e3ac5a |
2 |
Author: zongyu <zzy2529420793 <AT> gmail <DOT> com> |
3 |
AuthorDate: Tue Aug 4 07:10:01 2020 +0000 |
4 |
Commit: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Aug 5 04:05:24 2020 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=11678b72 |
7 |
|
8 |
sort KEYWORDS |
9 |
|
10 |
Signed-off-by: zongyu <zzy2529420793 <AT> gmail.com> |
11 |
|
12 |
src/main/java/org/gentoo/java/ebuilder/Config.java | 32 ++++++++++++++++---- |
13 |
src/main/java/org/gentoo/java/ebuilder/Main.java | 2 +- |
14 |
.../gentoo/java/ebuilder/maven/MavenProject.java | 2 +- |
15 |
.../java/ebuilder/portage/KeywordComparator.java | 35 ++++++++++++++++++++++ |
16 |
src/main/resources/usage.txt | 2 +- |
17 |
5 files changed, 64 insertions(+), 9 deletions(-) |
18 |
|
19 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/Config.java b/src/main/java/org/gentoo/java/ebuilder/Config.java |
20 |
index dbfa30b..4502ab3 100644 |
21 |
--- a/src/main/java/org/gentoo/java/ebuilder/Config.java |
22 |
+++ b/src/main/java/org/gentoo/java/ebuilder/Config.java |
23 |
@@ -7,7 +7,10 @@ import java.nio.file.Paths; |
24 |
import java.util.ArrayList; |
25 |
import java.util.Collections; |
26 |
import java.util.List; |
27 |
+import java.util.SortedSet; |
28 |
+import java.util.TreeSet; |
29 |
import org.gentoo.java.ebuilder.maven.JavaVersion; |
30 |
+import org.gentoo.java.ebuilder.portage.KeywordComparator; |
31 |
|
32 |
/** |
33 |
* Container for command line configuration. |
34 |
@@ -73,7 +76,7 @@ public class Config { |
35 |
/** |
36 |
* Arch keywords. |
37 |
*/ |
38 |
- private String keywords; |
39 |
+ private SortedSet<String> keywords = new TreeSet<>(new KeywordComparator()); |
40 |
/** |
41 |
* License name. |
42 |
*/ |
43 |
@@ -301,16 +304,33 @@ public class Config { |
44 |
* @return {@link #keywords} |
45 |
*/ |
46 |
public String getKeywords() { |
47 |
- return keywords; |
48 |
+ return String.join(" ", keywords); |
49 |
} |
50 |
|
51 |
/** |
52 |
- * Setter for {@link #keywords}. |
53 |
+ * add keyword to {@link #keywords}. |
54 |
* |
55 |
- * @param keywords {@link #keywords} |
56 |
+ * @param keyword String that contains one or more keywords |
57 |
*/ |
58 |
- public void setKeywords(final String keywords) { |
59 |
- this.keywords = keywords; |
60 |
+ public void addKeywords(final String keywords) { |
61 |
+ String[] parts = keywords.split(" "); |
62 |
+ |
63 |
+ /** |
64 |
+ * Make "-amd64" replace "amd64 ~amd64" |
65 |
+ * Make "amd64" replace "~amd64" |
66 |
+ */ |
67 |
+ for (String part : parts) { |
68 |
+ if (part.startsWith("-")) { |
69 |
+ this.keywords.remove(part.substring(1)); |
70 |
+ this.keywords.remove("~" + part.substring(1)); |
71 |
+ this.keywords.add(part); |
72 |
+ } else if (part.startsWith("~")) { |
73 |
+ this.keywords.add(part); |
74 |
+ } else { |
75 |
+ this.keywords.remove("~" + part); |
76 |
+ this.keywords.add(part); |
77 |
+ } |
78 |
+ } |
79 |
} |
80 |
|
81 |
/** |
82 |
|
83 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/Main.java b/src/main/java/org/gentoo/java/ebuilder/Main.java |
84 |
index 49f6a49..999f741 100644 |
85 |
--- a/src/main/java/org/gentoo/java/ebuilder/Main.java |
86 |
+++ b/src/main/java/org/gentoo/java/ebuilder/Main.java |
87 |
@@ -262,7 +262,7 @@ public class Main { |
88 |
case "--keywords": |
89 |
case "-k": |
90 |
i++; |
91 |
- config.setKeywords(args[i]); |
92 |
+ config.addKeywords(args[i]); |
93 |
break; |
94 |
case "--license": |
95 |
case "-l": |
96 |
|
97 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java |
98 |
index e1016a8..51ec844 100644 |
99 |
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java |
100 |
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java |
101 |
@@ -46,7 +46,7 @@ public class MavenProject { |
102 |
/** |
103 |
* Lisences. |
104 |
*/ |
105 |
- private SortedSet<String> licenses = new TreeSet<>(10); |
106 |
+ private SortedSet<String> licenses = new TreeSet<>(); |
107 |
/** |
108 |
* Homepage URL. |
109 |
*/ |
110 |
|
111 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/KeywordComparator.java b/src/main/java/org/gentoo/java/ebuilder/portage/KeywordComparator.java |
112 |
new file mode 100644 |
113 |
index 0000000..4382cf4 |
114 |
--- /dev/null |
115 |
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/KeywordComparator.java |
116 |
@@ -0,0 +1,35 @@ |
117 |
+package org.gentoo.java.ebuilder.portage; |
118 |
+ |
119 |
+import java.util.Comparator; |
120 |
+ |
121 |
+/** |
122 |
+ * a comparator to sort keywords |
123 |
+ * |
124 |
+ * @author Zhang Zongyu |
125 |
+ */ |
126 |
+public class KeywordComparator implements Comparator<String> { |
127 |
+ |
128 |
+ /** |
129 |
+ * it is designed to compare KEYWORDS as what repoman will do: |
130 |
+ * 1) "-amd64", "amd64" and "~amd64" are the same -- they will |
131 |
+ * not appear at the same time in a TreeSet; |
132 |
+ * 2) After splitting the strings into two parts by "-", it will |
133 |
+ * compare the suffixes before it compares the prefixes. |
134 |
+ */ |
135 |
+ @Override |
136 |
+ public int compare(String o1, String o2) { |
137 |
+ // prepend "-0-" to make sure the length of the array is 2 |
138 |
+ final String[] trimmedO1 = (o1 + "-0-"). |
139 |
+ replaceAll("^[-~]", ""). |
140 |
+ split("-", 2); |
141 |
+ final String[] trimmedO2 = (o2 + "-0-"). |
142 |
+ replaceAll("^[-~]", ""). |
143 |
+ split("-", 2); |
144 |
+ |
145 |
+ if (trimmedO1[1].compareTo(trimmedO2[1]) == 0) { |
146 |
+ return trimmedO1[0].compareTo(trimmedO2[0]); |
147 |
+ } else { |
148 |
+ return trimmedO1[1].compareTo(trimmedO2[1]); |
149 |
+ } |
150 |
+ } |
151 |
+} |
152 |
|
153 |
diff --git a/src/main/resources/usage.txt b/src/main/resources/usage.txt |
154 |
index 1ceceeb..e48e3f9 100644 |
155 |
--- a/src/main/resources/usage.txt |
156 |
+++ b/src/main/resources/usage.txt |
157 |
@@ -10,7 +10,7 @@ Generating ebuild: |
158 |
--force-min-java-version <version> force minimum JDK/JRE version in dependencies |
159 |
--from-maven-central make java-ebuilder inherit java-pkg-maven.eclass |
160 |
--generate-ebuild|-g generates ebuild from pom.xml |
161 |
---keywords|-k <keywords> arch keywords |
162 |
+--keywords|-k <keywords> arch keywords (can be specified multiple times) |
163 |
--license|-l <license> license name, if it is not specified, |
164 |
java-ebuilder will determine LICENSE from pom.xml |
165 |
--pom|-p <file> path to pom.xml that should be parsed, |