Czy groovy jest faktycznie taki boski
Na moje zdanie po kodowaniu ileś tam czasu w javie to nie czuję że tak jest.
Gdy napisałem te parę linijek nie czuję tej zajebistości a raczej mętlik. Zamiast wsparcia IDE to trzeba się domyślać jaką funkcję lub zajebistość można użyć. Pewnie przy napisaniu 1000 skryptu to już wchodzi w nawyk
Dziwactwo straszne dziwactwo
Wynalazki które szybko napisać ale cholera wie co robią
Extraktowanie zip-a aby sprawdzić zawartość pliku
W tym przypadku wykorzystane do sprawdzenia zmiennych w META-INF/context.xml
W moim wypadku w META-INF/context.xml są zapisane zmienne
<Context path="/ap-kolce-adm" ...
<Resource...
username="${ap-kolce-adm.auth.db.user}" ...
password="${ap-kolce-adm.auth.db.pass}"
Aby je wylistować można wykorzystać skrypt poniżej
Wywołanie przy założenie że groovy jest w path a ContextParser.groovy oraz ap-mzwi-adm.war są w bieżącym katalogu:
groovy ContextParser.groovy ap-mzwi-adm.war
Zawartość ContextParser.groovy
def file = args[0]
println "file:" + file
def zipFile = new java.util.zip.ZipFile(new File(file))
zipFile.entries().findAll { !it.directory }.each {
def f = String.valueOf(it)
if (f.startsWith("META-INF/context.xml")) {
def str = zipFile.getInputStream(it).text
def set1 = new TreeSet()
try {
str.eachLine { line ->
def matcher = (line =~/\$\{([^\}]+)\}/)
while (matcher.find()) {
def key = matcher.group(1)
set1.add(key)
}
}
} catch (IOException e) {
e.printStackTrace();
}
set1.each { i1 -> println "$i1" }
}
}
Wypluty rezultat
ap-mzwi-adm.amqbroker.url
ap-mzwi-adm.db.ip
ap-mzwi-adm.db.pass
ap-mzwi-adm.db.user
ap-mzwi-adm.esb.http.url
ap-mzwi-adm.ws-broker-server-sikch-auth.url
as400.address_base
as400.login_base
as400.pass_base
mgr.service.url