Sync code with .env in build.rs (#4876)
* Sync code with .env in build.rs * PR feedback
This commit is contained in:
Generated
+2
@@ -5872,8 +5872,10 @@ dependencies = [
|
||||
name = "nym-network-defaults"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"cargo_metadata 0.18.1",
|
||||
"dotenvy",
|
||||
"log",
|
||||
"regex",
|
||||
"schemars",
|
||||
"serde",
|
||||
"url",
|
||||
|
||||
@@ -23,3 +23,7 @@ default = ["env", "network"]
|
||||
env = ["dotenvy", "log"]
|
||||
network = ["schemars", "serde", "url"]
|
||||
utoipa = [ "dep:utoipa" ]
|
||||
|
||||
[build-dependencies]
|
||||
regex = { workspace = true }
|
||||
cargo_metadata = { version = "0.18" }
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
use cargo_metadata::MetadataCommand;
|
||||
use regex::Regex;
|
||||
use std::{collections::HashMap, fs, path::PathBuf};
|
||||
|
||||
/// Sync variable values defined in code with .env file
|
||||
fn main() {
|
||||
let source_of_truth = include_str!("src/mainnet.rs");
|
||||
let mut output_path = workspace_root();
|
||||
output_path.push("envs");
|
||||
output_path.push("mainnet.env");
|
||||
|
||||
println!("{}", output_path.display());
|
||||
|
||||
let variables_to_track = [
|
||||
"NETWORK_NAME",
|
||||
"BECH32_PREFIX",
|
||||
"MIXNET_CONTRACT_ADDRESS",
|
||||
"VESTING_CONTRACT_ADDRESS",
|
||||
"GROUP_CONTRACT_ADDRESS",
|
||||
"ECASH_CONTRACT_ADDRESS",
|
||||
"MULTISIG_CONTRACT_ADDRESS",
|
||||
"COCONUT_DKG_CONTRACT_ADDRESS",
|
||||
"REWARDING_VALIDATOR_ADDRESS",
|
||||
"NYM_API",
|
||||
"NYXD_WS",
|
||||
"EXPLORER_API",
|
||||
"NYM_VPN_API",
|
||||
];
|
||||
|
||||
let mut replace_with = HashMap::new();
|
||||
|
||||
for var in variables_to_track {
|
||||
// if script fails, debug with `cargo check -vv``
|
||||
println!("Looking for {}", var);
|
||||
|
||||
// read pattern that looks like:
|
||||
// <var>: &str = "<whatever is between quotes>"
|
||||
let pattern = format!(r#"{}: &str\s*=\s*"([^"]*)""#, regex::escape(var));
|
||||
|
||||
let re = Regex::new(&pattern).unwrap();
|
||||
let value = re
|
||||
.captures(source_of_truth)
|
||||
.and_then(|caps| caps.get(1).map(|match_| match_.as_str().to_string()))
|
||||
.expect("Couldn't find var in source file");
|
||||
println!("Storing {}={}", var, value);
|
||||
replace_with.insert(var, value);
|
||||
}
|
||||
|
||||
let mut contents = fs::read_to_string(&output_path).unwrap();
|
||||
|
||||
for (var, value) in replace_with {
|
||||
// match a pattern that looks like:
|
||||
// <var> = <value>
|
||||
// where `<var>` is a variable name inserted into search pattern
|
||||
let pattern = format!(r#"{}\s*=\s*([^\n]*)"#, regex::escape(var));
|
||||
|
||||
// replace matched pattern with
|
||||
// <var>=<value>
|
||||
let re = Regex::new(&pattern).unwrap();
|
||||
contents = re
|
||||
.replace(&contents, |_: ®ex::Captures| {
|
||||
format!(r#"{}={}"#, var, value)
|
||||
})
|
||||
.to_string();
|
||||
}
|
||||
|
||||
println!("File contents to write:\n{}", contents);
|
||||
if output_path.exists() {
|
||||
fs::write(output_path, contents).unwrap();
|
||||
} else {
|
||||
panic!("{} doesn't exist", output_path.display());
|
||||
}
|
||||
}
|
||||
|
||||
fn workspace_root() -> PathBuf {
|
||||
let metadata = MetadataCommand::new()
|
||||
.exec()
|
||||
.expect("Failed to get cargo metadata");
|
||||
|
||||
metadata
|
||||
.workspace_root
|
||||
.into_std_path_buf()
|
||||
.canonicalize()
|
||||
.expect("Failed to canonicalize path")
|
||||
}
|
||||
+3
-3
@@ -20,9 +20,9 @@ MULTISIG_CONTRACT_ADDRESS=n1txayqfz5g9qww3rlflpg025xd26m9payz96u54x4fe3s2ktz39xq
|
||||
COCONUT_DKG_CONTRACT_ADDRESS=n19604yflqggs9mk2z26mqygq43q2kr3n932egxx630svywd5mpxjsztfpvx
|
||||
|
||||
REWARDING_VALIDATOR_ADDRESS=n10yyd98e2tuwu0f7ypz9dy3hhjw7v772q6287gy
|
||||
STATISTICS_SERVICE_DOMAIN_ADDRESS="https://mainnet-stats.nymte.ch:8090"
|
||||
STATISTICS_SERVICE_DOMAIN_ADDRESS=https://mainnet-stats.nymte.ch:8090
|
||||
NYXD=https://rpc.nymtech.net
|
||||
NYM_API=https://validator.nymtech.net/api/
|
||||
NYXD_WS="wss://rpc.nymtech.net/websocket"
|
||||
NYXD_WS=wss://rpc.nymtech.net/websocket
|
||||
EXPLORER_API=https://explorer.nymtech.net/api/
|
||||
NYM_VPN_API="https://nymvpn.com/api"
|
||||
NYM_VPN_API=https://nymvpn.com/api/
|
||||
|
||||
Reference in New Issue
Block a user