Ver Fonte

Fixed decompression

Andrew Chalkley há 9 anos atrás
pai
commit
3ee34a4833
5 ficheiros alterados com 33 adições e 37 exclusões
  1. 22 31
      back-end/prepare_binaries.js
  2. 5 2
      front-end/js/app.js
  3. 1 1
      front-end/js/port_select.js
  4. 2 1
      index.js
  5. 3 2
      package.json

+ 22 - 31
back-end/prepare_binaries.js

@@ -1,6 +1,7 @@
 "use strict";
+
 const request = require("request");
-const unzip = require("unzip");
+const decompress = require("decompress");
 const fs = require("fs");
 const EventEmitter = require("events");
 
@@ -19,36 +20,26 @@ function addBufferToBinary(flashSpecification, fileName, buffer) {
 function prepareBinaries(manifest, callback) {
     const eventEmitter = new EventEmitter();
     const flashContents = manifest.flash;
-    const downloadRequest = request(manifest.download)
-        .pipe(unzip.Parse())
-        .on('entry', (entry) => {
-            const fileName = entry.path;
-            if (isBinaryFileRequired(flashContents, fileName)) {
-                eventEmitter.emit("entry", {
-                    display: `Extracting ${fileName}`,
-                    stage: "start"
-                });
-
-                let body;
-                entry.on("data", function(data){
-                    if(body) {
-                        body = Buffer.concat([body, data]);
-                    } else {
-                        body = data;
-                    }
-                }).on("end", () => {
-                    eventEmitter.emit("entry", {
-                        display: `Extracted ${fileName}`,
-                        stage: "end"
-                    });
-                    addBufferToBinary(flashContents, fileName, body);
-                }).on("error", callback);
-            } else {
-                entry.autodrain();
-            }
-        }).on("close", () => {
-            callback(null, flashContents);
-        });
+    let body;
+    const downloadRequest = request(manifest.download).on("data", data => {
+        if(body) {
+            body = Buffer.concat([body, data]);
+        } else {
+            body = data;
+        }
+    }).on("complete", ()=>{
+        try {
+         decompress(body, {
+                 filter: file => isBinaryFileRequired(flashContents, file.path)
+            }).then(files => {
+                files.forEach(file => addBufferToBinary(flashContents, file.path, file.data)
+);
+                callback(null, flashContents);
+            }).catch(callback);
+        } catch(e){
+            alert(e.message);
+        }
+    }).on("error", error => eventEmitter.emit("entry", {display: error.message }));
     return eventEmitter;
 }
 

+ 5 - 2
front-end/js/app.js

@@ -314,8 +314,11 @@ function inputStateManager() {
 function start() {
     getManifests();
     serialScanner.scan();
-    setInterval(serialScanner.checkForChanges.bind(serialScanner), CONSTANTS.pollTime);
-    setInterval(inputStateManager, CONSTANTS.pollTime);
+
+    setInterval(() => {
+        serialScanner.checkForChanges();
+        inputStateManager();
+    }, CONSTANTS.pollTime);
 }
 
 /**

+ 1 - 1
front-end/js/port_select.js

@@ -58,7 +58,7 @@ class PortSelect {
      * Updates the disabled attribute on the SELECT element.
      * @param value
      */
-    set disabled (value) {
+    set disabled(value) {
         this.selectElement.disabled = value;
     }
 

+ 2 - 1
index.js

@@ -113,4 +113,5 @@ function handleSquirrelEvent() {
       app.quit();
       return true;
   }
-};
+}
+

+ 3 - 2
package.json

@@ -41,12 +41,12 @@
   "homepage": "https://github.com/thingsSDK/flasher.js#readme",
   "dependencies": {
     "bunyan": "^1.8.0",
+    "decompress": "^4.0.0",
     "electron-squirrel-startup": "^1.0.0",
     "node-binary": "^1.1.0",
     "request": "^2.72.0",
     "serialport": "^2.0.7-beta1",
-    "tar.gz": "^1.0.3",
-    "unzip": "^0.1.11"
+    "tar.gz": "^1.0.3"
   },
   "devDependencies": {
     "chai": "^3.5.0",
@@ -56,6 +56,7 @@
     "electron-prebuilt": "^0.36.9",
     "electron-rebuild": "^1.1.3",
     "electron-winstaller": "^2.2.0",
+    "jshint": "^2.9.2",
     "mocha": "^2.4.5"
   }
 }