From 2d77455d9b95cc0d7a9b9d873f3e72914652a967 Mon Sep 17 00:00:00 2001 From: leon3108 Date: Sun, 7 Jan 2024 15:21:51 +0100 Subject: [PATCH] wip : deploy a contract, poc --- toolchains/solidity/core/Cargo.lock | 9 ++++ .../core/crates/foundry-deploy/Cargo.toml | 14 +++++ .../core/crates/foundry-deploy/Makefile | 3 ++ .../core/crates/foundry-deploy/src/main.rs | 53 +++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 toolchains/solidity/core/crates/foundry-deploy/Cargo.toml create mode 100644 toolchains/solidity/core/crates/foundry-deploy/Makefile create mode 100644 toolchains/solidity/core/crates/foundry-deploy/src/main.rs diff --git a/toolchains/solidity/core/Cargo.lock b/toolchains/solidity/core/Cargo.lock index d377d620..005072fc 100644 --- a/toolchains/solidity/core/Cargo.lock +++ b/toolchains/solidity/core/Cargo.lock @@ -280,6 +280,15 @@ dependencies = [ "tower-lsp", ] +[[package]] +name = "foundry-deploy" +version = "0.3.0" +dependencies = [ + "osmium-libs-foundry-wrapper", + "tokio", + "tower-lsp", +] + [[package]] name = "futures" version = "0.3.29" diff --git a/toolchains/solidity/core/crates/foundry-deploy/Cargo.toml b/toolchains/solidity/core/crates/foundry-deploy/Cargo.toml new file mode 100644 index 00000000..5e8602f9 --- /dev/null +++ b/toolchains/solidity/core/crates/foundry-deploy/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "foundry-deploy" +version.workspace = true +edition.workspace = true +authors.workspace = true +license.workspace = true +exclude.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +osmium-libs-foundry-wrapper = { path = "../../../../../libs/foundry-wrapper" } +tower-lsp = "0.20.0" +tokio = { version = "1.34.0", features = ["full"] } diff --git a/toolchains/solidity/core/crates/foundry-deploy/Makefile b/toolchains/solidity/core/crates/foundry-deploy/Makefile new file mode 100644 index 00000000..1f0381e6 --- /dev/null +++ b/toolchains/solidity/core/crates/foundry-deploy/Makefile @@ -0,0 +1,3 @@ +build: + cargo build + cp ../../target/debug/foundry-server ../../../extension/dist \ No newline at end of file diff --git a/toolchains/solidity/core/crates/foundry-deploy/src/main.rs b/toolchains/solidity/core/crates/foundry-deploy/src/main.rs new file mode 100644 index 00000000..29448cd2 --- /dev/null +++ b/toolchains/solidity/core/crates/foundry-deploy/src/main.rs @@ -0,0 +1,53 @@ +use std::process::Command; +use tower_lsp::{Client, LanguageServer}; + +#[derive(Debug)] +struct Backend { + client: Client, +} + +impl LanguageServer for Backend { + fn initialize(&self, params: InitializeParams) -> Result {} + + fn deploy_contract() { + //get infos thanks to the client + let contractName = "Test"; + let rpc_url = "rpc_urlTest"; + let key = "keyTest"; + + // Create a new instance of the command + let mut cmd = Command::new("forge"); + // Add arguments to the command + cmd.arg("create"); + cmd.arg("--rpc-url"); + cmd.arg(rpc_url); + cmd.arg("--private-key"); + cmd.arg(key); + cmd.arg("--verify"); + cmd.arg(contractName); + + // Execute the command and capture the result + let result = cmd.status(); + + // Handle the result + match result { + Ok(status) => { + if status.success() { + println!("Command executed successfully!"); + } else { + println!("Command failed with exit code: {:?}", status.code()); + } + } + Err(e) => { + println!("Error executing the command: {:?}", e); + } + } + } + + fn shutdown(&self) -> Result<()> { + Ok(()) + } +} + +async fn main() { +} \ No newline at end of file