|
5 | 5 | [clojure.core :as c] |
6 | 6 | [clojure.java.io :as io] |
7 | 7 | [clojure.string :as str] |
8 | | - [lambdaisland.data-printers :as printers])) |
| 8 | + [lambdaisland.data-printers.auto :as printers])) |
9 | 9 |
|
10 | 10 | (defn- env-case [s] |
11 | 11 | (-> s str/upper-case (str/replace #"[-/]" "_"))) |
|
53 | 53 | (-source [this k]) |
54 | 54 | (-reload [this])) |
55 | 55 |
|
| 56 | +(defn register-print [klz data-fn] |
| 57 | + (printers/register-printer klz (symbol (.getName klz)) data-fn)) |
| 58 | + |
56 | 59 | (defn ensure-aero [path cache opts] |
57 | 60 | (when-not @cache |
58 | 61 | (reset! cache (aero/read-config path opts)))) |
|
74 | 77 | (-reload [this] |
75 | 78 | (reset! cache (aero/read-config path opts)))) |
76 | 79 |
|
| 80 | +(register-print AeroProvider #(do {:path (.-path %)})) |
| 81 | + |
77 | 82 | (deftype EnvProvider [prefix] |
78 | 83 | ConfigProvider |
79 | 84 | (-value [this k] (System/getenv (key->env-var prefix k))) |
80 | 85 | (-source [this k] (str "$" (key->env-var prefix k) " environment variable")) |
81 | 86 | (-reload [this])) |
82 | 87 |
|
| 88 | +(register-print EnvProvider #(do {:prefix (.-prefix %)})) |
| 89 | + |
83 | 90 | (defn- property-key [prefix k] |
84 | 91 | (str (when prefix |
85 | 92 | (str prefix ".")) |
|
91 | 98 | (-source [this k] (str (property-key prefix k) " java system property")) |
92 | 99 | (-reload [this])) |
93 | 100 |
|
| 101 | +(register-print PropertiesProvider #(do {:prefix (.-prefix %)})) |
| 102 | + |
94 | 103 | (deftype MapProvider [m desc] |
95 | 104 | ConfigProvider |
96 | 105 | (-value [this k] (c/get m k)) |
97 | 106 | (-source [this k] (str k " " desc)) |
98 | 107 | (-reload [this])) |
99 | 108 |
|
| 109 | +(register-print MapProvider #(do {:desc (.-desc %)})) |
| 110 | + |
100 | 111 | (deftype DerefMapProvider [m desc] |
101 | 112 | ConfigProvider |
102 | 113 | (-value [this k] (c/get @m k)) |
103 | 114 | (-source [this k] (str k " " desc)) |
104 | 115 | (-reload [this])) |
105 | 116 |
|
106 | | -(doseq [c [AeroProvider |
107 | | - EnvProvider |
108 | | - PropertiesProvider |
109 | | - MapProvider |
110 | | - DerefMapProvider]] |
111 | | - (printers/register-print c (.getName c) meta) |
112 | | - (printers/register-pprint c (.getName c) meta)) |
| 117 | +(register-print DerefMapProvider #(do {:desc (.-desc %)})) |
113 | 118 |
|
114 | 119 | (defn new-config [env providers] |
115 | 120 | {:env env |
|
0 commit comments