@@ -64,6 +64,8 @@ let settings =
6464 }
6565
6666let accessed_global_args = Hash_set. create (module String )
67+ let str_nonempty ~f s = if String. is_empty s then None else Some (f s)
68+ let pair a b = (a, b)
6769
6870let read_cmdline_or_env_var n =
6971 let with_debug =
@@ -86,10 +88,7 @@ let read_cmdline_or_env_var n =
8688 | None -> (
8789 match
8890 List. find_map env_variants ~f: (fun env_n ->
89- Option. (
90- join
91- @@ map (Stdlib.Sys. getenv_opt env_n) ~f: (fun v ->
92- if String. is_empty v then None else Some (env_n, v))))
91+ Option. (join @@ map (Stdlib.Sys. getenv_opt env_n) ~f: (str_nonempty ~f: (pair env_n))))
9392 with
9493 | None | Some (_ , "" ) -> None
9594 | Some (p , arg ) ->
@@ -145,7 +144,7 @@ let config_file_args =
145144 String. drop_prefix key 6 |> String. strip ~drop: (equal_char '_' )
146145 else key
147146 in
148- if String. is_empty v then None else Some ( key, v)
147+ str_nonempty ~f: (pair key) v
149148 | l ->
150149 failwith @@ " OCANNL: invalid syntax in the config file " ^ fname
151150 ^ " , should have a single '=' on each non-empty line, found: " ^ String. concat l)
@@ -214,9 +213,10 @@ let diagn_log_file fname =
214213 filename_concat log_files_dir fname
215214
216215let get_debug name =
217- let snapshot_every_sec = get_global_arg ~default: " " ~arg_name: " snapshot_every_sec" in
218216 let snapshot_every_sec =
219- if String. is_empty snapshot_every_sec then None else Float. of_string_opt snapshot_every_sec
217+ Option. join
218+ @@ str_nonempty ~f: Float. of_string_opt
219+ @@ get_global_arg ~default: " " ~arg_name: " snapshot_every_sec"
220220 in
221221 let time_tagged =
222222 match String. lowercase @@ get_global_arg ~default: " elapsed" ~arg_name: " time_tagged" with
@@ -278,8 +278,8 @@ let get_debug name =
278278 in
279279 let filename = Option. map file_stem ~f: (fun stem -> diagn_log_file @@ stem) in
280280 let prev_run_file =
281- let prefix = get_global_arg ~default: " " ~arg_name: " prev_run_prefix" in
282- Option. map file_stem ~f: (fun stem -> diagn_log_file @@ prefix ^ stem ^ " .raw" )
281+ let prefix = str_nonempty ~f: Fn. id @@ get_global_arg ~default: " " ~arg_name: " prev_run_prefix" in
282+ Option. map2 prefix file_stem ~f: (fun prefix stem -> diagn_log_file @@ prefix ^ stem ^ " .raw" )
283283 in
284284 let log_level =
285285 let s = String. strip @@ get_global_arg ~default: " 1" ~arg_name: " log_level" in
@@ -321,12 +321,11 @@ let get_debug name =
321321 in
322322 let highlight_re =
323323 let arg = get_global_arg ~default: " " ~arg_name: " debug_highlight_pcre" in
324- if String. is_empty arg then [] else [ Re.Pcre. re arg ]
324+ Option. to_list @@ str_nonempty ~f: Re.Pcre. re arg
325325 in
326326 let highlight_terms = Re. (alt (highlight_re @ List. map debug_highlights ~f: str)) in
327327 let diff_ignore_pattern =
328- let arg = get_global_arg ~default: " " ~arg_name: " diff_ignore_pattern_pcre" in
329- if String. is_empty arg then None else Some (Re.Pcre. re arg)
328+ str_nonempty ~f: Re.Pcre. re @@ get_global_arg ~default: " " ~arg_name: " diff_ignore_pattern_pcre"
330329 in
331330 if flushing then
332331 Minidebug_runtime. debug_flushing ?filename ~time_tagged ~elapsed_times ~print_entry_ids
0 commit comments