diff --git a/src/babashka/impl/error_handler.clj b/src/babashka/impl/error_handler.clj index 9411c191..7ba19114 100644 --- a/src/babashka/impl/error_handler.clj +++ b/src/babashka/impl/error_handler.clj @@ -79,7 +79,8 @@ (defn error-handler [^Exception e opts] (binding [*out* *err*] (let [d (ex-data e) - exit-code (:bb/exit-code d) + cause-exit (some-> e ex-cause ex-data :exit) + exit-code (or (:exit d) cause-exit) sci-error? (isa? (:type d) :sci/error) ex-name (when sci-error? (some-> ^Throwable (ex-cause e) @@ -120,7 +121,7 @@ (when-not (str/blank? st) st))] (ruler "Stack trace") (println st))) - (when (:verbose? opts) + (when (:debug opts) (ruler "Exception") (print-stack-trace e)) (flush) diff --git a/src/babashka/impl/tasks.clj b/src/babashka/impl/tasks.clj index a5190e4b..882028cc 100644 --- a/src/babashka/impl/tasks.clj +++ b/src/babashka/impl/tasks.clj @@ -26,7 +26,7 @@ (binding [*out* *err*] (println (format "[bb %s]" (:name @task)) (str/join " " strs)))))) -(defn log-error [& strs] +#_(defn log-error [& strs] (let [log-level @log-level] (when (or ;; log error also in case of info level @@ -47,8 +47,10 @@ zero-exit?)] (if continue? proc (do (when-not zero-exit? - (log-error "Terminating with non-zero exit code:" exit-code)) - (System/exit exit-code))))))) + (binding [*out* *err*] + (println "Received non-zero exit code in task:" (:name @task)))) + (throw (ex-info (str "Error during task: " (:name @task)) + {:proc proc :task task :exit exit-code})))))))) (def default-opts {:in :inherit