Gentoo Archives: gentoo-commits

From: "Miroslav Šulc" <fordfrog@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/maven/, ...
Date: Wed, 05 Aug 2020 14:31:53
Message-Id: 1596600324.11678b72a491963a8bad6d65c84d6228a0e3ac5a.fordfrog@gentoo
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,