[#35] make -i option lazy

This commit is contained in:
Michiel Borkent 2019-08-29 11:29:41 +02:00 committed by GitHub
parent da4714b5dd
commit 8e26cefc0c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 7 deletions

View file

@ -54,8 +54,8 @@
opts-map))] opts-map))]
opts)) opts))
(defn parse-shell-string [s] (defn parse-shell-string [in]
(str/split s #"\n")) (line-seq (java.io.BufferedReader. in)))
(defn print-version [] (defn print-version []
(println (str "babashka v"(str/trim (slurp (io/resource "BABASHKA_VERSION")))))) (println (str "babashka v"(str/trim (slurp (io/resource "BABASHKA_VERSION"))))))
@ -164,10 +164,9 @@
(if stream? (if stream?
(if raw-in (or (read-line) ::EOF) (if raw-in (or (read-line) ::EOF)
(read-edn)) (read-edn))
(delay (let [in (slurp *in*)] (delay (if raw-in
(if raw-in (parse-shell-string *in*)
(parse-shell-string in) (edn/read *in*)))))
(edn/read-string in))))))
env (atom {}) env (atom {})
ctx {:bindings (assoc bindings '*command-line-args* command-line-args) ctx {:bindings (assoc bindings '*command-line-args* command-line-args)
:env env} :env env}

View file

@ -123,4 +123,10 @@
head -n10")) head -n10"))
out (str/split-lines out) out (str/split-lines out)
out (map edn/read-string out)] out (map edn/read-string out)]
(is (= out (take 10 (map #(* % %) (range)))))))) (is (= (take 10 (map #(* % %) (range))) out)))))
(deftest lazy-text-in-test
(when test-utils/native?
(let [out (:out (sh "bash" "-c" "yes | ./bb -i '(take 2 *in*)'"))
out (edn/read-string out)]
(is (= '("y" "y") out)))))