Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rbramwell/56c4e2ea04bfca6c91edc9423c2ad697 to your computer and use it in GitHub Desktop.
Save rbramwell/56c4e2ea04bfca6c91edc9423c2ad697 to your computer and use it in GitHub Desktop.
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\$')
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment