From a51c82296310cc7d739d8347d14bf47b60e72b0f Mon Sep 17 00:00:00 2001 From: Jeremy Bondeson Date: Wed, 1 Nov 2017 22:35:15 -0600 Subject: [PATCH] Cache the .json file as well (1st step for load old) --- src/kii/store.cljs | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/kii/store.cljs b/src/kii/store.cljs index 91899f6..38b5b3f 100644 --- a/src/kii/store.cljs +++ b/src/kii/store.cljs @@ -7,31 +7,34 @@ [kii.bindings.node.fs :as fs] [kii.bindings.node.path :as path] [kii.bindings.electron-renderer :refer [user-data-dir]] - )) + [cuerdas.core :as str])) (def bin-file "kiibohd.dfu.bin") (def cache-dir "firmware-cache") -;; TODO - Parse Filename (defn cache-firmware [zip-file] (let [c (chan)] (go (try - (let [out-dir (path/join user-data-dir cache-dir (-> zip-file path/parse :name)) + (let [extract (fn [zip path] (p->chan (-> zip (.file path) (.async "nodebuffer"))) ) + filename (-> zip-file path/parse :name) + [_ board layout hash] (first (re-seq #"^([A-Za-z0-9_-]+)-([A-Za-z0-9_]+)-([0-9A-Fa-f]{32})" filename)) + out-dir (path/join user-data-dir cache-dir filename) bin-out (path/join out-dir bin-file) _ (chan (.loadAsync jszip file))) - data (chan (-> zip (.file bin-file) (.async "nodebuffer")))) - ] - (fs/write-file! bin-out data) - (logf :info "Successfully extracted firmware to local cache: %s" bin-out) + json-name (str/fmt "%s-%s.json" board layout) + bin-data (