diff --git a/lib/drive/drive.coffee b/lib/drive/drive.coffee index 05bd1ddd..74a6ab94 100644 --- a/lib/drive/drive.coffee +++ b/lib/drive/drive.coffee @@ -1,6 +1,18 @@ fs = require('fs') +eventStream = require('event-stream') progressStream = require('progress-stream') +blockAligner = (blockSize) -> + return eventStream.through (chunk) -> + size = chunk.length % blockSize + + if size isnt 0 + newChunk = new Buffer(chunk.length + (blockSize - size)) + chunk.copy(newChunk) + chunk = newChunk + + @emit('data', chunk) + exports.writeImage = (devicePath, imagePath, options = {}, callback = _.noop) -> if not fs.existsSync(imagePath) @@ -25,6 +37,7 @@ exports.writeImage = (devicePath, imagePath, options = {}, callback = _.noop) -> progress.on('progress', options.onProgress) imageFile + .pipe(blockAligner(512)) .pipe(progress) .pipe(deviceFile) diff --git a/package.json b/package.json index b801d2fb..7d8e7d73 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "capitano": "~1.3.0", "coffee-script": "~1.8.0", "conf.js": "^0.1.1", + "event-stream": "^3.2.1", "git-cli": "~0.8.2", "lodash": "~2.4.1", "lodash-contrib": "~241.4.14",