12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182(*****************************************************************************)(* *)(* Open Source License *)(* Copyright (c) 2020 Nomadic Labs, <contact@nomadic-labs.com> *)(* *)(* Permission is hereby granted, free of charge, to any person obtaining a *)(* copy of this software and associated documentation files (the "Software"),*)(* to deal in the Software without restriction, including without limitation *)(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *)(* and/or sell copies of the Software, and to permit persons to whom the *)(* Software is furnished to do so, subject to the following conditions: *)(* *)(* The above copyright notice and this permission notice shall be included *)(* in all copies or substantial portions of the Software. *)(* *)(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*)(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *)(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *)(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*)(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *)(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *)(* DEALINGS IN THE SOFTWARE. *)(* *)(*****************************************************************************)letprotocol_constants_arg=Tezos_clic.arg~doc:"a JSON file that contains protocol constants to set."~long:"protocol-constants"~placeholder:"path"(Tezos_clic.parameter(fun_x->Lwt_result_syntax.returnx))letbootstrap_accounts_arg=Tezos_clic.arg~doc:"a JSON file that contains definitions of bootstrap accounts to create."~long:"bootstrap-accounts"~placeholder:"path"(Tezos_clic.parameter(fun_x->Lwt_result_syntax.returnx))letasynchronous_flag=Tezos_clic.switch~long:"asynchronous"~doc:"put operations in mempool and require baking to include in the chain"()letload_json_file(cctxt:Protocol_client_context.full)json_file=letopenLwt_result_syntaxinmatchjson_filewith|None->returnNone|Somefilename->let*json_string=cctxt#read_filefilenameinreturn(Some(Ezjsonm.from_stringjson_string:>Data_encoding.json))letcreate_mockup_command_handler(constants_overrides_file,bootstrap_accounts_file,asynchronous)(cctxt:Protocol_client_context.full)=letopenLwt_result_syntaxinlet*constants_overrides_json=load_json_filecctxtconstants_overrides_fileinlet*bootstrap_accounts_json=load_json_filecctxtbootstrap_accounts_fileinlet*()=Tezos_mockup.Persistence.create_mockup~cctxt:(cctxt:>Tezos_client_base.Client_context.full)~protocol_hash:Protocol.hash~constants_overrides_json~bootstrap_accounts_json~asynchronousinTezos_mockup_commands.Mockup_wallet.populatecctxtbootstrap_accounts_fileletcreate_mockup_command:Protocol_client_context.fullTezos_clic.command=letopenTezos_clicincommand~group:Tezos_mockup_commands.Mockup_commands.group~desc:"Create a mockup environment."(args3protocol_constants_argbootstrap_accounts_argasynchronous_flag)(prefixes["create";"mockup"]@@stop)create_mockup_command_handlerletcommands()=[create_mockup_command]