svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.installer / org.gvsig.desktop.installer.izpack / src / main / scripts / Helper.groovy @ 42794
History | View | Annotate | Download (10.7 KB)
1 |
|
---|---|
2 |
import WebDAVClient |
3 |
import java.io.File |
4 |
|
5 |
public class Helper { |
6 |
|
7 |
public ant = null |
8 |
|
9 |
private projectBaseFile = null |
10 |
private packageinfo = null |
11 |
private project = null |
12 |
private log = null |
13 |
|
14 |
public Helper(logger,project) {
|
15 |
this.project = project
|
16 |
log = logger |
17 |
//log.info("Helper(...)")
|
18 |
|
19 |
ant = new AntBuilder()
|
20 |
} |
21 |
|
22 |
def copyDirToDir(source, target) { |
23 |
//log.info("copyDirToDir "+source+","+target)
|
24 |
if( source instanceof File ) { |
25 |
source = source.getAbsolutePath() |
26 |
} |
27 |
if( target instanceof File ) { |
28 |
target = target.getAbsolutePath() |
29 |
} |
30 |
if( !target.endsWith("/") ) { |
31 |
target += "/"
|
32 |
} |
33 |
ant.copy( todir: target ) {
|
34 |
fileset( dir:source )
|
35 |
} |
36 |
} |
37 |
|
38 |
def moveDirToDir(source, target) { |
39 |
//log.info("moveDirToDir "+source+","+target)
|
40 |
if( source instanceof File ) { |
41 |
source = source.getAbsolutePath() |
42 |
} |
43 |
if( target instanceof File ) { |
44 |
target = target.getAbsolutePath() |
45 |
} |
46 |
if( !target.endsWith("/") ) { |
47 |
target += "/"
|
48 |
} |
49 |
ant.move( todir: target ) {
|
50 |
fileset( dir: source )
|
51 |
} |
52 |
} |
53 |
|
54 |
def copyFileToDir(source, target) { |
55 |
//log.info("copyFileToDir "+source+","+target)
|
56 |
if( source instanceof File ) { |
57 |
source = source.getAbsolutePath() |
58 |
} |
59 |
if( target instanceof File ) { |
60 |
target = target.getAbsolutePath() |
61 |
} |
62 |
if( !target.endsWith("/") ) { |
63 |
target += "/"
|
64 |
} |
65 |
ant.copy(file:source, todir:target) |
66 |
} |
67 |
|
68 |
def copyFileToFile(source, target) { |
69 |
//log.info("copyFileToFile "+source+","+target)
|
70 |
if( source instanceof File ) { |
71 |
source = source.getAbsolutePath() |
72 |
} |
73 |
if( target instanceof File ) { |
74 |
target = target.getAbsolutePath() |
75 |
} |
76 |
ant.copy(file:source, tofile:target) |
77 |
} |
78 |
|
79 |
def getProjectBaseFolder(Object[] args ) { |
80 |
if( projectBaseFile == null ) { |
81 |
projectBaseFile = project.basedir |
82 |
def f = new File(projectBaseFile,"/src/main/scripts/Helper.groovy") |
83 |
if( !f.exists() ) {
|
84 |
projectBaseFile = projectBaseFile.getParentFile() |
85 |
} |
86 |
} |
87 |
def f = projectBaseFile
|
88 |
args.each { |
89 |
f = new File(f,it) |
90 |
} |
91 |
return f
|
92 |
} |
93 |
|
94 |
def getProjectTargetFolder(Object[] args) { |
95 |
return getProjectBaseFolder("target", *args) |
96 |
} |
97 |
|
98 |
def getProductFolderPath() { |
99 |
return project.properties["gvsig.product.folder.path"] |
100 |
} |
101 |
|
102 |
def getInstallationFolder(Object[] args) { |
103 |
return getProjectBaseFolder("target", "product", "gvsig-desktop", *args) |
104 |
} |
105 |
|
106 |
def getVersionWithBuildNumber() { |
107 |
def ver = getPackageinfo().getProperty("version") |
108 |
if( ver.contains("-") ) { |
109 |
return ver
|
110 |
} else {
|
111 |
return ver +"-"+getPackageinfo().getProperty("buildNumber") |
112 |
} |
113 |
} |
114 |
|
115 |
def getVersionWithoutBuildNumber() { |
116 |
def ver = getPackageinfo().getProperty("version") |
117 |
if( ver.contains("-") ) { |
118 |
return ver.replaceFirst("-[0-9]*\$","") |
119 |
} else {
|
120 |
return ver
|
121 |
} |
122 |
} |
123 |
|
124 |
def createLauncher(source,target) { |
125 |
//log.info("Creating launcher ("+source+")...")
|
126 |
source = getProjectBasePath() + source |
127 |
target = getProjectBasePath() + target |
128 |
s = new File(source).text |
129 |
s = s.replaceAll("@@gvsig.product.folder.path@@", getInstallationFolder().getAbsolutePath())
|
130 |
s = s.replaceAll("@@org.gvsig.andami.updater.jar@@", getAndamiUpdaterJarName())
|
131 |
s = s.replaceAll("@@version@@", getVersionWithBuildNumber().replace("-",".")) |
132 |
new File(target).write(s) |
133 |
log.info("Created "+target)
|
134 |
ant.exec( command:"launch4jc "+ target ) |
135 |
log.info("Created launcher ("+target+").") |
136 |
} |
137 |
|
138 |
def getPackageinfo() { |
139 |
if( packageinfo == null ) { |
140 |
File file = getInstallationFolder("gvSIG","extensiones","org.gvsig.app.mainplugin","package.info") |
141 |
log.info("read package.info from "+file.getAbsolutePath())
|
142 |
def p = new Properties() |
143 |
p.load(file.newDataInputStream()) |
144 |
packageinfo = p |
145 |
project.properties["package.info.version"] = getVersionWithBuildNumber()
|
146 |
project.properties["package.info.buildNumber"] = p.getProperty("buildNumber") |
147 |
project.properties["package.info.state"] = p.getProperty("state") |
148 |
} |
149 |
return packageinfo
|
150 |
} |
151 |
|
152 |
def readPackageInfo() { |
153 |
getPackageinfo() |
154 |
} |
155 |
|
156 |
def getWebDAVClient(log) { |
157 |
def user
|
158 |
def password
|
159 |
if( project.properties["username"] == null ) { |
160 |
print("Enter user name: ");
|
161 |
user = System.console().readLine().toString()
|
162 |
if( user != "" ) { |
163 |
project.properties.setProperty("username",user);
|
164 |
} |
165 |
} |
166 |
if( project.properties["password"] == null ) { |
167 |
print("Enter password for user '" + project.properties["username"] + "': "); |
168 |
password = System.console().readPassword().toString()
|
169 |
if( password != "" ) { |
170 |
project.properties.setProperty("password",password);
|
171 |
} |
172 |
} |
173 |
def session = new WebDAVClient(log) |
174 |
if( project.properties["username"] == null || project.properties["password"] == null ) { |
175 |
log.info("[WEBDAV] creating non authenticated session.");
|
176 |
log.info("[WEBDAV] Use -Dusername=USER -Dpassword=PASSWORD to create a authenticated session.");
|
177 |
session.login(); |
178 |
} else {
|
179 |
session.login(project.properties["username"], project.properties["password"]); |
180 |
} |
181 |
return session
|
182 |
} |
183 |
|
184 |
def getAddOnRepoURL() { |
185 |
return "https://downloads.gvsig.org/download/gvsig-desktop-testing" + |
186 |
"/dists/" +
|
187 |
getVersionWithoutBuildNumber() + |
188 |
"/builds/" +
|
189 |
getPackageinfo().getProperty("buildNumber")
|
190 |
} |
191 |
|
192 |
def getInstallerName(suffix) { |
193 |
return "gvSIG-desktop-" + |
194 |
getVersionWithBuildNumber() + |
195 |
"-" +
|
196 |
getPackageinfo().getProperty("state") +
|
197 |
suffix |
198 |
} |
199 |
|
200 |
|
201 |
def download_jre() { |
202 |
jre_pkg_name = "gvSIG-desktop-2.1.0-jre_7_windows_i586-1.7.72-0-devel-win-x86-j1_7.gvspkg"
|
203 |
url = "http://downloads.gvsig.org/download/gvsig-desktop/pool/jre_7_windows_i586/" + jre_pkg_name
|
204 |
target = new File(getProjectTargetFolder() , jre_pkg_name).getAbsolutePath() |
205 |
jre_path = System.getenv()["jre_gvspkg_path"] |
206 |
if(! new File(target).exists() ) { |
207 |
if( jre_path!=null ) { |
208 |
if( jre_path.endsWith(".gvspkg") ) { |
209 |
source = jre_path |
210 |
} else {
|
211 |
source = jre_path + "/" + jre_pkg_name
|
212 |
} |
213 |
if (source.startsWith("~" + File.separator)) { |
214 |
source = System.getenv().get("HOME") + source.substring(1); |
215 |
} |
216 |
if( ! new File(source).exists() ) { |
217 |
log.info("jre specified in jre_path variable not found - "+source)
|
218 |
log.info("Downloading windows jre plugin")
|
219 |
ant.get(src: url, dest: target) |
220 |
} else {
|
221 |
log.info("Copy windows jre plugin")
|
222 |
copyFileToDir(source, getProjectTargetFolder()) |
223 |
|
224 |
} |
225 |
} else {
|
226 |
log.info("Downloading windows jre plugin")
|
227 |
ant.get(src: url, dest: target) |
228 |
} |
229 |
} else {
|
230 |
log.info("Skip download of jre, it exist in local filesystem.")
|
231 |
} |
232 |
} |
233 |
|
234 |
def getAndamiUpdaterJarName() { |
235 |
def org_gvsig_andami_updater_jar = new FileNameFinder().getFileNames( |
236 |
getInstallationFolder("lib").getAbsolutePath(),
|
237 |
'org.gvsig.andami.updater-*.jar'
|
238 |
)[0]
|
239 |
if( org_gvsig_andami_updater_jar == null ) { |
240 |
log.error("Can't find andami updater jar")
|
241 |
assert false |
242 |
} |
243 |
org_gvsig_andami_updater_jar = new File(org_gvsig_andami_updater_jar).getName() |
244 |
return org_gvsig_andami_updater_jar
|
245 |
} |
246 |
|
247 |
def copy_common_install_files(targetdir) { |
248 |
copyFileToDir(getProjectBaseFolder("src","main","izpack","addonmanager.html"),targetdir) |
249 |
copyFileToDir(getProjectBaseFolder("src","main","izpack","readme.html"),targetdir) |
250 |
copyFileToDir(getProjectBaseFolder("target","product","gvsig-desktop","LICENSE.txt"),targetdir) |
251 |
} |
252 |
|
253 |
def copy_extractpackages_jar(targetdir) { |
254 |
def org_gvsig_desktop_installer_izpack_extractpackages_jar = new FileNameFinder().getFileNames( |
255 |
getProjectBaseFolder("org.gvsig.desktop.installer.izpack.extractpackages","target").getAbsolutePath(), |
256 |
"org.gvsig.desktop.installer.izpack.extractpackages-*.jar",
|
257 |
"*-sources.jar"
|
258 |
)[0]
|
259 |
|
260 |
copyFileToFile( |
261 |
org_gvsig_desktop_installer_izpack_extractpackages_jar, |
262 |
new File(targetdir, "org.gvsig.desktop.installer.izpack.extractpackages.jar") |
263 |
) |
264 |
|
265 |
} |
266 |
|
267 |
def copy_copyjre_jar(targetdir) { |
268 |
def org_gvsig_desktop_installer_izpack_copyjre_jar = new FileNameFinder().getFileNames( |
269 |
getProjectBaseFolder("org.gvsig.desktop.installer.izpack.copyjre","target").getAbsolutePath(), |
270 |
"org.gvsig.desktop.installer.izpack.copyjre-*.jar",
|
271 |
"*-sources.jar"
|
272 |
)[0]
|
273 |
|
274 |
copyFileToFile( |
275 |
org_gvsig_desktop_installer_izpack_copyjre_jar, |
276 |
new File(targetdir, "org.gvsig.desktop.installer.izpack.copyjre.jar") |
277 |
) |
278 |
|
279 |
} |
280 |
|
281 |
def expand(s) { |
282 |
|
283 |
def t = "target/portable/gvSIG-desktop-"+this.getVersionWithoutBuildNumber() |
284 |
def install_path = new File(project.basedir, t).getAbsolutePath() |
285 |
s = s.replace("\${product.folder}",this.getInstallationFolder().getAbsolutePath()) |
286 |
s = s.replace("\${INSTALL_PATH}",install_path)
|
287 |
s = s.replace("\$INSTALL_PATH",install_path)
|
288 |
return s
|
289 |
} |
290 |
|
291 |
def prepare_portable() { |
292 |
|
293 |
def t = "target/portable/gvSIG-desktop-"+this.getVersionWithoutBuildNumber() |
294 |
def install_path = new File(project.basedir, t).getAbsoluteFile() |
295 |
install_path.mkdirs() |
296 |
|
297 |
def target = new File(project.basedir, "target") |
298 |
def installfile = new File(target,"install.xml") |
299 |
def install = new XmlSlurper().parse(installfile) |
300 |
install.packs.each { |
301 |
it.pack.each {
|
302 |
it.file.each {
|
303 |
def src = new File(expand(it.@src.text())) |
304 |
if( !src.isAbsolute() ) {
|
305 |
src = new File(target,src.getPath()) |
306 |
} |
307 |
def targetdir = expand(it.@targetdir.text()) |
308 |
this.copyFileToDir(src,targetdir)
|
309 |
} |
310 |
it.fileset.each {
|
311 |
def src = new File(expand(it.@dir.text())) |
312 |
if( !src.isAbsolute() ) {
|
313 |
src = new File(target,src.getPath()) |
314 |
} |
315 |
def targetdir = expand(it.@targetdir.text()) |
316 |
this.copyDirToDir(src,targetdir)
|
317 |
} |
318 |
it.executable.each {
|
319 |
def targetfile = new File(expand(it.@targetfile.text())) |
320 |
targetfile.setExecutable(true)
|
321 |
} |
322 |
} |
323 |
} |
324 |
|
325 |
this.copyDirToDir(
|
326 |
this.getInstallationFolder("gvSIG/extensiones/org.gvsig.coreplugin.app.mainplugin"), |
327 |
new File(install_path,"gvSIG/extensiones/org.gvsig.coreplugin.app.mainplugin") |
328 |
) |
329 |
this.copyDirToDir(
|
330 |
this.getInstallationFolder("gvSIG/extensiones/org.gvsig.installer.app.mainplugin"), |
331 |
new File(install_path,"gvSIG/extensiones/org.gvsig.installer.app.mainplugin") |
332 |
) |
333 |
} |
334 |
|
335 |
def pack_portable() { |
336 |
|
337 |
def t = "target/portable/gvSIG-desktop-"+this.getVersionWithoutBuildNumber() |
338 |
def install_path = new File(project.basedir, t).getAbsoluteFile() |
339 |
def target = new File(project.basedir, "target") |
340 |
|
341 |
def portablezip = new File(target,this.getInstallerName( |
342 |
"-" +
|
343 |
project.properties["installer_os"] +
|
344 |
"-" +
|
345 |
project.properties["installer_architecture"] +
|
346 |
"-online.zip"
|
347 |
)) |
348 |
|
349 |
this.ant.zip(
|
350 |
destfile: portablezip,
|
351 |
basedir: install_path
|
352 |
) |
353 |
} |
354 |
|
355 |
} |