cosm_script/
helpers.rs

1use std::{env, rc::Rc};
2
3use secp256k1::{All, Secp256k1};
4
5use crate::{sender::Sender, Chain, Deployment};
6
7pub fn get_env_vars() -> (String, String, String, bool) {
8    let propose_on_multisig =
9        env::var("PROPOSE_ON_MULTISIG").unwrap_or_else(|_| "false".to_string());
10    let store_path = env::var("STORE").unwrap();
11    let chain = env::var("CHAIN").unwrap();
12    let deployment = env::var("DEPLOYMENT").unwrap();
13
14    (
15        store_path,
16        chain,
17        deployment,
18        propose_on_multisig.parse::<bool>().unwrap(),
19    )
20}
21
22pub async fn get_configuration() -> anyhow::Result<(Deployment, Rc<Sender<All>>)> {
23    let secp = Secp256k1::new();
24    let (store_path, chain_id, deployment_id, propose_on_multisig) = get_env_vars();
25
26    let chain = Chain::new(&chain_id, &store_path).await?;
27    let network = chain.network().await?;
28    // All configs are set here
29    let config = Deployment::new(deployment_id, network, propose_on_multisig).await?;
30
31    let sender = Rc::new(Sender::new(config.clone(), secp)?);
32    Ok((config, sender))
33}