123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104(**************************************************************************)(* *)(* Copyright 2015 OCamlPro *)(* *)(* All rights reserved. This file is distributed under the terms of the *)(* GNU Lesser General Public License version 2.1, with the special *)(* exception on linking described in the file LICENSE. *)(* *)(**************************************************************************)openOpamCompattypet={debug_level:int;verbose_level:int;color:[`Always|`Never|`Auto];utf8:[`Extended|`Always|`Never|`Auto];disp_status_line:[`Always|`Never|`Auto];answer:booloption;safe_mode:bool;log_dir:string;keep_log_dir:bool;errlog_length:int;merged_output:bool;use_openssl:bool;precise_tracking:bool;}type'aoptions_fun=?debug_level:int->?verbose_level:int->?color:[`Always|`Never|`Auto]->?utf8:[`Extended|`Always|`Never|`Auto]->?disp_status_line:[`Always|`Never|`Auto]->?answer:booloption->?safe_mode:bool->?log_dir:string->?keep_log_dir:bool->?errlog_length:int->?merged_output:bool->?use_openssl:bool->?precise_tracking:bool->'aletdefault={debug_level=0;verbose_level=0;color=`Auto;utf8=`Auto;disp_status_line=`Auto;answer=None;safe_mode=false;log_dir=(letuser=tryUnix.getlogin()withUnix.Unix_error_->"xxx"inletbase=Printf.sprintf"opam-%s-%d"user(OpamStubs.getpid())inFilename.(concat(get_temp_dir_name())base));keep_log_dir=false;errlog_length=12;merged_output=true;use_openssl=true;precise_tracking=false;}letsetkkt?debug_level?verbose_level?color?utf8?disp_status_line?answer?safe_mode?log_dir?keep_log_dir?errlog_length?merged_output?use_openssl?precise_tracking=let(+)xopt=matchoptwithSomex->x|None->xink{debug_level=t.debug_level+debug_level;verbose_level=t.verbose_level+verbose_level;color=t.color+color;utf8=t.utf8+utf8;disp_status_line=t.disp_status_line+disp_status_line;answer=t.answer+answer;safe_mode=t.safe_mode+safe_mode;log_dir=t.log_dir+log_dir;keep_log_dir=t.keep_log_dir+keep_log_dir;errlog_length=t.errlog_length+errlog_length;merged_output=t.merged_output+merged_output;use_openssl=t.use_openssl+use_openssl;precise_tracking=t.precise_tracking+precise_tracking;}letsett=setk(funx()->x)t(* Global configuration reference *)letr=refdefaultletupdate?noop:_=setk(funcfg()->r:=cfg)!rletdeveloper=false