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