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; iEsse 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.