ArchiveManager.coffee 685 B

1234567891011121314151617181920212223
  1. child = require "child_process"
  2. logger = require "logger-sharelatex"
  3. metrics = require "../../infrastructure/Metrics"
  4. module.exports = ArchiveManager =
  5. extractZipArchive: (source, destination, callback = (err) ->) ->
  6. timer = new metrics.Timer("unzipDirectory")
  7. logger.log source: source, destination: destination, "unzipping file"
  8. unzip = child.spawn("unzip", [source, "-d", destination])
  9. error = null
  10. unzip.stderr.on "data", (chunk) ->
  11. error ||= ""
  12. error += chunk
  13. unzip.on "exit", () ->
  14. timer.done()
  15. if error?
  16. error = new Error(error)
  17. logger.error err:error, source: source, destination: destination, "error unzipping file"
  18. callback(error)