PageRenderTime 63ms CodeModel.GetById 35ms RepoModel.GetById 1ms app.codeStats 0ms

/src/main/groovy/Test.groovy

https://bitbucket.org/nrg/download-packager
Groovy | 80 lines | 52 code | 14 blank | 14 comment | 1 complexity | 179d6d20d53e38f13be5f695e99addb0 MD5 | raw file
  1. /*
  2. * Test.groovy
  3. * Copyright (c) 2043. Washington University School of Medicine
  4. * All Rights Reserved
  5. *
  6. * Released under the Simplified BSD License
  7. */
  8. /**
  9. * Test
  10. *
  11. * @author rherri04
  12. * @since 4/3/43
  13. */
  14. import groovy.json.JsonBuilder
  15. import java.security.MessageDigest
  16. InputStream.metaClass.eachByte = { int len, Closure c ->
  17. def read
  18. byte[] buffer = new byte[len]
  19. while ((read = delegate.read(buffer)) > 0) {
  20. c(buffer, read)
  21. }
  22. }
  23. File.metaClass.md5 = {->
  24. def digest = MessageDigest.getInstance("MD5")
  25. delegate.withInputStream() { is ->
  26. is.eachByte(8192) { buffer, bytesRead ->
  27. digest.update(buffer, 0, bytesRead)
  28. }
  29. }
  30. new BigInteger(1, digest.digest()).toString(16).padLeft(32, '0')
  31. }
  32. def ant = new AntBuilder()
  33. ant.fileset(id: "core", dir: "src/test") {
  34. include(name:"**/*.groovy")
  35. }
  36. // lets create a scanner of filesets
  37. def files = []
  38. def scanner = ant.fileScanner {
  39. fileset(refid: "core")
  40. }
  41. scanner.each { f ->
  42. println("Found file $f")
  43. assert f instanceof File
  44. assert f.name.endsWith(".groovy")
  45. files.add([Name: "${f.name}", URI: "${f.toURI()}", Size: "${f.length()}", Checksum: "${f.md5()}"])
  46. }
  47. def manifest = new JsonBuilder()
  48. manifest.DownloadManifest() {
  49. Version('1.0.20130214')
  50. Files(files.collect {
  51. [Name: it.Name, URI: it.URI, Size: it.Size, Checksum: it.Checksum]
  52. })
  53. }
  54. def file = File.createTempFile("manifest", ".json")
  55. def writer = new FileWriter(file)
  56. manifest.writeTo(writer)
  57. writer.close()
  58. println "Everything persisted to ${file.absolutePath}"
  59. ant.fileset(id: "manifest", dir: file.parent) {
  60. include(name: file.name)
  61. }
  62. def filesets = ["core", "manifest"]
  63. def result = ant.zip(destfile: "src/test/test.zip") {
  64. filesets.each { fileset(refid: it) }
  65. }
  66. println "File completed and stred at ${result.destFile}, stored a total of ${result.destFile.length()} bytes"