diff --git a/include/parse_config.ml b/include/parse_config.ml index e8ab68ca..115d1af7 100644 --- a/include/parse_config.ml +++ b/include/parse_config.ml @@ -16,7 +16,7 @@ type section = { } let fail_with msg = - Fmt.epr "Failed to parse configuration: %s.@." msg; + Fmt.epr "Configuration failure: %s.@." msg; exit 1 let is_eol = function '\n' | '\r' -> true | _ -> false diff --git a/default.config b/src/assets/default.config similarity index 100% rename from default.config rename to src/assets/default.config diff --git a/src/config.ml b/src/config.ml index 725963b2..992961d6 100644 --- a/src/config.ml +++ b/src/config.ml @@ -1,11 +1,13 @@ open Parse_config let config_data = - let read_file file = In_channel.with_open_bin file In_channel.input_all in - let content = read_file "default.config" in - let v = Parse_data.parse content in - (*Fmt.epr "config file:@\n%a@." Pp_debug.pp_config v;*) - v + let path = Fpath.to_string (Fpath.v "default.config") in + match Assets_crunch.read path with + | None -> Fmt.failwith "static file not found: `%s`" path + | Some data -> + let v = Parse_data.parse data in + (*Fmt.epr "config file:@\n%a@." Pp_debug.pp_config v;*) + v module Exchange = struct let get_opt field = get_opt config_data ~section:"exchange" ~field @@ -119,7 +121,11 @@ module Currency = struct (Fmt.str "section `[currency-%s]` not found, currency `%s` is not defined" Exchange.currency Exchange.currency) - | Some v -> v + | Some v -> ( + match v.enabled = `YES with + | false -> + fail_with (Fmt.str "currency `%s` is not enabled" Exchange.currency) + | true -> v) end module Coin = struct