Skip to content

Commit

Permalink
Merge branch 'main' into fix-166
Browse files Browse the repository at this point in the history
  • Loading branch information
marijanp authored Jul 26, 2024
2 parents 8c68f90 + f961a23 commit eac1690
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 11 deletions.
20 changes: 20 additions & 0 deletions kairos-cli/build.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
use std::env;
use std::fs;
use std::path::Path;

fn main() {
// Path
let session_binaries_dir = env::var("PATH_TO_SESSION_BINARIES")
.expect("PATH_TO_SESSION_BINARIES environment variable is not set");

// Get the output directory set by Cargo.
let out_dir = env::var("OUT_DIR").expect("OUT_DIR not set");
let source_path = Path::new(&session_binaries_dir).join("deposit-session-optimized.wasm");
let dest_path = Path::new(&out_dir).join("deposit-session-optimized.wasm");

// Copy the file from the source to the destination
fs::copy(&source_path, dest_path).expect("Failed to copy WASM file");

// Print out a message to re-run this script if the source file changes.
println!("cargo:rerun-if-changed={}", source_path.display());
}
11 changes: 1 addition & 10 deletions kairos-cli/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ use kairos_server::PublicKey;
use reqwest::Url;
use serde::{Deserialize, Serialize};
use std::fmt;
use std::fs;
use std::path::Path;

#[cfg(feature = "database")]
use kairos_data::transaction::{TransactionFilter, Transactions};
Expand Down Expand Up @@ -55,20 +53,13 @@ impl From<reqwest::Error> for KairosClientError {

pub fn deposit(
base_url: &Url,
deposit_session_wasm_bytes: &[u8],
depositor_secret_key: &SecretKey,
chain_name: &str,
contract_hash: &ContractHash,
amount: impl Into<U512>,
recipient: casper_client_types::PublicKey,
) -> Result<DeployHash, KairosClientError> {
let deposit_session_wasm_path =
Path::new(env!("PATH_TO_SESSION_BINARIES")).join("deposit-session-optimized.wasm");
let deposit_session_wasm_bytes = fs::read(&deposit_session_wasm_path).unwrap_or_else(|err| {
panic!(
"Failed to read the deposit session wasm as bytes from file: {:?}.\n{}",
deposit_session_wasm_path, err
)
});
let deposit_session = ExecutableDeployItem::new_module_bytes(
deposit_session_wasm_bytes.into(),
runtime_args! {
Expand Down
35 changes: 34 additions & 1 deletion kairos-cli/src/commands/deposit.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
use std::fs;
use std::path::PathBuf;

use crate::client;
use crate::common::args::{
AmountArg, ChainNameArg, ContractHashArg, PrivateKeyPathArg, RecipientArg,
};
use crate::error::CliError;

use casper_client_types::{crypto::SecretKey, ContractHash};
use clap::Parser;
use clap::{Args as ClapArgs, Parser};
use hex::FromHex;
use reqwest::Url;

use kairos_crypto::error::CryptoError;

const DEFAULT_DEPOSIT_SESSION_WASM: &[u8] =
include_bytes!(concat!(env!("OUT_DIR"), "/deposit-session-optimized.wasm"));

#[derive(Parser, Debug)]
pub struct Args {
#[clap(flatten)]
Expand All @@ -22,6 +28,8 @@ pub struct Args {
#[clap(flatten)]
recipient: RecipientArg,
#[clap(flatten)]
session_path: SessionPathArg,
#[clap(flatten)]
chain_name: ChainNameArg,
}

Expand All @@ -46,8 +54,21 @@ pub fn run(args: Args, kairos_server_address: Url) -> Result<String, CliError> {
Some(name) => name,
};

let deposit_session_wasm: Vec<u8> = match args.session_path.field {
Some(deposit_session_wasm_path) => {
fs::read(&deposit_session_wasm_path).unwrap_or_else(|err| {
panic!(
"Failed to read the deposit session wasm as bytes from file: {:?}.\n{}",
deposit_session_wasm_path, err
)
})
}
None => DEFAULT_DEPOSIT_SESSION_WASM.to_vec(),
};

client::deposit(
&kairos_server_address,
&deposit_session_wasm,
&depositor_secret_key,
&chain_name,
&contract_hash,
Expand All @@ -68,3 +89,15 @@ pub fn run(args: Args, kairos_server_address: Url) -> Result<String, CliError> {
output
})
}

#[derive(ClapArgs, Debug)]
pub struct SessionPathArg {
#[arg(
id = "session-path",
long,
short = 's',
value_name = "PATH",
help = "Path to the custom WASM session code for deposit"
)]
pub field: Option<PathBuf>,
}

0 comments on commit eac1690

Please sign in to comment.