def build_binary(self, tag, binary_name): source_folder = self.binary_source_folder(tag, binary_name) golang = dependencies.get_module_by_key("golang") golang_env = golang.get_env() myprocess.run_process(['go', 'build'], cwd=source_folder, env=golang_env)
def _get_args(): directory = dependencies.get_module_by_key("nodedebug").get_directory() executable = path.join(directory, "nodedebug") config_path = path.join(directory, "config", "config.toml") genesis_path = path.join(directory, "config", "genesis.json") args = [ executable, "--rest-api-port", "8080", "--config", config_path, "--genesis-file", genesis_path ] return args
def _replace_placeholders(self): rust_module = dependencies.get_module_by_key("rust") self.rust_directory = rust_module.get_directory() self.rust_bin_directory = path.join(self.rust_directory, "bin") cargo_path = path.join(self.directory, "Cargo.toml") cargo_debug_path = path.join(self.directory, "debug", "Cargo.toml") launch_path = path.join(self.directory, ".vscode", "launch.json") tasks_path = path.join(self.directory, ".vscode", "tasks.json") debug_main_path = path.join(self.directory, "debug", "src", "main.rs") test_paths = utils.list_files(path.join(self.directory, "test")) logger.info("Updating cargo files...") cargo_file = CargoFile(cargo_path) cargo_file.package_name = self.project_name cargo_file.bin_name = self.project_name cargo_file.version = "0.0.1" cargo_file.authors = ["you"] cargo_file.edition = "2018" cargo_file.save() cargo_file_debug = CargoFile(cargo_debug_path) cargo_file_debug.package_name = f"{self.project_name}-debug" cargo_file_debug.version = "0.0.1" cargo_file_debug.authors = ["you"] cargo_file_debug.edition = "2018" cargo_file_debug.save() logger.info("Applying replacements...") self._replace_in_files([launch_path, tasks_path], [("{{PROJECT_NAME}}", self.project_name), ("{{PATH_RUST_BIN}}", self.rust_bin_directory), ("{{RUSTUP_HOME}}", self.rust_directory), ("{{CARGO_HOME}}", self.rust_directory)]) self._replace_in_files( [debug_main_path], [ # Example "use simple_coin::*" to "use my_project::*" (f"use {self.template_name.replace('-', '_')}::*", f"use {self.project_name.replace('-', '_')}::*") ]) self._replace_in_files([cargo_debug_path], [(f"[dependencies.{self.template_name}]", f"[dependencies.{self.project_name}]")]) self._replace_in_files(test_paths, [(f"adder.wasm", f"myadder.wasm")])
def check(args: Any): name: str = args.name tag: str = args.tag module = dependencies.get_module_by_key(name) default_tag: str = config.get_dependency_tag(module.key) tag_to_check = tag or default_tag installed = module.is_installed(tag_to_check) if installed: print( f"[{name} {tag_to_check}] is installed. Default version (tag) is [{default_tag}]." ) return raise errors.DependencyMissing(name, tag_to_check)
def run_tests(self, tests_directory: str, wildcard: str = ""): arwentools = cast(StandaloneModule, dependencies.get_module_by_key("arwentools")) tool_env = arwentools.get_env() tool = path.join(arwentools.get_parent_directory(), "mandos-test") test_folder = path.join(self.directory, tests_directory) if not wildcard: args = [tool, test_folder] myprocess.run_process(args, env=tool_env) else: pattern = path.join(test_folder, wildcard) test_files = glob.glob(pattern) for test_file in test_files: print("Run test for:", test_file) args = [tool, test_file] myprocess.run_process(args, env=tool_env)
def build_binaries(testnet_config: TestnetConfiguration): golang = dependencies.get_module_by_key("golang") golang_env = golang.get_env() myprocess.run_process(['go', 'env'], env=golang_env) logger.info("Building seednode...") seednode_folder = testnet_config.node_source() / "cmd" / "seednode" myprocess.run_process(['go', 'build'], cwd=seednode_folder, env=golang_env) logger.info("Building node...") node_folder = testnet_config.node_source() / "cmd" / "node" myprocess.run_process(['go', 'build'], cwd=node_folder, env=golang_env) logger.info("Building arwen...") node_folder_root = testnet_config.node_source() env = dict(golang_env) env["ARWEN_PATH"] = node_folder myprocess.run_process(['make', 'arwen'], cwd=node_folder_root, env=env) logger.info("Building proxy...") proxy_folder = testnet_config.proxy_source() / "cmd" / "proxy" myprocess.run_process(['go', 'build'], cwd=proxy_folder, env=golang_env) # Now copy the binaries to the testnet folder arwen_version = _get_arwen_version(testnet_config) libwasmer_path = path.join( golang.get_gopath(), f"pkg/mod/github.com/!elrond!network/arwen-wasm-vm@{arwen_version}/wasmer/libwasmer_darwin_amd64.dylib" ) shutil.copy(seednode_folder / "seednode", testnet_config.seednode_folder()) if workstation.get_platform() == "osx": shutil.copy(libwasmer_path, testnet_config.seednode_folder()) for destination in testnet_config.all_nodes_folders(): shutil.copy(node_folder / "node", destination) shutil.copy(node_folder / "arwen", destination) if workstation.get_platform() == "osx": shutil.copy(libwasmer_path, destination) shutil.copy(proxy_folder / "proxy", testnet_config.proxy_folder()) if workstation.get_platform() == "osx": shutil.copy(libwasmer_path, testnet_config.proxy_folder())
def run_tests(self, tests_directory, wildcard=None): testrunner_module = dependencies.get_module_by_key("arwentools") tool_directory = testrunner_module.get_directory() tool_env = testrunner_module.get_env() tool = path.join(tool_directory, "test") test_folder = path.join(self.directory, tests_directory) if not wildcard: args = [tool, test_folder] myprocess.run_process(args, env=tool_env) else: pattern = path.join(test_folder, wildcard) test_files = glob.glob(pattern) for test_file in test_files: print("Run test for:", test_file) args = [tool, test_file] myprocess.run_process(args, env=tool_env)
def _get_env(): return dependencies.get_module_by_key("nodedebug").get_env()
def _get_env(self): return dependencies.get_module_by_key("rust").get_env()