1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.shared.release.config;
20
21 import java.util.Arrays;
22 import java.util.Iterator;
23 import java.util.Map.Entry;
24 import java.util.Properties;
25 import java.util.Set;
26
27 import org.apache.maven.shared.release.config.ReleaseDescriptorBuilder.BuilderReleaseDescriptor;
28 import org.apache.maven.shared.release.scm.IdentifiedScm;
29
30
31
32
33
34
35 public class ReleaseUtils {
36 private static final String DEVELOPMENT_KEY = "dev";
37
38 private static final String RELEASE_KEY = "rel";
39
40 private ReleaseUtils() {
41
42 }
43
44
45
46
47
48
49
50 public static BuilderReleaseDescriptor buildReleaseDescriptor(ReleaseDescriptorBuilder builder) {
51 return builder.build();
52 }
53
54
55
56
57
58
59
60 public static void copyPropertiesToReleaseDescriptor(Properties properties, ReleaseDescriptorBuilder builder) {
61 if (properties.containsKey("completedPhase")) {
62 builder.setCompletedPhase(properties.getProperty("completedPhase"));
63 }
64 if (properties.containsKey("commitByProject")) {
65 builder.setCommitByProject(Boolean.parseBoolean(properties.getProperty("commitByProject")));
66 }
67 if (properties.containsKey("scm.id")) {
68 builder.setScmId(properties.getProperty("scm.id"));
69 }
70 if (properties.containsKey("scm.url")) {
71 builder.setScmSourceUrl(properties.getProperty("scm.url"));
72 }
73 if (properties.containsKey("scm.username")) {
74 builder.setScmUsername(properties.getProperty("scm.username"));
75 }
76 if (properties.containsKey("scm.password")) {
77 builder.setScmPassword(properties.getProperty("scm.password"));
78 }
79 if (properties.containsKey("scm.privateKey")) {
80 builder.setScmPrivateKey(properties.getProperty("scm.privateKey"));
81 }
82 if (properties.containsKey("scm.passphrase")) {
83 builder.setScmPrivateKeyPassPhrase(properties.getProperty("scm.passphrase"));
84 }
85 if (properties.containsKey("scm.tagBase")) {
86 builder.setScmTagBase(properties.getProperty("scm.tagBase"));
87 }
88 if (properties.containsKey("scm.tagNameFormat")) {
89 builder.setScmTagNameFormat(properties.getProperty("scm.tagNameFormat"));
90 }
91 if (properties.containsKey("scm.branchBase")) {
92 builder.setScmBranchBase(properties.getProperty("scm.branchBase"));
93 }
94 if (properties.containsKey("scm.tag")) {
95 builder.setScmReleaseLabel(properties.getProperty("scm.tag"));
96 }
97 if (properties.containsKey("scm.commentPrefix")) {
98 builder.setScmCommentPrefix(properties.getProperty("scm.commentPrefix"));
99 }
100 if (properties.containsKey("scm.developmentCommitComment")) {
101 builder.setScmDevelopmentCommitComment(properties.getProperty("scm.developmentCommitComment"));
102 }
103 if (properties.containsKey("scm.releaseCommitComment")) {
104 builder.setScmReleaseCommitComment(properties.getProperty("scm.releaseCommitComment"));
105 }
106 if (properties.containsKey("scm.branchCommitComment")) {
107 builder.setScmBranchCommitComment(properties.getProperty("scm.branchCommitComment"));
108 }
109 if (properties.containsKey("scm.rollbackCommitComment")) {
110 builder.setScmRollbackCommitComment(properties.getProperty("scm.rollbackCommitComment"));
111 }
112 if (properties.containsKey("exec.additionalArguments")) {
113 builder.setAdditionalArguments(properties.getProperty("exec.additionalArguments"));
114 }
115 if (properties.containsKey("exec.pomFileName")) {
116 builder.setPomFileName(properties.getProperty("exec.pomFileName"));
117 }
118 if (properties.containsKey("exec.activateProfiles")) {
119 builder.setActivateProfiles(Arrays.asList(
120 properties.getProperty("exec.activateProfiles").split(",")));
121 }
122 if (properties.containsKey("preparationGoals")) {
123 builder.setPreparationGoals(properties.getProperty("preparationGoals"));
124 }
125 if (properties.containsKey("completionGoals")) {
126 builder.setCompletionGoals(properties.getProperty("completionGoals"));
127 }
128 if (properties.containsKey("projectVersionPolicyId")) {
129 builder.setProjectVersionPolicyId(properties.getProperty("projectVersionPolicyId"));
130 }
131 if (properties.containsKey("projectVersionPolicyConfig")) {
132 builder.setProjectVersionPolicyConfig(properties.getProperty("projectVersionPolicyConfig"));
133 }
134 if (properties.containsKey("projectNamingPolicyId")) {
135 builder.setProjectNamingPolicyId(properties.getProperty("projectNamingPolicyId"));
136 }
137 if (properties.containsKey("releaseStrategyId")) {
138 builder.setReleaseStrategyId(properties.getProperty("releaseStrategyId"));
139 }
140 if (properties.containsKey("exec.snapshotReleasePluginAllowed")) {
141 String snapshotReleasePluginAllowedStr = properties.getProperty("exec.snapshotReleasePluginAllowed");
142 builder.setSnapshotReleasePluginAllowed(Boolean.parseBoolean(snapshotReleasePluginAllowedStr));
143 }
144 if (properties.containsKey("remoteTagging")) {
145 String remoteTaggingStr = properties.getProperty("remoteTagging");
146 builder.setRemoteTagging(Boolean.parseBoolean(remoteTaggingStr));
147 }
148 if (properties.containsKey("pinExternals")) {
149 String pinExternals = properties.getProperty("pinExternals");
150 builder.setPinExternals(Boolean.parseBoolean(pinExternals));
151 }
152 if (properties.containsKey("pushChanges")) {
153 String pushChanges = properties.getProperty("pushChanges");
154 builder.setPushChanges(Boolean.parseBoolean(pushChanges));
155 }
156 if (properties.containsKey("workItem")) {
157 builder.setWorkItem(properties.getProperty("workItem"));
158 }
159 if (properties.containsKey("autoResolveSnapshots")) {
160 String resolve = properties.getProperty("autoResolveSnapshots");
161 builder.setAutoResolveSnapshots(resolve);
162 }
163
164 loadResolvedDependencies(properties, builder);
165
166
167
168 for (Object o : properties.keySet()) {
169 String property = (String) o;
170 if (property.startsWith("project.rel.")) {
171 builder.addReleaseVersion(
172 property.substring("project.rel.".length()), properties.getProperty(property));
173 } else if (property.startsWith("project.dev.")) {
174 builder.addDevelopmentVersion(
175 property.substring("project.dev.".length()), properties.getProperty(property));
176 } else if (property.startsWith("dependency.rel.")) {
177 builder.addDependencyReleaseVersion(
178 property.substring("dependency.rel.".length()), properties.getProperty(property));
179 } else if (property.startsWith("dependency.dev.")) {
180 builder.addDependencyDevelopmentVersion(
181 property.substring("dependency.dev.".length()), properties.getProperty(property));
182 } else if (property.startsWith("project.scm.")) {
183 int index = property.lastIndexOf('.');
184 if (index > "project.scm.".length()) {
185 String key = property.substring("project.scm.".length(), index);
186
187 if (builder.build().getOriginalScmInfo(key) == null) {
188 if (properties.getProperty("project.scm." + key + ".empty") != null) {
189 builder.addOriginalScmInfo(key, null);
190 } else {
191 IdentifiedScm scm = new IdentifiedScm();
192 scm.setConnection(properties.getProperty("project.scm." + key + ".connection"));
193 scm.setDeveloperConnection(
194 properties.getProperty("project.scm." + key + ".developerConnection"));
195 scm.setUrl(properties.getProperty("project.scm." + key + ".url"));
196 scm.setTag(properties.getProperty("project.scm." + key + ".tag"));
197 scm.setId(properties.getProperty("project.scm." + key + ".id"));
198
199 builder.addOriginalScmInfo(key, scm);
200 }
201 }
202 }
203 }
204 }
205 }
206
207 private static void loadResolvedDependencies(Properties prop, ReleaseDescriptorBuilder builder) {
208 Set entries = prop.entrySet();
209 Iterator<Entry<String, String>> iterator = entries.iterator();
210 String propertyName;
211 Entry<String, String> currentEntry;
212
213 while (iterator.hasNext()) {
214 currentEntry = iterator.next();
215 propertyName = currentEntry.getKey();
216
217 if (propertyName.startsWith("dependency.")) {
218 String artifactVersionlessKey;
219 int startIndex = "dependency.".length();
220 int endIndex;
221 String versionType;
222
223 if (propertyName.contains(".development")) {
224 endIndex = propertyName.lastIndexOf(".development");
225 versionType = DEVELOPMENT_KEY;
226 } else if (propertyName.contains(".release")) {
227 endIndex = propertyName.lastIndexOf(".release");
228 versionType = RELEASE_KEY;
229 } else {
230
231 continue;
232 }
233
234 artifactVersionlessKey = propertyName.substring(startIndex, endIndex);
235
236 if (RELEASE_KEY.equals(versionType)) {
237 builder.addDependencyReleaseVersion(artifactVersionlessKey, currentEntry.getValue());
238 } else if (DEVELOPMENT_KEY.equals(versionType)) {
239 builder.addDependencyDevelopmentVersion(artifactVersionlessKey, currentEntry.getValue());
240 }
241 }
242 }
243 }
244 }