You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.1 KiB

(*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*)
(** Configuration options from config file *)
let config_file_env_var = "SLEDGE_CONFIG"
let exe_relative_config_file_path = "config"
let config_file =
match Sys.getenv config_file_env_var with
| Some file -> file
| None ->
Filename.concat
(Filename.dirname Sys.executable_name)
exe_relative_config_file_path
let contents =
try Yojson.Basic.from_file config_file
with Sys_error _ ->
warn
"could not read config file %s@\n\
The path to the config file can be overridden by the %s environment \
variable."
config_file config_file_env_var () ;
`Assoc []
let find key = Yojson.Basic.Util.(to_string_option (member key contents))
let find_list key =
Yojson.Basic.Util.(filter_string (to_list (member key contents)))
let find_exn key =
match find key with
| Some data -> data
| None -> fail "%s not specified in config file %s" key config_file ()