Ejemplo n.º 1
0
    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")])
Ejemplo n.º 2
0
    def _patch_cargo_abi(self):
        cargo_path = path.join(self.directory, "abi", TemplateRust.CARGO_TOML)
        if not path.isfile(cargo_path):
            return

        cargo_file = CargoFile(cargo_path)
        cargo_file.package_name = f"{self.project_name}-abi"
        cargo_file.version = "0.0.0"
        cargo_file.authors = ["you"]
        cargo_file.edition = "2018"
        cargo_file.publish = False

        for dependency in cargo_file.get_dependencies().values():
            del dependency["path"]
        for dependency in cargo_file.get_dev_dependencies().values():
            del dependency["path"]

        # Patch the path towards the project crate (one folder above):
        cargo_file.get_dependency(self.template_name)["path"] = ".."

        cargo_file.save()

        self._replace_in_files([cargo_path],
                               [(f"[dependencies.{self.template_name}]",
                                 f"[dependencies.{self.project_name}]")])
Ejemplo n.º 3
0
    def _patch_cargo(self):
        cargo_path = path.join(self.directory, TemplateRust.CARGO_TOML)

        cargo_file = CargoFile(cargo_path)
        cargo_file.package_name = self.project_name
        cargo_file.version = "0.0.1"
        cargo_file.authors = ["you"]
        cargo_file.edition = "2018"

        for dependency in cargo_file.get_dependencies().values():
            del dependency["path"]

        cargo_file.save()
Ejemplo n.º 4
0
    def _patch_cargo_wasm(self):
        cargo_path = path.join(self.directory, "wasm", TemplateRust.CARGO_TOML)

        cargo_file = CargoFile(cargo_path)
        cargo_file.package_name = f"{self.project_name}-wasm"
        cargo_file.version = "0.0.1"
        cargo_file.authors = ["you"]
        cargo_file.edition = "2018"

        for dependency in cargo_file.get_dependencies().values():
            del dependency["path"]
        cargo_file.get_dependency(self.template_name)["path"] = ".."

        cargo_file.save()

        self._replace_in_files([cargo_path],
                               [(f"[dependencies.{self.template_name}]",
                                 f"[dependencies.{self.project_name}]")])
Ejemplo n.º 5
0
    def _patch_cargo_debug(self):
        cargo_debug_path = path.join(self.directory, "debug",
                                     TemplateRust.CARGO_TOML)
        if not path.exists(cargo_debug_path):
            return

        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"

        for dependency in cargo_file_debug.get_dependencies().values():
            del dependency["path"]
        cargo_file_debug.get_dependency(self.template_name)["path"] = ".."

        cargo_file_debug.save()

        self._replace_in_files([cargo_debug_path],
                               [(f"[dependencies.{self.template_name}]",
                                 f"[dependencies.{self.project_name}]")])
Ejemplo n.º 6
0
    def _patch_cargo_wasm(self):
        cargo_path = path.join(self.directory, "wasm", TemplateRust.CARGO_TOML)

        cargo_file = CargoFile(cargo_path)
        cargo_file.package_name = f"{self.project_name}-wasm"
        cargo_file.version = "0.0.1"
        cargo_file.authors = ["you"]
        cargo_file.edition = "2018"

        for dependency in cargo_file.get_dependencies().values():
            del dependency["path"]
        # Currently, the following logic is not really needed (we don't have dev-dependencies in wasm/Cargo.toml):
        for dependency in cargo_file.get_dev_dependencies().values():
            del dependency["path"]

        # Patch the path towards the project crate (one folder above):
        cargo_file.get_dependency(self.template_name)["path"] = ".."

        cargo_file.save()

        self._replace_in_files([cargo_path],
                               [(f"[dependencies.{self.template_name}]",
                                 f"[dependencies.{self.project_name}]")])