blob: 632774d5cdac8ba5b8f045ece646627b17a7463d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
(ns bbbg.core
(:gen-class)
(:require
[bbbg.db :as db]
[bbbg.web :as web]
[clojure.spec.alpha :as s]
[clojure.spec.test.alpha :as stest]
[com.stuartsierra.component :as component]
[expound.alpha :as exp]))
(s/def ::config
(s/merge
::db/config
::web/config))
(defn make-system [config]
(component/system-map
:db (db/make-database config)
:web (web/make-server config)))
(defn env->config []
(s/assert
::config
(merge
(db/env->config)
(web/env->config))))
(defn dev-config []
(s/assert
::config
(merge
(db/dev-config)
(web/dev-config))))
(defonce system nil)
(defn init-dev []
(s/check-asserts true)
(set! s/*explain-out* exp/printer)
(stest/instrument))
(defn run-dev []
(init-dev)
(alter-var-root
#'system
(fn [sys]
(when sys
(component/start sys))
(component/start (make-system (dev-config))))))
(defn -main [& _args]
(alter-var-root
#'system
(constantly (component/start (make-system (env->config))))))
(comment
;; To run the application:
;; 1. `M-x cider-jack-in`
;; 2. `M-x cider-load-buffer` in this buffer
;; 3. (optionally) configure the secrets backend in `bbbg.util.dev-secrets`
;; 4. Put your cursor after the following form and run `M-x cider-eval-last-sexp`
;;
;; A web server will be listening on http://localhost:8888
(do
(run-dev)
(bbbg.db/migrate! (:db system)))
)
|