Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
A Groovy task that prefixes new SQL migration files with a timestamp precise to milliseconds. The following usage will add a prefix to any SQL file in a hardcoded directory that does not begin with an number and double leading underscore: $ gradle prefixNewMigrations
task prefixNewMigrations {
fileTree(dir: 'dev/src/db/listhub').exclude({ isFilePrefixed(it.file) }).each { file ->
doLast {
def timestamp = new Date().format('yyyyMMddHHmmssSSS', TimeZone.getTimeZone('GMT'))
println "Renaming $ to ${timestamp}__$"
// Sleep for a moment to avoid prefix conflicts when renaming multiple files
def isFilePrefixed(file) {
return ( ==~ '^\\d+__.*\\.sql\$')

This comment has been minimized.

Copy link

SlevinBE commented Oct 30, 2013

Thanks for sharing this!
I had to do something similar, but I had to plug it into a maven build, so I could only use pure Groovy. You can find this Gist here:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.