cycles-quartz/crates/cli/src/request/contract_deploy.rs
Daniel Gushchyan df40e592c8
feat: error reporting with eyre (#240)
Co-authored-by: hu55a1n1 <sufialhussaini@gmail.com>
2024-10-08 12:53:49 +04:00

36 lines
931 B
Rust

use std::{collections::HashMap, path::PathBuf};
use color_eyre::{eyre::Context, Result};
use serde::{Deserialize, Serialize};
use crate::request::Request;
#[derive(Clone, Debug)]
pub struct ContractDeployRequest {
pub init_msg: serde_json::Value,
pub label: String,
pub contract_manifest: PathBuf,
}
impl From<ContractDeployRequest> for Request {
fn from(request: ContractDeployRequest) -> Self {
Self::ContractDeploy(request)
}
}
impl ContractDeployRequest {
pub fn checked_init(init_msg: String) -> Result<GenericQuartzInit> {
let parsed: GenericQuartzInit = serde_json::from_str(&init_msg)
.wrap_err("Init message doesn't contain mandatory quartz field")?;
Ok(parsed)
}
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct GenericQuartzInit {
pub quartz: serde_json::Value,
#[serde(flatten)]
extra: HashMap<String, serde_json::Value>,
}