Skip to content

Instantly share code, notes, and snippets.

Embed
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 $file.name to ${timestamp}__$file.name"
file.renameTo("$file.parentFile.absolutePath$file.separator${timestamp}__$file.name")
// Sleep for a moment to avoid prefix conflicts when renaming multiple files
sleep(1*1000)
}
}
}
def isFilePrefixed(file) {
return (file.name ==~ '^\\d+__.*\\.sql\$')
}
@SlevinBE

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: https://gist.github.com/SlevinBE/7233913

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.