package sihl

  1. Overview
  2. Docs
The modular functional web framework

Install

Dune Dependency

Authors

Maintainers

Sources

sihl-0.1.1.tbz
sha256=eac58e5ee9c869aa3b0f0bcee936b01c53bf7fe1febb42edd607268dfb11f4e9
sha512=012b6cf1cf6af0966059761b4916ea8aa590aa8d5809a6f480cb17e23ee10c3b9245062c4f0cf9ad98ab950391c0827c9780999d39fa16a93f7aab4b12f9ab8c

doc/src/sihl.configuration/config_core.ml.html

Source file config_core.ml

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
open Base

exception Exception of string

type key_value = string * string

type t = {
  development : key_value list;
  test : key_value list;
  production : key_value list;
}

let production setting = setting.production

let development setting = setting.development

let test setting = setting.test

let create ~development ~test ~production = { development; test; production }

module Internal = struct
  type t = (string, string, String.comparator_witness) Map.t

  let state : t option ref = ref None

  let of_list kvs =
    match Map.of_alist (module String) kvs with
    | `Duplicate_key msg ->
        raise
          (Exception
             ( "CONFIG: Duplicate key detected while creating configuration: "
             ^ msg ))
    | `Ok map -> map

  let read_by_env setting =
    match Sys.getenv "SIHL_ENV" |> Option.value ~default:"development" with
    | "production" -> production setting
    | "test" -> test setting
    | _ -> development setting

  let register config =
    let config = config |> read_by_env |> of_list in
    match !state with
    | None -> state := Some config
    | Some _ ->
        raise (Exception "CONFIG: There were already configurations registered")

  let get () =
    Option.value_exn
      ~message:
        "CONFIG: No configuration found, have you registered configurations \
         with Sihl.Config.register_config?"
      !state
end
OCaml

Innovation. Community. Security.