|
|
@ -1,17 +1,34 @@
|
|
|
|
(ns asciinema.main
|
|
|
|
(ns asciinema.main
|
|
|
|
(:gen-class)
|
|
|
|
(:gen-class)
|
|
|
|
(:require [com.stuartsierra.component :as component]
|
|
|
|
(:require [asciinema.yada :as y]
|
|
|
|
|
|
|
|
[clj-bugsnag.core :as bugsnag]
|
|
|
|
|
|
|
|
[com.stuartsierra.component :as component]
|
|
|
|
[duct.util.runtime :refer [add-shutdown-hook]]
|
|
|
|
[duct.util.runtime :refer [add-shutdown-hook]]
|
|
|
|
[duct.util.system :refer [load-system]]
|
|
|
|
[duct.util.system :refer [load-system]]
|
|
|
|
[environ.core :refer [env]]
|
|
|
|
[environ.core :refer [env]]
|
|
|
|
[clojure.java.io :as io]))
|
|
|
|
[clojure.java.io :as io]))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defn- request-context [req]
|
|
|
|
|
|
|
|
(str (-> req (get :request-method :unknown) name .toUpperCase)
|
|
|
|
|
|
|
|
" "
|
|
|
|
|
|
|
|
(:uri req)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defn- create-exception-notifier []
|
|
|
|
|
|
|
|
(when-let [key (:bugsnag-key env)]
|
|
|
|
|
|
|
|
(let [environment (:env-name env "production")
|
|
|
|
|
|
|
|
version (:git-sha env)]
|
|
|
|
|
|
|
|
(fn [ex req]
|
|
|
|
|
|
|
|
(bugsnag/notify ex {:api-key key
|
|
|
|
|
|
|
|
:environment environment
|
|
|
|
|
|
|
|
:project-ns "asciinema"
|
|
|
|
|
|
|
|
:version version
|
|
|
|
|
|
|
|
:context (request-context req)
|
|
|
|
|
|
|
|
:meta {:request (dissoc req :body)}})))))
|
|
|
|
|
|
|
|
|
|
|
|
(defn -main [& args]
|
|
|
|
(defn -main [& args]
|
|
|
|
|
|
|
|
(binding [y/*exception-notifier* (create-exception-notifier)]
|
|
|
|
(let [bindings {'http-port (Integer/parseInt (:port env "3000"))
|
|
|
|
(let [bindings {'http-port (Integer/parseInt (:port env "3000"))
|
|
|
|
'db-uri (:database-url env)
|
|
|
|
'db-uri (:database-url env)
|
|
|
|
'env-name (:env-name env "production")
|
|
|
|
|
|
|
|
'git-sha (:git-sha env)
|
|
|
|
|
|
|
|
'bugsnag-key (:bugsnag-key env)
|
|
|
|
|
|
|
|
's3-bucket (:s3-bucket env)
|
|
|
|
's3-bucket (:s3-bucket env)
|
|
|
|
's3-access-key (:s3-access-key env)
|
|
|
|
's3-access-key (:s3-access-key env)
|
|
|
|
's3-secret-key (:s3-secret-key env)
|
|
|
|
's3-secret-key (:s3-secret-key env)
|
|
|
@ -20,5 +37,5 @@
|
|
|
|
system (->> (load-system [(io/resource "asciinema/system.edn")] bindings)
|
|
|
|
system (->> (load-system [(io/resource "asciinema/system.edn")] bindings)
|
|
|
|
(component/start))]
|
|
|
|
(component/start))]
|
|
|
|
(add-shutdown-hook ::stop-system #(component/stop system))
|
|
|
|
(add-shutdown-hook ::stop-system #(component/stop system))
|
|
|
|
(println "Started HTTP server on port" (-> system :http :port)))
|
|
|
|
(println "Started HTTP server on port" (-> system :http :port))))
|
|
|
|
@(promise))
|
|
|
|
@(promise))
|
|
|
|