Scripts Groovy
Hoje vim compartilhar alguns scripts Groovy. Vou postar 3 scripts sendo que um é muito simples mas tem o seu valor e os outros dois tem mais utilidade prática, todos servem para que o leitor possa aprender mais sobre Groovy.
Atualmente se tenho que fazer um script para fazer alguma coisa eu não penso duas vezes e uso Groovy, por que é simples, fácil e o código fica limpo e claro.
Os scripts são esses:
O primeiro Script o toJSlash.groovy normaliza as barras, sabendo que as barras do windows são "\" e as do Java e Linux "/" então esse scriptzinho faz essa conversão:
Então o args[0] é o primeiro parâmetro que é passado ao Groovy quando você executa esse código. Perceba que você não precisa criar um método main e declarar String []args, por que o Groovy já faz isso pra você.
Eu uso isso direto no windows para fazer replace de coisas que copio e colo. Esse script é muito simples mas em Java já ia dar mais código e seria mais chato de fazer :)
Atualmente se tenho que fazer um script para fazer alguma coisa eu não penso duas vezes e uso Groovy, por que é simples, fácil e o código fica limpo e claro.
Os scripts são esses:
- wcSvnCls.groovy
- pomDepReader.groovy
- toJSlash.groovy
O primeiro Script o toJSlash.groovy normaliza as barras, sabendo que as barras do windows são "\" e as do Java e Linux "/" então esse scriptzinho faz essa conversão:
/**
* Script Groovy que faz a conversao das barras do windows para as barras do java/linux
* Esse script eh util para que vc faz essa conversao sem esforco no windows.
*
* @autor Diego Pacheco
* @since 05/05/2009
* @version 1.o
*
*/
println args[0].replace("\\","/")
Então o args[0] é o primeiro parâmetro que é passado ao Groovy quando você executa esse código. Perceba que você não precisa criar um método main e declarar String []args, por que o Groovy já faz isso pra você.
Eu uso isso direto no windows para fazer replace de coisas que copio e colo. Esse script é muito simples mas em Java já ia dar mais código e seria mais chato de fazer :)
/**
* Script Groovy que deleta recursivamente todos os diretórios .svn de um working copy.
* Esse script eh util para caso voce queira limpar o seu working copy para criar um novo repositorio soh
* com o co nteudo do working copy ignorando o historico do svn.
*
* @autor Diego Pacheco
* @since 05/05/2009
* @version 1.o
*
*/
def dirDigger
dirDigger = { path ->
new File(path.toString()).eachDir{ f ->
dirDigger f.toString()
}
if (path.toString().contains(".svn")) {
println "deletando: $path"
deleteDir(new File(path.toString()))
}
}
boolean deleteDir(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i=0; i
Esse script já mais trabalhado e tem bastante utilidade. Bom não sei se vocês já fizeram migrações no svn mas manter históricos é uma dor de cabeça e as vezes temos repositórios velhos ou que não queremos manter mais o histórico então dessa forma a coisa mais simples a se fazer e limpar uma working copy deletando todas as pastas .svn e commitando isso no novo repositório.
Semana passada eu fiz isso direto. Então o script a cima faz essa tarefa para nos. O legal desse script é um closure recursivo para varrer o sistema de arquivos a procura das pastas do SVN.
Por fim o terceiro script serve para quem trabalha com maven, esse script lista todas as dependências de um pom sem vc ter que abrir o arquivo isso poupa tempo quando você esta pelo Linux navegando na pasta .m2 ou em algum repositório do archiva.
/**
* Script Groovy que le as dependencias de um pom atraves da api de xml e xmlns do Groovy.
* Esse script eh util para caso voce queira listar as dependencias de um pom. Quando vc estah conectado
* de forma remota no linux e nao queren abrir arquivo por arquivo no vim.
*
* @autor Diego Pacheco
* @since 05/05/2009
* @version 1.o
*
*/
def ns = new groovy.xml.Namespace("http://maven.apache.org/POM/4.0.0", 'ns')
def root = new XmlParser().parseText(new File(args[0]).text)
def finder = { nodo ->
def lista = new ArrayList()
nodo.each{
lista << (it.toString().substring(it.toString().indexOf("value=[") + 7,it.toString().length()).replace("]]",""))
}
return lista
}
def listG = finder(root[ns.dependencies][ns.dependency][ns.groupId]);
def listA = finder(root[ns.dependencies][ns.dependency][ns.artifactId]);
def listV = finder(root[ns.dependencies][ns.dependency][ns.version]);
def count = 0;
println "Dependencias desse pom:\n";
listG.each{
println "groupId: " + listG.get(count).padRight(50) + " artifactId: " + listA.get(count).padRight(50) + " version: " + listV.get(count);
count++;
}
Esse script é bem trabalhado. Eu usei a API de xml do Groovy, eu primeiro pego o schema do Pom do Groovy e depois faço o parse do xml usando esse ns. Depois existe um closure generico que le o grupo, identificador e versão do artefato do maven. Isso tudo é armazenado em listas que são mostradas no fimal.
Até o fim da semana vou disponibilizar esses scripts no meu repositório do Subversion e vou começar a adicionar mais scripts lá.
Abraços.