Skip to content

Instantly share code, notes, and snippets.

@bitemyapp
Created October 29, 2013 21:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bitemyapp/7223007 to your computer and use it in GitHub Desktop.
Save bitemyapp/7223007 to your computer and use it in GitHub Desktop.
(ns fake.is.awesome.config
(:require [environ.core :refer [env]]))
(defn kenv
([key]
(kenv key nil))
([key fallback]
(keyword (env key fallback))))
(defn string->boolean [s]
(= s "true"))
(defn benv
([key]
(kenv key nil))
([key fallback]
(string->boolean (env key fallback))))
(defn rabbitmq-config []
{:host (env :rabbitmq-host "FAKEDATA")
:port (env :rabbitmq-port 5672)
:username (env :rabbitmq-user "FAKEDATA")
:password (env :rabbitmq-password "FAKEDATA")
:vhost (env :rabbitmq-vhost "/")
:automatically-recover true
:fake-qname (env :rabbitmq-fake-qname "FAKEDATA")})
(defn logging-config []
[[:current-level] (kenv :log-level :debug)
[:appenders :spit :enabled?] (benv :file-logging "true")
[:shared-appender-config :spit-filename] (env :log-path "log/fake.log")])
(defn dburi []
(env :database-url "datomic:mem://FAKEDATA"))
(defn db-name []
(last (clojure.string/split (dburi) #"/")))
(defn dev? []
(not (env :production nil)))
(defn publish-sanitized-uri []
(or (env :publish-sanitized-uri)
(and (dev?) "FAKE_URL")
(and (not (dev?)) "FAKE_URL")))
(defn get-config
([]
{:rabbitmq (rabbitmq-config)
:dev (dev?)
:fake/pre-unique-id :_id
:fake/unique-id :sanitized/id
:publish-fake-uri (publish-sanitized-uri)
:start-consumers (benv :fake-start-consumers "true")
:start-web (benv :fake-start-web "true")
:push-schema (benv :push-schema "true")
:dburi (dburi)
:backup-uri "file:/mnt/backup/FAKE/"
:ignore-duplicates false
:db-name (db-name)})
([key]
(get-config key nil))
([key fallback]
((get-config) key fallback)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment