Clojure throws an exception when I don't expect it to -
i have code data sumo logic , other services.
core.clj has this, parses arguments , routes
right function in route.clj
(def cli-options [ ["-a" "--app appname" "set app. app can be: sumologic or jira"] ["-?" "--help"] ]) (defn -main [& args] (let [{:keys [options summary errors arguments]} (parse-opts args cli-options)] (cond (:app options) (route/to (:app options) options arguments) :else (print_usage summary))))
route.clj has this:
(defn [app options arguments] (case app "jira" (jira/respond options arguments) "sumologic" (sumo/respond)))
and sumo.clj has this. there other functions, of course, showing relevant parts.
(defn get-env-var [var] (let [result (system/getenv var)] (if (nil? result) (throw (exception. (str "environment variable: " var " not set. aborting"))) result))) (def access_key (let [user (get-env-var "sumo_id") pass (get-env-var "sumo_key")] [user pass])) (defn respond [] (let [{:keys [status body error] :as response} (http/get endpoint rest-options)] (if error (println error) (print-response body))))
when run program using leiningen lein run -- -?
or lein run
, error, though haven't explicitly called sumologic function. doing wrong , things can differently?
caused by: java.lang.exception: environment variable: sumo_key not set. aborting @ clarion.sumo$get_env_var.invoke(sumo.clj:14) @ clarion.sumo$fn__3765.invoke(sumo.clj:19) @ clojure.lang.afn.applytohelper(afn.java:152) @ clojure.lang.afn.applyto(afn.java:144) @ clojure.lang.compiler$invokeexpr.eval(compiler.java:3553)
you have def
'd access_key
being evaluated when load application. want make function instead.
Comments
Post a Comment