... abych neuvedl nějaký užitečnější příklad. Tak například kolega si postahoval spoustu dokumentů z CVS. Nicméně když to dělal, tak mu ještě nebyl přidělen CVS account. Nyní už ho má, tak jak to zařídit, aby nemusel dokumenty stahovat znova a přitom komitoval změny již pod svojí identitou? Jednoduše napsat skript, co zamění uživatelské jméno v connection stringu v CVS/Root souborech. Skript níže používá jak RE, tak práci se soubory a rovněž ukazuje integraci s externímy programy (omlouvám se, ale momentálně s Windows)
První parametr je cesta k root adresáři s CVS obsahem, druhý pak nové uživatelské jméno.
new File(args[0]).eachFileRecurse { f ->
if (f.parentFile.name.equals('CVS') && f.name.equals('Root')) {
def m = f.readLines()[0] =~ '(:pserver:)(.+)(@.+)'
if (m) {
println "Modyfying ${f.path}"
def tmp = new File("${f.path}.tmp")
def out = tmp.newPrintWriter()
out.println("${m[0][1]}${args[1]}${m[0][3]}")
out.close()
"cmd /c move /Y ${tmp.path} ${f.path}".execute()
}
}
}