Mercurial > public > develkit
comparison init.gradle @ 174:e949e86b570e
add databaseDrop|Create tasks for managing environment psql databases
author | smith@nwoca.org |
---|---|
date | Wed, 17 Sep 2014 22:05:37 +0100 |
parents | 50db7a832af5 |
children | c3b7af90d1e4 |
comparison
equal
deleted
inserted
replaced
173:50db7a832af5 | 174:e949e86b570e |
---|---|
1 import groovy.sql.* | |
1 | 2 |
2 gradle.ext.ssdtDevelkitLocation = gradle.ext.has('ssdtDevelkitLocation') ? gradle.ssdtDevelkitLocation : 'http://hg.ssdt-ohio.org/browse/public/develkit' | 3 gradle.ext.ssdtDevelkitLocation = gradle.ext.has('ssdtDevelkitLocation') ? gradle.ssdtDevelkitLocation : 'http://hg.ssdt-ohio.org/browse/public/develkit' |
3 | 4 |
4 ant.property(file: System.getProperty('user.home') + "/.ssdt/private.properties") | 5 ant.property(file: System.getProperty('user.home') + "/.ssdt/private.properties") |
5 gradle.ext.ivyUserDir = ant.properties['ivy.default.ivy.user.dir'] ?: System.getProperty('user.home') + "/.ivy2" | 6 gradle.ext.ivyUserDir = ant.properties['ivy.default.ivy.user.dir'] ?: System.getProperty('user.home') + "/.ivy2" |
238 } | 239 } |
239 } | 240 } |
240 } | 241 } |
241 } | 242 } |
242 | 243 |
244 if (gradle.hasProperty('environmentDatabase')) { | |
245 tasks.addRule("Pattern: database{Drop|Create}...: drops or creates the environment's database") { String taskName -> | |
246 if(taskName.startsWith('database') && (taskName.contains('Drop') || taskName.contains('Create')) ) { | |
247 task(taskName) { | |
248 doLast { | |
249 def dropIt = taskName.contains("Drop") | |
250 def createIt = taskName.contains("Create") | |
251 def driverName = gradle.environmentDatabase.jdbc.driverClassName | |
252 def databaseUrl = gradle.environmentDatabase.jdbc.url | |
253 if (driverName != "org.postgresql.Driver") { | |
254 logger.info "skipping database operation for non-postgresql driver" | |
255 throw new StopActionException("driver $driverName not supported by $taskName") | |
256 } | |
257 if (!configurations.hasProperty('jdbcdriver')) { | |
258 throw new GradleException("databaseDrop requires a 'jdbcdriver' configuration with a postgresql (or other) driver" ) | |
259 } | |
260 configurations.jdbcdriver.each {File file -> | |
261 GroovyObject.class.classLoader.addURL(file.toURL()) | |
262 } | |
263 Class.forName(driverName) | |
264 def url = new URI(databaseUrl.substring(5)) | |
265 def jdbcBaseUrl = databaseUrl - url.path | |
266 def databaseName = url.path - "/" | |
267 def adminUrl = jdbcBaseUrl + "/postgres" | |
268 def sql = Sql.newInstance(adminUrl, | |
269 gradle.environmentDatabase.jdbc.username, | |
270 gradle.environmentDatabase.jdbc.password, | |
271 driverName) | |
272 if (dropIt) { | |
273 logger.info "dropping $databaseName (if exists) from $adminUrl" | |
274 sql.execute 'DROP DATABASE IF EXISTS "' + databaseName + '";' | |
275 } | |
276 | |
277 if (createIt) { | |
278 logger.info "Creating database $databaseName at $adminUrl" | |
279 sql.execute 'CREATE DATABASE "' + databaseName + '";' | |
280 } | |
281 } | |
282 } | |
283 | |
284 } | |
285 } | |
286 } | |
243 | 287 |
244 } | 288 } |
245 | 289 |
246 | 290 |
247 class ArtifactoryGradleSettings extends BuildAdapter implements BuildListener { | 291 class ArtifactoryGradleSettings extends BuildAdapter implements BuildListener { |